Перейти до основного вмісту

Налаштування перехвату викликів в Asterisk

В Asterisk реалізований механізм перехвату усіх викликів.
Для цього потрібно до мінімальних налаштувань додати файл конфігурації features.conf і в ньому вказати:
pickupexten = *8
pickupsound=beep
pickupfailsound = beeperr

І у файлі sip.conf
pickupgroup
callgroup

або
namedpickupgroup
namedcallgroup

Але такий режим у великому офісі не дуже гарний.

Краще налаштувати перехват конкретного виклику (directed pickup).
Різні варіанти налаштування файлу extension.sconf вказані тут

This is the basic dialplan:
CODE: SELECT ALL
[internal-calls]
exten => 105,1,Dial(SIP/105,10,tT)
exten => 106,1,Dial(SIP/106,10,tT)
exten => 197,1,Dial(SIP/197,10,tT)

[from-trunk]
exten => 100288506,1,Dial(SIP/197,30,tT)


The "internal-calls" context is used for all inter-extension calls, "from-trunk" context is used for all calls to and from the VoIP provider. All the extensions have defined the same callgroup and pickupgroup parameters in sip.conf.

Group call pickup is defined in features.conf as ** and works perfectly for internal (between extension) and incomming (from VoIP provider) calls.

Directed call pickup feature is defined in extensions.conf like:
CODE: SELECT ALL
[custom_features]
exten => _**.,1,Pickup(${EXTEN:2}@internal-calls)
exten => _**.,n,Pickup(${EXTEN:2}@from-trunk)


The idea is when I see a ringing extension, I can use Directed call pickup feature by dialing **exten_num. I do not want to use Group call pickup.

Directed call pickup works perfectly for internal calls (between extensions), but for incomming calls (from VoIP provider) I get a following error (I dial **197 from ext. 106):
CODE: SELECT ALL
    -- Executing [**197@internal-calls:1] Pickup("SIP/106-000013dd", "197@internal-calls") in new stack
[Feb 16 18:31:35] NOTICE[16177]: app_directed_pickup.c:297 pickup_exec: No target channel found for 197.
    -- Executing [**197@internal-calls:2] Pickup("SIP/106-000013dd", "197@from-trunk") in new stack
[Feb 16 18:31:35] NOTICE[16177]: app_directed_pickup.c:297 pickup_exec: No target channel found for 197.
    -- Auto fallthrough, channel 'SIP/106-000013dd' status is 'UNKNOWN'


I really do not uderstand why is this happening.

I have browsed the internet and that was one of the solutions that should be working as expected.


Alternative 1
One more solutions would be re-defining the Directed pickup extension to:
CODE: SELECT ALL
[custom_features]
exten => _**.,1,Set(GLOBAL(PICKUPMARK)=${EXTEN:2})
exten => _**.,n,Pickup(${EXTEN:2}@PICKUPMARK)


This solution works for internal and incomming calls, but behaves like Group pickup. It does not matter which extension you put after **, it picks up the ringing extension either way. For instance, I can pick up a ringing extension 197 by dialing **103. This is not a good solution.



Alternative 2

One more option to use PICKUPMARK in a different way:
CODE: SELECT ALL
[internal-calls]
exten => 105,1,Dial(SIP/105,10,tT)
exten => 106,1,Dial(SIP/106,10,tT)
exten => 197,1,Dial(SIP/197,10,tT)

[from-trunk]
exten => 100288506,1,Set(__PICKUPMARK=197)
exten => 100288506,n,Dial(SIP/197,30,tT)

[custom_features]
exten => _**.,1,Pickup(${EXTEN:2}@PICKUPMARK)


With this code, Direct call pickup also works. But it also means defining PICKUPMARK for every DID, which is not very cool for me. I would prefer a different solution.


Alternative 3

One more thing is that the Direct call pickup is working fine if I have this dialplan:
CODE: SELECT ALL
[internal-calls]
exten => 105,1,Dial(SIP/105,30,tT)
exten => 106,1,Dial(SIP/106,30,tT)
exten => 197,1,Dial(SIP/197,30,tT)

