Настройка парковки и перехвата звонков (Call Parking & Pickup) в Asterisk
- При переводе звонка на парковочный слот вызов сбрасывается или не объявляется номер слота (Silence).
- Комбинация перехвата вызова (
*8или**ext) выдает сигнал занятости (Busy/Congestion). - Вызов, возвращающийся по таймауту парковки, переходит не на исходного оператора, а сбрасывается в Hangup.
- Отсутствие световой BLF-индикации состояния парковочных слотов на IP-телефонах.
1. Архитектура парковки и перехвата в модуле res_parking
Asterisk 13+ управляет парковкой через модуль res_parking.conf. Парковка помещает абонента в виртуальный слот ожидания (например, 701–720), освобождая телефон сотрудника, после чего любой коллега может забрать звонок, набрав номер слота.
2. Конфигурация парковочного лота в /etc/asterisk/res_parking.conf
[general]
[default]
parkext => 700
parkpos => 701-720
context => parkedcalls
parkext_exclusive = no
parkingtime => 45
comebacktoorigin = yes
comebackcontext = parkedcallstimeout
comebackdialtime = 20
parkinghints = yes3. Конфигурация перехвата (Call Pickup) в /etc/asterisk/features.conf
[general]
pickupexten = *8
[featuremap]
blindxfer => ##
atxfer => *2
automon => *1
parkcall => *34. Настройка групп перехвата и контекстов в pjsip.conf
[101]
type=endpoint
context=from-internal
named_call_group=sales
named_pickup_group=sales
; ... остальные параметры ...
[102]
type=endpoint
context=from-internal
named_call_group=sales
named_pickup_group=sales5. Логика диалплана для прямого перехвата и возврата вызовов
В /etc/asterisk/extensions.conf добавьте:
[from-internal]
; Подключение контекста припаркованных звонков и BLF хинтов
include => parkedcalls
; Направленный перехват конкретного номера (**101)
exten => _**XXX,1,NoOp(=== Directed Pickup for Ext: ${EXTEN:2} ===)
same => n,Pickup(${EXTEN:2}@from-internal)
same => n,Hangup()
; Обработка возврата звонка по таймауту парковки
[parkedcallstimeout]
exten => _[0-9a-zA-Z].,1,NoOp(=== Call returned from Parking: ${EXTEN} ===)
same => n,Dial(PJSIP/${PARKER},20,tT)
same => n,GotoIf($["${DIALSTATUS}" != "ANSWER"]?operator)
same => n,Hangup()
same => n(operator),Dial(PJSIP/100,20,tT)
same => n,Hangup() Частые вопросы (FAQ)
Как настроить световую индикацию (BLF) для кнопки парковочного слота на телефоне?
Включите parkinghints = yes в res_parking.conf. На телефоне настройте Memory Key типа 'BLF', установив Value равным номеру слота (например, 701) и Extension равным 701.
В чем разница между call_group и named_call_group?
Устаревшие callgroup/pickupgroup использовали битовую маску (числа от 0 до 63). Современные named_call_group/named_pickup_group позволяют задавать понятные текстовые имена групп (sales, support, management).
Что означает переменная ${PARKER} при возврате вызова?
Переменная ${PARKER} автоматически инициализируется Asterisk и содержит имя канала/номер экстеншена сотрудника, который первоначально припарковал данный вызов.
Как перехватить звонок, если сотрудники находятся в разных группах?
Используйте направленный перехват вызова (Directed Pickup) через функцию Pickup(EXTEN@CONTEXT), указав точный внутренний номер вызываемого абонента.