2016-05-18 10 views
0

Пожалуйста, помогите с проблемой, с которой я столкнулся недавно.Воспроизведение файла в ожидании вызова на Asterisk

При реализации функции информирования вызывающего абонента «Пользователь разговаривает по первой линии, пожалуйста, подождите или перезвоните позже». С помощью функции "Ожидание вызова" в Asterisk Я использую этот макрос:

extensions_custom.conf

[from-internal-custom] 
exten => _XXX,1,Macro(check-number,${EXTEN}) 
include => macro-check-number 

[macro-check-number] 
exten => s,1,NoOp(Enter in macro-check-number) 
exten => s,n,Set(devst=${DEVICE_STATE(SIP/${ARG1})}) 
exten => s,n,ExecIf($["${devst}" = "INUSE"]?Playback(ml)) 
exten => s,n,NoOp(Exit from macro-check-number) 

мл - имя файла для воспроизведения

и эта функция работает!

Но макрос работает для всего Asterisk, это вызовы очереди, групповые вызовы - и это проблема.

У меня есть идея - группа вызовов и вызовов очереди для присвоения чисел четырехзначными расширениями, например: 2222 - но их не должно быть, это ложное решение проблемы, из-за чего в будущее может быть проблемой!

Возможно, кто-то сталкивался с подобной проблемой?

+0

Это очень зависит от диалплане. Вы можете установить переменную при вводе диалплана, чтобы активировать такие функции, в то время как переменная не установлена ​​при вводе контекста группы или очереди. –

+0

Спасибо, я думал об этом варианте, но, к сожалению, это возможно, так что у меня мало опыта в работе с макросом - я не нашел решения. Я был бы вам очень благодарен! –

ответ

0

Проблема решена в цепи. Поскольку мы обслуживаем сервер телефонии не более чем из 250 членов, было принято решение создать четырехзначное число для групп и очередей.

0

Вы анализируете среду вызова на основе вашего диалплана.

Для примера такого диалплана вы можете увидеть макрос повторения в проекте freepbx. Однако простейшим способом является просто использование другого контекста для ringgroup/queues и прямого diallling.

+0

Я использую стандартную абонентскую группу, 3-значные номера. Спасибо за идею посмотреть, как обрабатывается запись контекста. Как будут результаты - я оставляю здесь комментарий. –

1

Вам не нужно включать раздел во внутреннем настраиваемом контексте , поскольку файл extensions_custom.conf включен в абонентскую группу.

Вы должны изменить схему расширения:

[from-internal-custom] 
exten => _99XXX,1,Macro(check-number,${EXTEN:2}) 

[macro-check-number] 
exten => s,1,NoOp(Enter in macro-check-number) 
exten => s,n,Set(devst=${DEVICE_STATE(SIP/${ARG1})}) 
exten => s,n,ExecIf($["${devst}" = "INUSE"]?Playback(ml)) 
exten => s,n,NoOp(Exit from macro-check-number)