artem
02.08.2013
9017

Уведомление о SIP ошибке (SIP Cause)

Что мы будем делать?! Все очень просто, будем уведомлять на указанный email о всех SIP ошибках которые передает нам оператор.

Как это сделать?! Для начала нам нужно убедиться что версия астериска у нас 1.8+ т.к. именно с этой версии введена переменная ${HASH (SIP_CAUSE)} которая позволяет сохранять код ошибки.

Далее нам нужно включить возможность запоминать sip ошибки в переменную, для этого в sip.conf либо в веб интерфейсе в asterisk sip settings добавить storesipcause=yes

После, в консоли астериска, проверяем командой sip show settings выставленное значение для Store SIP_CAUSE: Должно быть Yes

Теперь нам нужно модифицировать диалплан для исходящих внешних вызовов, для этого из /etc/asterisk/extensions_additional.conf на нужно полностью скопировать контекст [macro-dialout-trunk] в /etc/asterisk/extensions_override_freepbx.conf

Находим строчку

exten => s,n,Dial (${OUT_${DIAL_TRUNK}}/${OUTNUM},300,${DIAL_TRUNK_OPTIONS}))

и добавляем после нее следующее:

exten => s,n,Gotoif  ($["${HASH  (SIP_CAUSE)}" != ""]?mail:noop) ;Добавляем условие, если sip ошибки нет  
(переменная
выводит пустое значение),то выполняется действие noop, если ошибка есть то действие mail
exten => s,n (mail),System (echo "Abonent ${CALLERID (number)} zvonil cherez trank
${OUT_${DIAL_TRUNK}} na nomer ${OUTNUM} i polychil oshibky ${HASH (SIP_CAUSE)}" | mail -s "SIP cause" your@mail.ru)
;Тут мы уведомляем на почту о том, какой абонент куда звонил, через какой транк и указываем SIP ошибку)

А строку exten => s,n,Noop (Dial failed for some reason with DIALSTATUS = ${DIALSTATUS} and HANGUPCAUSE = ${HANGUPCAUSE}) приводим к виду

exten => s,n (noop),Noop (Dial failed for some reason with DIALSTATUS = ${DIALSTATUS} and HANGUPCAUSE = ${HANGUPCAUSE}) ;Делается для того что бы при нашем условии обозначенном выше, знать с какого действия продолжить выполнять диалплан.

Все, нам остается лишь выполнить в консоли dialplan reload и проверить корректность выполнения нашего модифицированного диалплана.

Если вдруг вам пришла ошибка SIP 486 Busy Here то не стоит волноваться, это стандартная ошибка оператора если вызываемый абонент занят (Если не хочется получать лишний раз отчет о данной ошибке, можно добавить в диалплан еще одно условие, которое не будет отсылать письмо если абонент занят)

 
avatar
  Подписаться  
Уведомление о

Остались вопросы?

Я - Першин Артём, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices