artem
16.03.2016
3438

Определение абонента, который первым повесил трубку

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

Многие знают способ, когда используются логи очередей Asterisk на предмет событий COMPLETECALLER и COMPLETEAGENT. Конечно, это хороший способ, но он подходит только для входящих вызовов, поступающих на очередь, а что делать, если вызов исходящий или вызов приходит напрямую на телефон, минуя логику очередей?! В этом нам поможет использование переменной CHANNEL(hangupsource).

И так, что же делает переменная CHANNEL(hangupsource). Она позволяет отслеживать Астериску, какой канал вызвал завершение вызова. После завершения вызова при использовании данной переменной, она будет содержать имя канала или приложение, которое инициировало данное завершение (SIP BYE).

Для того, чтобы воспользоваться данной переменной, мы должны ее использовать в нашем диалплане, а именно в h extension
Например, ваш контекст для исходящих вызовов:

[outbound]
exten => 8XXXXXXXXXX,1,NoOp(начало исходящего вызова)
same => n,Dial(SIP/operator/${EXTEN},60,tTr)
same => n,NoOp(конец исходящего вызова)
same => n,Hangpup()

Что потребуется сделать теперь? Нужно в этот контекст добавить экстен h, в котором мы и будем смотреть имя канала, инициировавший завершение разговора с помощью переменной CHANNEL(hangupsource). Теперь добавляем следующую строку в наш контекст:

[outbound]
exten => 8XXXXXXXXXX,1,NoOp(начало исходящего вызова)
same => n,Dial(SIP/operator/${EXTEN},60,tTr)
same => n,NoOp(конец исходящего вызова)
same => n,Hangpup()
exten => h,1,NoOp(hangupsource = ${CHANNEL(hangupsource)})

Теперь после завершения вызова вы увидите имя канала, который завершил вызов. Выглядеть это будет примерно так:

Имя канала, который завершил вызов. Asterisk
Если вы хотите, чтобы по завершению всех разговоров у вас была информация об имени канала, завершившего разговор, то переменную CHANNEL(hangupsource) нужно прописывать в каждый контекст, в котором у вас происходит Dial.
Если у вас настроен CDR, то данную информацию можно отражать в нем, например, в поле userfield, для этого нужно использовать приложение CDR

exten => h,1,Set(CDR(userfield)=${CHANNEL(hangupsource)})

 
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