Asterisk. Оповещение о записи разговора

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Занимаюсь разработкой MikoPBX - простой в настойке АТС на базе Asterisk 16.

Недавно решили добавить функционал оповещения о записи разговора. Задачу сформулировали следующим образом:

Оповещение должно срабатывать однократно, сразу после соединения клиента с сотрудником компании. Оповещение должны слышать все участники звонка.


Подключение модулей

Было принято решение использовать функционал приложения ChanSpy.

Для начала следует убедиться, что необходимые модули подгружается при начале работы asterisk. Добавим в modules.conf :

load => app_chanspy.so
load => app_originate.so

Реализация dialplan

Путь к файлу записи оповещения опишем в extensions.conf, в секции global:

[globals] 
PBX_REC_ANNONCE=/var/mikopbx/media/custom/alert

Опишем dialplan для оповещений

[annonce-spy]
exten => _.!,1,ExecIf($[ "${EXTEN}" == "h" ]?Hangup()
  same => n,Set(chan=PJSIP/${EXTEN})
  ; Проверка на существование канала.
  same => n,ExecIf($["${CHANNELS(${chan})}x" != "x"]?Chanspy(${chan},uBq))
  same => n,Hangup()

[annonce-play]
exten => annonce,1,Answer()
  ; Воспроизведение медиа файла
  same => n,Playback(${PBX_REC_ANNONCE})
  same => n,Hangup()

Теперь, чтобы запустить оповещения достаточно знать имя канала и выполнить:

Originate(Local/${chan}@annonce-spy,exten,annonce-playback-in,annonce,1,10,a); 
  • опция "a" - указывает на то, что приложение будет выполнено асинхронно

  • "chan" - в переменной необходимо описать имя канала, без описания технологии.

  • Local/${chan}@annonce-spy - запускаем приложение Chanspy

  • "10" - как долго пытаться дозвониться до ${chan}@annonce-spy, в данном примере не имеет значения

  • exten,annonce-playback-in,annonce,1 - направляем в контекст с приложением Playback

Дополним dialplan входящих. В приложении Dial задействуем опцию "U" для перехвата момента соединения абонентов:

[incoming]
exten => _XXX,1,Dial(${PJSIP_DIAL_CONTACTS(${EXTEN})},60,U(dial-answer))

[dial-answer]
exten => _[0-9*#+]!,1,Set(chan=${CUT(CHANNEL,/,2)})
  same => n,Originate(Local/${chan}@annonce-spy,exten,annonce-play,annonce,1,2,a);
  same => n,return

Теперь осталось протестировать входящие. Аналогично можно реализовать оповещение и для исходящих звонков.

Заключение

Относительно просто, без использования AGI, только на основе приложений dialplan возможно реализовать оповещение о записи разговоров.

Как ни странно, в сети довольно мало информации на эту тему.

Надеюсь эта статья будет полезна читателю.

Полезные ссылки

  • wiki.asterisk.org

  • Application_ChanSpy

  • Application_Dial

  • Application_Originate

  • https://github.com/mikopbx/Core

Источник: https://habr.com/ru/post/557174/


Интересные статьи

Интересные статьи

Ранее мы обсудили конденсаторные USB-микрофоны начального и среднего уровня. В голосовании по первой и второй категории уверенную победу одержали представители бренда Aud...
Статья о том, как упорядочить найм1. Информируем о вакансии2. Ведём до найма3. Автоматизируем скучное4. Оформляем и выводим на работу5. Отчитываемся по итогам6. Помогаем с адаптацией...
Всем привет! Не так давно на работе в рамках тестирования нового бизнес-процесса мне понадобилась возможность авторизации под разными пользователями. Переход в соответствующий р...
Много всякого сыпется в мой ящик, в том числе и от Битрикса (справедливости ради стоит отметить, что я когда-то регистрировался на их сайте). Но вот мне надоели эти письма и я решил отписатьс...
В тестовой версии заработал онлайн сервис, который показывает текущую скорость интересуемых нас объектов (автомобилей и других средств передвижения) по записям с видеокамер на перекрестках. ...