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

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

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


doc:panel1ccrm:asterisk_config:callhistory

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
doc:panel1ccrm:asterisk_config:callhistory [2012/02/28 13:54]
nb
doc:panel1ccrm:asterisk_config:callhistory [2014/11/14 22:32] (текущий)
Строка 1: Строка 1:
-===== Настройка дополнительного диалплана для получения истории звонков ===== +{{page>astpanel:ats:asterisk:callhistory}}
- +
-==== Источник истории звонков база данных MYSQL ==== +
-В панели реализована функция получения истории звонков с сервера asterisk, путем генерации вызова с номера 999 на номер 555 используя приведенный ниже диалплан. +
- +
-<file - extensions_miko.conf>​ +
-[mikoajamdll] +
-exten => 999,​1,​NoCDR() +
-exten => 999,​n,​Answer() +
-exten => 999,​n,​Wait(60) +
-exten => 999,​n,​Hangup() +
- +
-exten => 555,​1,​NoCDR() +
-exten => 555,​2,​Set(num=0) +
-exten => 555,​3,​Set(chan=${v1}) +
-exten => 555,​4,​Set(date1=${v2}) +
-exten =555,​5,​Set(chanmob=${v3}) +
-exten => 555,​6,​Set(dbname=${v4}) +
-exten => 555,​7,​Set(user=${v5}) +
-exten => 555,​8,​Set(password=${v6}) +
-exten => 555,​9,​Set(packet=20) +
-exten => 555,​10,​Answer() +
-exten => 555,​11,​System( mysql -sse '​SELECT calldate,​src,​dst,​channel,​dstchannel,​billsec,​disposition,​uniqueid,​userfield,​recordingfile,​lastapp FROM cdr WHERE  lastapp="​Dial"​ AND calldate Like ${QUOTE(${date1}%)} AND (dstchannel Like ${QUOTE(${chan}%)} OR channel Like ${QUOTE(${chan}%)} OR dstchannel Like ${QUOTE(${chanmob}%)} OR channel Like ${QUOTE(${chanmob}%)}) ' -u${user} -p${password} ${dbname}>​ /​var/​log/​asterisk/​cdr-csv/​${UNIQUEID}) +
-exten => 555,​12,​Set(kls=${SHELL(cat /​var/​log/​asterisk/​cdr-csv/​${UNIQUEID} |wc -l)}) +
-exten => 555,​13,​Gotoif($[ ${kls} = 0 ]?20:14) +
-exten => 555,​14,​Set(ostatok=${kls}) +
-exten => 555,​15,​Set(packet=${IF($[ ${ostatok} < ${packet}]?​${ostatok}:${packet})}) +
-exten => 555,​16,​Set(num=$[${num} + ${packet}]) +
-exten => 555,​17,​UserEvent(FromCDR,​Channel:​ ${chan},​Date:​ ${date1},​Lines:​ ${QUOTE(${SHELL(cat /var/log/asterisk/​cdr-csv/​${UNIQUEID} |head -n '​${num}'​| tail -n '​${packet}'​| sed '​s/​[\t]/'​\',​\''/​g'​|sed '​s/​$/​...../​g'​|tr "​\n"​ " "​)})}) +
-exten => 555,​18,​Set(ostatok=$[${ostatok}-${packet}]) +
-exten => 555,​19,​Gotoif($[ ${ostatok} > 0 ]?15:20) +
-exten => 555,​20,​System(rm /​var/​log/​asterisk/​cdr-csv/​${UNIQUEID}+
-exten => 555,​21,​Gotoif($[${kls}>​0]?​22:​23) +
-exten => 555,​22,​UserEvent(Refresh1CHistory,​Channel:​ ${chan},​Date:​ ${date1}) +
-exten => 555,​23,​Hangup() +
-</​file>​ +
- +
-Для базы звонков в 100000 записей,​ отображение истории в 1С за определенный день занимает 3-5 секунд. Потому мы рекомендуем именно этот способ работы с CDR записями. +
-Быстрее только прямое обращение к базе данных CDR из 1С, не используя функционал Asterisk. +
- +
-Для включения этого файла в работу необходимо положить его в директорию /​etc/​asterisk/​ и проинклюдить в файле /​etc/​asterisk/​extensions.conf с помощью следующей команды:​ +
-<​code>​ +
-#include extensions_miko.conf  +
-</​code>​ +
- +
-Если вы используете сборку asterisk с оболочкой freepbx тогда вам необходимо использовать extensions_override_freepbx.conf вместо extensions.conf +
- +
- +
- +
-===== Работа с базой данных CDR напрямую из 1С: Предприятия 8 ===== +
-Возможно специалистам 1С, будет проще работать с базой данных через новую возможность платформы 1С:​Предприятие 8 //​Внешние источники данных//​. +
-В блоге Николая Бекетова,​ описан процесс подключения к [[http://​www.miko.ru/​blogs/​SwordBlog/​52/​|базе данных из 1С]]. +
-В результате достаточно настроить связь с базой CDR записей и добавить в конфигурацию общий модуль **МИКО_Астериск_Сервер** +
-<code 1c> +
-//​Функция генерирует строку соединения с сервером через ODBC драйвер +
-Функция СформироватьСтрокуСоединенияСАстерискСервером(host,​database,​user,​pass) +
-  +
- СтрокаСоединения = "​DRIVER={MySQL ODBC 5.1 Driver}; SERVER="​+host+";​ DATABASE="​+database+";​ UID="​+user+";​ PWD="​+pass;​  +
-  +
- Возврат СтрокаСоединения;​ +
-  +
-КонецФункции +
- +
- +
-//​Функция возвращает информацию о звонках с сервера телефонии +
-Функция ВернутьЗаписиCDRДляТекущегоПользователя(ДатаНачало,​ ДатаОкончания,​КаналЛокальный,​КаналСотовый) Экспорт +
-  +
- СтрокаСоединенияСАстерискСервером = СформироватьСтрокуСоединенияСАстерискСервером("​ASTERISK_HOST","​ASTERISK_cdrdb","​ASTERISK_cdrdb_login","​ASTERISK_cdrdb_password"​);​ +
-  +
- ПараметрыСоединенияСАстерискомМИКО = Новый ПараметрыСоединенияВнешнегоИсточникаДанных;​  +
- ПараметрыСоединенияСАстерискомМИКО.СтрокаСоединения = СтрокаСоединенияСАстерискСервером;​ +
-  +
- ВнешниеИсточникиДанных.Asterisk.УстановитьОбщиеПараметрыСоединения(ПараметрыСоединенияСАстерискомМИКО);​  +
- ВнешниеИсточникиДанных.Asterisk.УстановитьСоединение();​  +
-  +
- Запрос = Новый Запрос;​ +
- Запрос.Текст = "​ВЫБРАТЬ +
-                ​| ВЫРАЗИТЬ(cdr.calldate КАК ДАТА) КАК calldate, +
-                ​| cdr.clid,​ +
-                ​| cdr.src,​ +
-                ​| cdr.dst,​ +
-                ​| cdr.dcontext,​ +
-                ​| cdr.channel,​ +
-                ​| cdr.dstchannel,​ +
-                ​| cdr.lastapp,​ +
-                ​| cdr.lastdata,​ +
-                ​| cdr.duration,​ +
-                ​| cdr.billsec,​ +
-                ​| cdr.disposition,​ +
-                ​| cdr.amaflags,​ +
-                ​| cdr.accountcode,​ +
-                ​| cdr.uniqueid,​ +
-                ​| cdr.userfield,​ +
-                       ​| cdr.recordingfile  +
-                ​|ИЗ +
-                ​| ВнешнийИсточникДанных.Asterisk.Таблица.cdr КАК cdr +
-                ​|ГДЕ +
-                ​| (cdr.dstchannel ПОДОБНО ""​%""​ + &​НашКанал + ""​%""​ +
-                ​| ИЛИ cdr.channel ПОДОБНО ""​%""​ + &​НашКанал + ""​%""​ +
-                ​| ИЛИ cdr.dstchannel ПОДОБНО ""​%""​ + &​НашКаналСотовый + ""​%""​ +
-                ​| ИЛИ cdr.channel ПОДОБНО ""​%""​ + &​НашКаналСотовый + ""​%""​) +
-                | И ВЫРАЗИТЬ(cdr.calldate КАК ДАТА) МЕЖДУ &​НачалоДня И &​КонецДня +
-                | +
-                ​|УПОРЯДОЧИТЬ ПО +
-                ​| calldate УБЫВ +
-                ​|АВТОУПОРЯДОЧИВАНИЕ";​ +
-  +
- Запрос.УстановитьПараметр("​НашКанал",​СокрЛП(КаналЛокальный));​ +
- Запрос.УстановитьПараметр("​НашКаналСотовый",​СокрЛП(КаналСотовый));​ +
- Запрос.УстановитьПараметр("​НачалоДня",​ДатаНачало);​ +
- Запрос.УстановитьПараметр("​КонецДня",​ДатаОкончания);​ +
-  +
- Результат = Запрос.Выполнить();​ +
-  +
- ТЗ=Результат.Выгрузить();​ +
- Возврат ТЗ; +
-  +
-КонецФункции +
- +
- +
-</​code>​ +
- +
- +
-<note important>​Если для вас данная инструкция оказалась сложной,​ не стесняйтесь,​ пишите,​ звоните,​ мы поможем или предложим настроенные решения от партнеров.</​note>​ +
- +
-===== Комментарии ===== +
-~~DISQUS~~ +
doc/panel1ccrm/asterisk_config/callhistory.1330437263.txt.gz · Последние изменения: 2014/11/14 22:32 (внешнее изменение)