Внимание!
Эта wiki об устаревших версиях
Документация к актуальной версии интеграции 1С и телефонии доступна по ссылке

Инструменты пользователя

Инструменты сайта


astpanel:ats:asterisk:callhistory_v6

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
astpanel:ats:asterisk:callhistory_v6 [2013/11/26 06:07]
apor создано
astpanel:ats:asterisk:callhistory_v6 [2018/06/08 09:17] (текущий)
apor [Формат “Lines”]
Строка 1: Строка 1:
 ====== 10000555. Настройка Asterisk для получения истории звонков в панели 1С ====== ====== 10000555. Настройка Asterisk для получения истории звонков в панели 1С ======
 +[[astpanel:​ats:​asterisk_v6|Обратно к основной инструкции...]]
 +
 +<note important>​**В этой статье описан алгоритм работы**. Пример реализации описан в [[http://​wiki.miko.ru/​astpanel:​dialplan_miko_ajam | статье]] </​note> ​
 +===== "​Динамическое"​ обновление истории звонков =====
 +
 +Оповещение о добавлении CDR записи через AJAM интерфейс.
 +Для “**динамического**” обновления истории звонков в 1С следует произвести настройки:​
 +<​code>;/​etc/​asterisk/​cdr_manager.conf
 +;
 +; Asterisk Call Management CDR
 +;
 +[general]
 +enabled = yes
 +
 +[mappings]
 +; В AMI event CDR будем возвращать дополнительную информацию ​
 +; Имя файла записи разговора ${CDR(recordingfile)} - переменная dialplan, нужно ее определить
 +recordingfile => recordingfile
 +; Идентификатор звонка
 +; Имя файла записи разговора ${CDR(linkedid)} - переменная dialplan, определена в Asterisk 1.8+ 
 +linkedid => linkedid ​
 +</​code>​
 +===== Получение истории звонков по запросу =====
 +В плане набора должен быть описан контекст **miko_ajam**.\\
 +В контексте miko_ajam определяется extension с номером **10000555**.\\
 +<​code>​[miko_ajam]
 +exten => 10000555,​1,​NoOP(Settings Asterisk)</​code>​
 +
 +При необходимости,​ **“Панель телефонии Asterisk”** выполняет AMI команду [[:​kb:​asterisk:​ami:​originate|originate]].\\
 +**Параметры originate**\\
 +  * channel ​    ​- Local/​10000555@miko_ajam
 +  * Application -       NoCDR
 +**Переменные канала** \\
 +  * v1 - канал пользователя в формате "​Технология/​Номер",​ который инициировал originate
 +  * v2 - начало периода в формате '​yyyy-mm-dd'​
 +  * v3 - конец периода в формате '​yyyy-mm-dd'​
 +  * v4 - номера телефонов в формате "​НОМЕР1-НОМЕР2-НОМЕР3..."​ (разделитель "​тире"​)
 +
 +История звонков отправляется средствами **UserEvent**:​
 +<​code>​exten => 10000555,​n,​UserEvent(FromCDR,​chan1c:​ ${chan},​Date:​ ${date1},​Lines:​ ${Lines})</​code>​
 +  * **${chan}** - канал в формате "​Технология/​Номер",​ запросившего историю (он же ${v1})
 +  * **${date1}** - начало периода
 +  * **${Lines}** - история звонков.
 +==== Формат “Lines” ==== 
 +
 +Переменная **Lines** - тип “строка” содержит строки таблицы истории звонков. \\
 +  * Cтроки разлелены комбинацией “**.....**”.\\
 +  * Cтолбцы истории разделены комбинацией “**@.@**”.\\
 +
 +**Обязательный набор и порядок полей в строке:​**
 +<​code>​calldate,​src,​dst,​channel,​dstchannel,​billsec,​disposition,​uniqueid</​code> ​
 +
 +**Дополнительный набор полей**
 +<​code>​file_name,​peer,​lastapp,​linkedid</​code>​
 +
 +Эти поля следует добавить при использовании таблицы **CEL**. ​
 +При использовании соединения двух таблиц,​ CDR и CEL, позможно добиться более широкой аналитики - "​**Участники звонка**"​.\\ ​
 +В этом случае,​ на одну запись таблицы CDR, может быть несколько записей таблицы CEL c значением **`eventtype`='​BRIDGE_START'​**.\\
 +Записи имеют один и тот же **linkedid** - уникальный идентификатор.\\
 +Если CEL не используется,​ то эти поля передавать не следует.\\
 +
 +**Пример Lines:**
 +<​code>​calldate@.@src@.@dst@.@channel@.@dstchannel@.@billsec@.@disposition@.@uniqueid.....calldate@.@src@.@dst@.@channel@.@dstchannel@.@billsec@.@disposition,​@.@uniqueid</​code>​
 +
 +<note important>​На параметр Lines накладывается ограничение в 1024 символов. Если величина пакета превышает лимит, то следует выслать пакеты истории в нескольких UserEvent.</​note>​
 +
 +<note important>​Lines не должен содержать символов ​ перевода строки и возврат каретки (CRLF). Лучше если пробельных символов не будет.</​note>​
 + 
 +Когда вся история отправлена следует оповестить об этом
 +<​code>​exten => 10000555,​n,​UserEvent(Refresh1CHistory,​chan1c:​ ${chan},​Date:​ ${date1})</​code>​
 +  * **${chan}** ​ - номер канала,​ запросившего историю (он же ${v1})
 +  * **${date1}** - начало периода
 +===== Проверка =====
 +
 +**Для проверки можно использовать следующий скрипт:​**
 +  * Звонок с SIP/104 (Телефон должен быть подключен) на 10000555
 +<​code>#​!/​bin/​sh
 +dir_script='/​tmp/';​
 +# каталог из asterisk.conf
 +astspooldir='/​var/​spool/​asterisk';​
 +#
 +call_text="​Channel:​ SIP/104
 +Context: miko_ajam
 +Extension: 10000555
 +Callerid: Alexey<​104>​
 +Setvar: v1=SIP/104
 +Setvar: v2=2013-11-01
 +Setvar: v3=2013-12-01
 +Setvar: v4=104
 +";
 +
 +echo "​$call_text"​ > /​tmp/​file.call;​
 +mv '/​tmp/​file.call'​ "​$astspooldir/​outgoing/";​
 +
 +asterisk -rvvv;
 +</​code>​
 +
 +**Вывод в консоли Asterisk**
 +
 +<​code> ​   -- AGI Script Executing Application:​ (UserEvent) Options: (FromCDR,​Channel:​SIP/​104,​Date:​2013-11-01,​Lines:​2013-11-25 16:​05:​20@.@104@.@106@.@SIP/​104-0000000e@.@SIP/​106-0000000f@.@20.4669@.@ANSWERED@.@1385413520.14@.@exten-106-104-20131125-160520-1385413520.14.wav@.@SIP/​106-0000000f@.@Dial@.@1385413520.14@.@.....)
 +    -- AGI Script Executing Application:​ (UserEvent) Options: (Refresh1CHistory,​Channel:​SIP/​104,​Date:​2013-11-01)
 +</​code>​
 +
 +**Вывод в AMI**
 +
 +<​code>​Event:​ UserEvent
 +Privilege: user,all
 +UserEvent: FromCDR
 +Uniqueid: 1412529473.6
 +Channel:
 +Date:​2014-10-05
 +Lines:​2014-10-05 08:​24:​16@.@1001@.@1000@.@SIP/​1001-00000000@.@SIP/​1000-00000001@.@1.05052@.@ANSWERED@.@1412522656.0@.@@.@SIP/​1000-00000001@.@Dial@.@1412522656.0@.@.....2014-10-05 10:​17:​06@.@1001@.@1000@.@SIP/​1001-00000001@.@SIP/​1000-00000002@.@1.49662@.@ANSWERED@.@1412529426.1@.@@.@SIP/​1000-00000002@.@Dial@.@1412529426.1@.@.....
 +
 +Event: UserEvent
 +Privilege: user,all
 +UserEvent: Refresh1CHistory
 +Uniqueid: 1412529473.6
 +Channel:
 +Date:​2014-10-05</​code>​
 +
 +
 [[astpanel:​ats:​asterisk_v6|Обратно к основной инструкции...]] [[astpanel:​ats:​asterisk_v6|Обратно к основной инструкции...]]
astpanel/ats/asterisk/callhistory_v6.1385446029.txt.gz · Последние изменения: 2014/11/14 22:32 (внешнее изменение)