Перехват входящего вызова в Asterisk

Перехват вызова - очень полезный функционал. Для перехвата входящего вызова в Asterisk есть 3 способа. Первый - использовать функционал features; второй - через переменные канала вызова; третий - специальная команда PickUp().

Если разобрать перехват вызова в общих чертах, то получится следующее:

  • Номерам настраивается группа вызова (callgroup)
  • Номерам настраивается группа для перехвата (pickupgroup)
  • Настраивается комбинация клавиш для перехвата вызова

Настройка через использование конфигурационных файлов

В sip.conf для номеров настраивается численное представление callgroup и pickupgroup или именованное представление namedcallgroup и namedpickupgroup:

[number1]
callgroup=1-3
namedcallgroup=sales
pickupgroup=1-3,9
namedpickupgroup=sales
... ... ...
[numberX]
callgroup=9,1-3
namedcallgroup=manager
pickupgroup=1-3,9
namedpickupgroup=manager,sales

callgroup указывает к каким группам будет принадлежать вызов, а pickupgroup указывает из каких групп можно перехватывать вызов.

Настройка через использование переменных канала

Через переменные канала производится настройка в extensions.conf. При обработке вызова указывается к какой именованной (namedcallgroup и namedpickupgroup) или численной (callgroup и pickupgroup) группе принадлежит данный вызов:

same => n,Set(CHANNEL(callgroup)=1,5-7)
same => n,Set(CHANNEL(namedcallgroup)=engineering,sales)

same => n,Set(CHANNEL(pickupgroup)=1,6-8)
same => n,Set(CHANNEL(namedpickupgroup)=engineering,sales)

В features.conf настраивается комбинация клавиш для перехвата вызова:

[general]
...
pickupexten = *8
...

Теперь при нажатии на *8 будет перехвачен вызов на один из номеров в разрешенной группе для перехвата.

Перехват вызова с помощью команды PickUp

В файле extensions.conf прописывается экстен и команда для перехвата вызова:

same => n,PickUp()

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

same => n,PickUp(${EXTEN}@context)

Если при вызове команды указать номер и контекст, то будет осуществлена попытка перехвата конкретного номера в указанном контексте. Если не указать контекст, то будет использоваться текущий.

С помощью команды PickUp можно перехватывать вызовы на номера, которые не принадлежат ни к одной из callgroup.

Вся информация собрана из полезных ресурсов: ресурс #1, ресурс #2, ресурс #3, ресурс #4.

comments powered by Disqus