v3.Контекст получения истории звонков АТС для 1C
Применимо к Asterisk версий 1.6; 1.8; 10; 11
Для этого, на сервер Asterisk необходимо добавить специализированный контекст, с помощью которого будет выполняться запрос в таблицу CDR, получение данных и передача их в AMI.
Для этого необходимо создать файл nano /etc/asterisk/extensions_Simplit.conf
и скопировать в него содержимое, которое указано ниже.
Для включения этого файла в работу необходимо добавить строчку #include extensions_Simplit.conf
в самое начало файла /etc/asterisk/extentions_custom.conf
и указать правильные параметры подключения.
ВАЖНО
Вместо ВАШ_ЛОГИН (*asteriskuserDB*) - вставьте имя пользователя БД.
Вместо ВАШ_ПАРОЛЬ (*asteriskpasswordDB*) - пароль пользователя БД.
Вместо ИМЯ_ВАШЕЙ_БД (*NameasteriskDB*) - вставьте имя БД (по умолчанию, asteriskcdrdb)
[GetCDRRows] ;Получение набора записей из CDR ; Блок выполняет поднятие трубки и ее удержание в течении 5 секунд. exten => *11111,1,NoCDR() exten => *11111,n,Answer(5000) exten => *11111,n,Hangup() ;Блок выполняет запрос и получение результата из БД, а также трансляцию в АМI полученных данных. exten => *22222,1,NoCDR() ; Подключение к БД !!!ВАЖНО!!! данные логин, пароль и название БД необходимо заменить на свои. Как правило, имя пользователя asteriskuser, а БД asteriskcdrdb 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]