Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
doc:panel1ccrm:asterisk_config:faxhistory [2012/02/28 15:14] nb |
doc:panel1ccrm:asterisk_config:faxhistory [2014/11/14 22:32] (текущий) |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Настройка Asterisk для отображения истории факсимильных сообщений в панели 1С ====== | + | {{page>astpanel:ats:asterisk:faxhistory}} |
- | + | ||
- | ===== Запрос к CDR базе Asterisk используя диалплан и userevent ===== | + | |
- | <file - extensions_miko.conf> | + | |
- | [mikoajamdll] | + | |
- | + | ||
- | exten => 999,1,NoCDR() | + | |
- | exten => 999,n,Answer() | + | |
- | exten => 999,n,Wait(60) | + | |
- | exten => 999,n,Hangup() | + | |
- | + | ||
- | exten => 444,1,NoCDR() | + | |
- | exten => 444,2,Set(num=0) | + | |
- | exten => 444,3,Set(chan=${v1}) | + | |
- | exten => 444,4,Set(date1=${v2}) | + | |
- | exten => 444,5,Set(date2=${v3}) | + | |
- | exten => 444,6,Set(dbname=${v4}) | + | |
- | exten => 444,7,Set(user=${v5}) | + | |
- | exten => 444,8,Set(password=${v6}) | + | |
- | exten => 444,9,Set(packet=20) | + | |
- | exten => 444,10,Answer() | + | |
- | exten => 444,11,System( mysql -sse 'SELECT calldate,src,dst,lastdata,uniqueid,lastapp FROM cdr WHERE (lastapp="SendFAX" OR lastapp="ReceiveFAX") AND calldate >= ${QUOTE(${date1}%)} AND calldate <= ${QUOTE(${date2}%)} ' -u${user} -p${password} ${dbname}> /var/log/asterisk/cdr-csv/${UNIQUEID}) | + | |
- | exten => 444,12,Set(kls=${SHELL(cat /var/log/asterisk/cdr-csv/${UNIQUEID} |wc -l)}) | + | |
- | exten => 444,13,Gotoif($[ ${kls} = 0 ]?20:14) | + | |
- | exten => 444,14,Set(ostatok=${kls}) | + | |
- | exten => 444,15,Set(packet=${IF($[ ${ostatok} < ${packet}]?${ostatok}:${packet})}) | + | |
- | exten => 444,16,Set(num=$[${num} + ${packet}]) | + | |
- | exten => 444,17,UserEvent(FaxFromCDR,Channel: ${chan},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 => 444,18,Set(ostatok=$[${ostatok}-${packet}]) | + | |
- | exten => 444,19,Gotoif($[ ${ostatok} > 0 ]?15:20) | + | |
- | exten => 444,20,System(rm /var/log/asterisk/cdr-csv/${UNIQUEID}) | + | |
- | exten => 444,21,Gotoif($[${kls}>0]?22:23) | + | |
- | exten => 444,22,UserEvent(Refresh1CFAXES,Channel: ${chan}) | + | |
- | exten => 444,23,Hangup() | + | |
- | </file> | + | |
- | + | ||
- | ===== Запрос к CDR базе Asterisk используя ODBC и механизм внешних источников данных в 1С ===== | + | |
- | <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.calldate КАК ДАТА) МЕЖДУ &НачалоДня И &КонецДня | + | |
- | | И (cdr.lastapp = ""SendFAX"" | + | |
- | | ИЛИ cdr.lastapp = ""ReceiveFAX"") | + | |
- | | | + | |
- | |УПОРЯДОЧИТЬ ПО | + | |
- | | calldate УБЫВ | + | |
- | |АВТОУПОРЯДОЧИВАНИЕ"; | + | |
- | + | ||
- | Запрос.УстановитьПараметр("НачалоДня",ДатаНачало); | + | |
- | Запрос.УстановитьПараметр("КонецДня",ДатаОкончания); | + | |
- | + | ||
- | Результат = Запрос.Выполнить(); | + | |
- | + | ||
- | ТЗ=Результат.Выгрузить(); | + | |
- | Возврат ТЗ; | + | |
- | + | ||
- | КонецФункции | + | |
- | </code> | + | |
- | + | ||
- | <note tip>Готовые файлы скриптов лежат в дистрибутиве поставки панели Asterisk для 1C</note> | + | |
- | + | ||
- | <note important>Если для вас данная инструкция оказалась сложной, не стесняйтесь,[[http://www.miko.ru/contacts/|пишите, звоните]], мы поможем или предложим настроенные решения от партнеров.</note> | + | |
- | + | ||
- | + | ||
- | ==== Полезные ссылки ==== | + | |
- | * [[doc:panel1ccrm:asterisk_config|Настройка сервера Asterisk для работы с панелью]] | + | |
- | + | ||
- | + | ||
- | ==== Комментарии ==== | + | |
- | + | ||
- | ~~DISQUS~~ | + |