[from-trunk]
exten => 100288506,1,Goto(internal-calls,197,1)

[custom_features]
exten => _**.,1,Pickup(${EXTEN:2}@internal-calls)


Since I want 2 different behaviors for incomming calls for a DID (from PSTN) and for and extension (internal call), this solutions is also not an option.

Найкращий працюючий варіант, це вказати комбінацію кнопок для кожного context, на кшталт
exten => _**.,1,Pickup(${EXTEN:2}@internal-calls)
same => n,Pickup(${EXTEN:2}@from-trunk)


Команда pickup описана тут

Коментарі

Популярні дописи з цього блогу

Подключение Cisco 7911/7912 по SIP к Asterisk

Аппарат Cisco IP Phone 7911 по-умолчанию настроен на использование протокола SCCP. Можно в Asterisk указать использование модулей SCCP, но для единообразия удобнее использовать SIP. Для использования протокола SIP в аппарате Cisco 7911 нужно обновить программное обеспечение.  Код обновления для загрузки в аппарат нужно скачать с сервера Cisco: http://tools.cisco.com/support/downloads/pub/Redirect.x?mdfid=278875240 Самое последнее обновление (на данный момент версия 9.3) может не работать c Asterisk, с  версии 9.X Cisco переходит на использование только TCP для SIP соединений. Поэтому для использования UDP удобнее скачать обновление версии 8.5.2 или 8.5.4. Может понадобится  вначале   установить обновление 8.5.2, а затем 8.5.4. Например, для обновления с SCCP11.8-2-2SR-4S надо вначале установить 8.5.2 Обновление будет производится с сервера  TFTP, поэтому д ля начала нужно настроить сервер DHCP, TFTP. Причем в DHCP нужно настроить опцию 150, которая используется для указания аппа

Панель инструментов Remmina в полноэкранном режиме Ubuntu 12.04

Пакет Remmina 0.9.99 (протокол RDP) в системе Ubuntu 12.04 используется как клиент для доступа к терминальному серверу. Обнаружено странное поведение панели инструментов в полноэкранном режиме на терминальном сервере- панель инструментов исчезает и невозможно перейти в другое окно или закрыть сеанс. Для сворачивания окна можно использовать комбинацию клавиш CTRL+F9. Комбинации клавиш задаются в настройках Remmina, а CTRL нужно, чтобы комбинацию не перехватил терминальный сервер. В настройках Remmina есть параметр "Спрятать панель инструментов в полноэкранном режиме". Но иногда, даже если не указан этот параметр, меню не отображается. Можно, не закрывая терминальную сессию, изменить этот параметр на противоположный и после возврата в сессию, меню начнет появляться. В следующий раз перед открытием новых сессий в Remmina нужно правильно указать значение этого параметра. Размер иконок в панели инструментов можно изменить через основное меню Remmina

Изменение размера бумаги LibreOffice(OpenOffice)

Если при установке Ubuntu указать локаль «USA», то размер бумаги по-умолчанию установится «Letter». Если потом через «Система- Администрирование- Локализации» изменить локаль на «Украинский» («Русский»), изменится язык системы, формат даты, но размер бумаги по-умолчанию и единица измерения останутся прежними.  Совет нашел в http://www.nixp.ru/recipes/%D0%9A%D0%B0%D0%BA-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C-%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80-%D0%B1%D1%83%D0%BC%D0%B0%D0%B3%D0%B8-%D0%B2-OpenOffice-org-%D0%BF%D0%BE-%D1%83%D0%BC%D0%BE%D0%BB%D1%87%D0%B0%D0%BD%D0%B8%D1%8E-%28libpaper%29.html Нужно в терминале запустить sudo dpkg-reconfigure libpaper1 В открывшемся списке выбрать формат А4. Можно напрямую в файле конфигурации (/etc/papersize) указать размер А4. Проверить можно в LibreOffice(OpenOffice) через меню «Формат-Страница». Еще в LibreOffice(OpenOffice) нужно изменить единицу измерения через «Сервис- Параметры- LibreOffice Writer- Общие»