Перехват вызова - очень полезный функционал. Для перехвата входящего вызова в 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
указывает из каких групп можно перехватывать вызов.
Перехват входящего вызова в Asterisk
Настройка через использование переменных канала
Через переменные канала производится настройка в 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.