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

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


astpanel:ats:asterisk:faxhistory_v6

10000444. Настройка Asterisk для получения истории факсов в панели 1С

Обратно к основной инструкции...

В этой статье описан алгоритм работы. Пример реализации описан в статье

"Динамическое" обновление истории факсов

Оповещение о добавлении CDR записи через AJAM интерфейс. Для “динамического” обновления истории звонков в 1С следует произвести настройки:

;/etc/asterisk/cdr_manager.conf
; Asterisk Call Management CDR
[general]
enabled = yes

Получение истории факсов по запросу

В плане набора должен быть описан контекст miko_ajam.
В контексте miko_ajam определяется extension с номером 10000444.

[miko_ajam]
exten => 10000444,1,NoOP(Settings Asterisk)

При необходимости, “Панель телефонии Asterisk” выполняет AMI команду originate.
Параметры originate

  • channel - Local/10000444@miko_ajam
  • Application - NoCDR

Переменные канала

  • v1 - канал пользователя в формате «Технология/Номер», который инициировал originate
  • v2 - начало периода в формате 'yyyy-mm-dd'
  • v3 - конец периода в формате 'yyyy-mm-dd'

История факсов отправляется средствами UserEvent:

exten => 10000444,n,UserEvent(FaxFromCDR,chan1c: ${chan},Date: ${date1},Lines: ${Lines})
  • ${chan} - канал в формате «Технология/Номер», запросившего историю (он же ${v1})
  • ${date1} - начало периода
  • ${Lines} - история звонков.

Пример Lines:

calldate@.@src@.@dst@.@lastdata@.@uniqueid@.@lastapp@.@clid@.@linkedid.....calldate@.@src@.@dst@.@lastdata@.@uniqueid@.@lastapp@.@clid@.@linkedid

На параметр Lines накладывается ограничение в 1024 символов. Если величина пакета превышает лимит, то следует выслать пакеты истории в нескольких UserEvent.

Lines не должен содержать символов перевода строки и возврат каретки (CRLF). Лучше если пробельных символов не будет.

Когда вся история отправлена следует оповестить об этом

exten => 10000444,n,UserEvent(Refresh1CFAXES, chan1c: ${chan},Date: ${date1})
  • ${chan} - номер канала, запросившего историю (он же ${v1})
  • ${date1} - начало периода

Проверка

10000555. Настройка Asterisk для получения истории звонков в панели 1С

"Динамическое" обновление истории звонков

Оповещение о добавлении CDR записи через AJAM интерфейс. Для “динамического” обновления истории звонков в 1С следует произвести настройки:

;/etc/asterisk/cdr_manager.conf
; Asterisk Call Management CDR
[general]
enabled = yes

Получение истории звонков по запросу

В плане набора должен быть описан контекст miko_ajam.
В контексте miko_ajam определяется extension с номером 10000555.

[miko_ajam]
exten => 10000555,1,NoOP(Settings Asterisk)

При необходимости, “Панель телефонии Asterisk” выполняет AMI команду originate.
Параметры originate

  • channel - Local/10000555@miko_ajam
  • Application - NoCDR

Переменные канала

  • v1 - канал пользователя в формате «Технология/Номер», который инициировал originate
  • v2 - начало периода в формате 'yyyy-mm-dd'
  • v3 - конец периода в формате 'yyyy-mm-dd'
  • v4 - номера телефонов в формате «НОМЕР1-НОМЕР2-НОМЕР3…» (разделитель «тире»)

История звонков отправляется средствами UserEvent:

exten => 10000555,n,UserEvent(FromCDR,chan1c: ${chan},Date: ${date1},Lines: ${Lines})
  • ${chan} - канал в формате «Технология/Номер», запросившего историю (он же ${v1})
  • ${date1} - начало периода
  • ${Lines} - история звонков.

Формат “Lines”

Переменная Lines - тип “строка” содержит строки таблицы истории звонков.

  • Cтроки разлелены комбинацией “…..”.
  • Cтолбцы истории разделены комбинацией “@.@”.

Обязательный набор и порядок полей в строке:

calldate,src,dst,channel,dstchannel,billsec,disposition,uniqueid

Пример Lines:

calldate@.@src@.@dst@.@channel@.@dstchannel@.@billsec@.@disposition@.@uniqueid.....calldate@.@src@.@dst@.@channel@.@dstchannel@.@billsec@.@disposition,@.@uniqueid

На параметр Lines накладывается ограничение в 1024 символов. Если величина пакета превышает лимит, то следует выслать пакеты истории в нескольких UserEvent.

Lines не должен содержать символов перевода строки и возврат каретки (CRLF). Лучше если пробельных символов не будет.

Когда вся история отправлена следует оповестить об этом

exten => 10000555,n,UserEvent(Refresh1CHistory,chan1c: ${chan},Date: ${date1})
  • ${chan} - номер канала, запросившего историю (он же ${v1})
  • ${date1} - начало периода

Проверка

Для проверки можно использовать следующий скрипт:

  • Звонок с SIP/104 (Телефон должен быть подключен) на 10000444
#!/bin/sh
dir_script='/tmp/';
# каталог из asterisk.conf
astspooldir='/var/spool/asterisk';
#
call_text="Channel: SIP/104
Context: miko_ajam
Extension: 10000444
Callerid: Alexey<104>
Setvar: v1=SIP/104
Setvar: v2=2013-11-01
Setvar: v3=2013-12-01
";

echo "$call_text" > /tmp/file.call;
mv '/tmp/file.call' "$astspooldir/outgoing/";

asterisk -rvvv;

Вывод в AMI

Event: UserEvent
Privilege: user,all
UserEvent: Refresh1CFAXES
Uniqueid: 1412878640.21
Channel:SIP/104
Date:2013-11-01

Обратно к основной инструкции...

astpanel/ats/asterisk/faxhistory_v6.txt · Последние изменения: 2018/06/08 09:16 — apor