..
Всем привет. В этой публикации будем записывать разговоры пользователей т.е. абонентов.
Как делать минимальные конфигурации для работы Asterisk PBX см. в моих предыдущих публикациях в подборке Asterisk PBX. Вообще этот софтсвитч имеет такие предустановленную конфигурацию, которая подходит для большинства задач и в большинстве случаев (файлы конфигурации находятся в системной директории "/etc/asterisk"). Поэтому для того чтобы звонить в самой простой конфигурации без наворотов конфигурировать нужно совсем немного, буквально несколько строчек в двух файлах конфигурации ("extensions.conf" и "sip.conf"). Этим и хорош Asterisk PBX, необязательно трогать все конфиги и выставлять все параметры явно.
Asterisk PBX это современная безплатная программная телефонная станция с открытым исходным кодом малой и средней ёмкости, ориентированная на использование в офисе и в абонентском доступе на периферии. "Asterisk - будущее телефонии". Asterisk PBX устанавливается как служба в Linux в т.ч. Linux Ubuntu и при наличии соответствующего оборудования позволяет организовывать связь как внутри учреждения так и входящую-исходящую связь с "внешним миром", как посредством традиционных двухпроводных абонентских линий и цифровых ISDN линий так и через IP сеть т.е. через интернет.
Большинство настроек подходят под все версии Asterisk PBX. Например, публикуемые здесь настройки и конфигурации подходят как к Asterisk PBX версий 1.6/1.8 так и для всех версий вплоть до 18й, которую я использую, скорее всего подойдёт и для 20й.
Для простоты будем настраивать астер для ведения записи разговоров для внутренних вызовов. Для исходящих вызовов или каких-либо других делается всё аналогично.
Для внутренней связи в нашем случае используются IP телефоны, аппаратные или софтфоны, которые подключаются к Asterisk PBX по протоколу SIP (в локальной сети). В принципе это будет актуально для 99% случаев. Остальные варианты подключения телефонных аппаратов (ТА) используются реже, например, если есть соответствующие установленные платы для подключения традиционных аналоговых телефонных аппаратов через станционные порты FXS. Кстати, с фирменными платами от Digium к Asterisk PBX можно подключать аналоговые ТА не только внутри офиса, но и в абонентском доступе по меди на расстоянии до 6км.
На изображении выше представлена такая плата, которая позволяет подключать к Asterisk PBX традиционные аналоговые телефонные аппараты, до 24шт.
..
МАКРОС "ON_ANSWER"
..
В диалплане Asterisk PBX (астера) можно делать макросы. В традиционном понимании с точки зрения программирования это не макросы а функции, которые вызываются с подставляемыми аргументами. Наверно эти конструкции так называются чтобы не путать их с функциями диалплана, которые встроены в астер.
Для того чтобы записывать только отвеченные вызовы я сделал макрос, который будет выполняться по ответу на вызов в приложении "Dial", см. далее. В этом макросе и происходит старт записи разговора, а прекращается запись автоматически при разъединении.
[macro-on-answer]
exten => s,1,Set(date=${STRFTIME(,,%Y)}-${STRFTIME(,,%m)}-${STRFTIME(,,%d)})
exten => s,n,Set(time=${STRFTIME(,,%H)}:${STRFTIME(,,%M)}:${STRFTIME(,,%S)})
exten => s,n,Set(lpath=/var/log/asterisk/${date})
exten => s,n,Set(rpath=/var/spool/asterisk/monitor/${date})
exten => s,n,System(mkdir -p ${lpath})
exten => s,n,System(mkdir -p ${rpath})
exten => s,n,System(echo "answered-${time}-from-${ARG1}-to-${ARG2}" >> ${lpath}/${date}.txt)
exten => s,n,MixMonitor(${rpath}/rec-${date}-${time}-from-${ARG1}-to-${ARG2}.wav,b)
exten => s,n,MacroExit()
Что именно делает этот макрос. Вначале создаёт две строковые переменные "date" и "time", первая с текущей датой, например, "2024-07-08", вторая с текущем временем, например, "13:55:34". Эти дата и время будут подставляться в имена звуковых файлов с записями разговоров. Да, в никсах в именах файлов может присутствовать двоеточие, в отличие от Windows.
Далее создаются директории для логов и для записей разговоров. Для звуковых файлов в папке "/var/spool/asterisk/monitor" создаётся папка с текущей датой (если её ещё нет), например, "2024-07-08", туда и будут писаться звуковые файлы с записями разговоров. Удобно же отсортировать всё по дате. Аналогично в "/var/log/asterisk" создаётся папка с текущей датой и делается лог что был отвеченный вызов.
В конце макроса приложение "MixMonitor" запускает запись в указанный в нём звуковой файл.
На скриншоте выше уже есть 3 звуковых файлы в формате "wav" с записями разговоров. Они были созданы через этот макрос. В именах этих файлов уже присутствует дата и время ответа на вызов а также указано от кого и к кому он был совершён. Это очень удобно, даже если файл был куда то скопирован, то вся минимальная информация уже имеется, а продолжительность вызова можно узнать по продолжительности звукового файла.
..
КОНФИГУРАЦИЯ ДИАЛПЛАНА
..
Итак, приведу конфигурацию диалплана в контексте "loc" для осуществления внутренней связи, т.е. для звонков внутри Asterisk PBX.
[loc]
exten => _1XX,1,Dial(SIP/${EXTEN},60,tTeM(on-asnwer,${CALLERID(num)},${EXTEN}))
exten =>_1XX,n,PlayTones(busy)
exten => _1XX,n,Wait(60)
exten => _1XX,n,Hangup()
exten => h,1,Answer()
exten => h,n,PlayTones(busy)
exten => h,n,Wait(60)
exten => h,n,Hangup()
В приложение "Dial", которое используется для выполнения вызовов, добавлена опция на запуск макроса "on-asnwer" по ответу вызываемой стороны. Макрос был приведён в предыдущем разделе и запускается только по ответу. Как уже я озвучил, в нём запускается запись разговора и плюсом ко всему делается лог о том что было установлено соединение.
Перезагружаем конфигурацию Asterisk PBX (системной командой "sudo asterisk -rx "reload"") и делаем тестовый вызов со внутреннего номера "101" на "102". В консоли астера лог следующий.
Вначале приложение "Dial" осуществляет вызов, на скриншоте подчеркнул зелёным. По событию ответа, это событие отображается в консоли и я его подчеркнул ораньжевым цветом, запускается мой макрос "on-answer". В этом макросе запускается запись разговоров, лог этого события подчеркнут красным.
Для того чтобы была информация о разъединении на слух после приложения "Dial" я добавил воспроизведения тональной индикации "занято" в течении 60 секунд после разъединения. Такая полезная опция делает использование IP телефонов так как мы привыкли к традиционным аналоговым, т.к. после разъединения IP телефоны и софтфоны не дают таких сигналов а показывают на дисплее что вызов завершён.
Все записи разговоров можно просмотреть в стоковом проводнике и прослушать обычным медиа проигрывателем.
Чтобы не возиться с правами доступа я скопировал звуковой файл в домашнюю папку своего пользователя и воспроизвёл его в проигрывателе VLC.
..
Также есть возможность ведения полных записей вызовов, например, начиная от того как клиент сделал входящий вызов в интерактивное голосовое меню, с какими его операторами или отделами компании соединяли, на кого переключали, но настройки будут другие. Вообще, записи разговоров это мощная фишка астериска, которая его отличает от остальных офисных АТС и иных АТС малой ёмкости в лучшую сторону.
Эту публикацию я назвал "запись разговоров" а не запись вызовов. Это может на первый взгляд показаться немного неграмотно, но. В данной публикации изложено именно как ведётся запись аудио из каналов когда уже было установлено соединение между абонентами, и соответственно записываются именно разговоры, без сигналов индикации, музыки и прочего. Поэтому именно такое название а не какое-либо другое.