v3.Файл для подключения контекстов прослушивания записей и получения истории звонков АТС для 1C
Использование получения истории звонков АТС через AMI-соединение должно использоваться только в случае, если ваша IP-АТС не поддерживает MySQL-подключение (MyPBX Std, SOHO, Zycoo, etc)
Получение истории через AMI может снизить производительность сеанса 1С.
Для удобства клиентов, все служебные контексты для корректной работы панели телефонии мы собрали в один конфигурационный файл, который необходимо создать в каталоге /etc/asterisk/
на вашем сервере телефонии.
Для включения его в работу необходимо добавить строчку #include extensions_Simplit.conf
в самое начало файла /etc/asterisk/extentions_custom.conf
и указать правильные параметры подключения (имя пользователя БД, пароль пользователя БД и имя самой БД).
Примечание: на некоторых дистрибутивах (FreePBX Distro) необходимо выполнить команду из консоли после вышеперечисленных операций:
chown asterisk:asterisk /etc/asterisk/extensions_Simplit.conf
Содержимое файла extensions_Simplit.conf
[GetCDRRows] ;Получение набора записей из CDR ;Блок выполняет поднятие трубки и ее удержание в течении 5 секунд. exten => *11111,1,NoCDR() exten => *11111,n,Answer(5000) exten => *11111,n,Hangup() ;Блок выполняет запрос и получение результата из БД, а также трансляцию в АМI полученных данных. exten => *22222,1,NoCDR() ;Подключение к БД !!!ВАЖНО!!! данные логин, пароль и название БД необходимо заменить на свои. exten => *22222,n,MYSQL(Connect connid localhost *asteriskuserDB* *asteriskpasswordDB* *NameasteriskDB*) ;Передача запроса exten => *22222,n,MYSQL(Query resultid ${connid} SELECT Concat_WS('|',Cast(`calldate` As char),Cast(src as char),Cast(dst as char),Cast(duration as char),Cast(disposition as char),cast(uniqueid as char)) as Result_String FROM `cdr` WHERE ${condition}) ;Получение первой строки результата exten => *22222,n(fetchrow),MYSQL(Fetch foundrow ${resultid} Result_String) ;Запуск цикла по разбору оставшегося набора данных exten => *22222,n,While($["${foundRow}" = "1"]) ;Трансляция полученных данных в АМI exten => *22222,n,UserEvent(ListCDRRows,CDRRow: ${Result_String},ActionID: ${actionID}) exten => *22222,n,MYSQL(Fetch foundrow ${resultid} Result_String) ;Конец цикла exten => *22222,n,EndWhile ;continue loop if row found ;Финальное сообщение о окончании разбора данных exten => *22222,n(done),UserEvent(ListCDRRowsComplete,ListItems: ${resultid},ActionID: ${actionID}) ;Отключение от БД exten => *22222,n,MYSQL(Clear ${resultid}) exten => *22222,n,MYSQL(Disconnect ${connid}) exten => *22222,n,Hangup() ;end of [GetCDRRows] [1c-playfile]; Контекст для прослушивания записей. ;Позволяет принять набор ссылок на записи MSG{i} и количество записей {COUNT} в наборе. exten => s,1,NoCDR() exten => s,n,Answer exten => s,n,Wait(1) exten => s,n,Set(i=1) exten => s,n(repeat),ControlPlayback(${MSG${i}},5000,#,*,8,0) exten => s,n,Set(i=$[${i} + 1]) exten => s,n,Gotoif($["${i}" < "${COUNT}"]?repeat) exten => s,n,Playback(vm-goodbye) exten => s,n,Hangup ;end of [1c-playfile]