Уведомление о занятости абонента при входящем звонке на занятую линию с включенным Call Waiting в FreePBX 14

В качестве памятки опишу способ доработки функции второй линии (Call Waiting) в FreePBX 14.

 

По-умолчанию механизм работы второй линии не предполагает никаких уведомлений звонящему в случае если вызываемый абонент уже с кем то разговаривает, а просто воспроизводятся стандартные гудки дозвона. Это создает впечатление у звонящего что вызываемый абонент не хочет брать трубку..

 

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

 

Как оказалось в FreePBX есть определенная обработка (macro-dialout-one-predial-hook) описанная в (/etc/asterisk/extensions.conf) и которая срабатывает до момента непосредственного звонка абоненту. В этой обработке можно проверить статус выдываемого абонента и в случае если статус линии занят, то проигрывать звонящему сообщение и продолжить вызов.

 

В файл конфигурации (/etc/asterisk/extensions_custom.conf) в секцию [from-internal-custom] добавляем:

ПОЯСНЕНИЕ. Возможные варианты состояния линии (DEVICE_STATE) — UNKNOWN, NOT_INUSE, INUSE, BUSY, INVALID, UNAVAILABLE, RINGING, RINGINUSE, ONHOLD (более подробно можно почитать в оф. документации)

ИНФОРМАЦИЯ. По-умолчанию FreePBX смотрит каталог со звукам по пути — /var/lib/asterisk/sounds/ru

Принцип работы простой, при вызове получается статус линии и в случае если она занята, то вызывающему абоненту сперва будет проиграно заданное сообщение а после продолжится вызов абонента с мелодией ожидания вместо гудков.

 

Скачать “ЗВУК. Абонент разговаривает или временно не доступен” wait_for_answer.wav – Загружено 250 раз – 92 KB

 

БесполезноСлабоватоПриемлемоОтличноПревосходно (Еще нет оценок)
Загрузка...

Всего комментариев: 2 Комментировать

  1. Валера /

    Заметил что данная фишка не работает если на номере активна Follow Me. Методом тыка определил что если выставить стратегию ringallv2, то все успешно начинает работать.

  2. Константин /

    Доброго времени!
    Что то ни как не пойму, что не так делаю…
    В extensions_custom.conf вписываю строки
    [from-internal-custom]
    include => macro-dialout-one-predial-hook
    [macro-dialout-one-predial-hook]
    exten => s,1,Noop(HINT STATUS — ${EXTENSION_STATE(${DEXTEN})})
    exten => s,n,ExecIf($[«${EXTENSION_STATE(${DEXTEN})}» = «INUSE»]?Playback(/var/lib/asterisk/sounds/ru/wait_for_answer))
    exten => s,n,ExecIf($[«${EXTENSION_STATE(${DEXTEN})}» = «INUSE»]?Set(D_OPTIONS=Ttm))

    Но не работает. Follow Me на номере отключен. В консоле тишина. Если INUSE, интереса ради, меняю на UNKNOWN, то звуковое сообщение включается, но звонок не идет, т.е. трубка лежит, звонок не доходит
    В консоле появляется
    46337 [2021-06-21 16:08:16] VERBOSE[3138][C-0000089c] pbx.c: Executing [s@macro-dialout-one-predial-hook:1] NoOp(«SIP/************», «HINT STATUS — UNKNOWN») in new stack

Оставить ответ

19 − 18 =

© IT-блог Жаконды All Rights Reserved.
Яндекс.Метрика