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

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

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


doc:panel1ccrm:asterisk_config:faxhistory

Это старая версия документа!


Настройка Asterisk для отображения истории факсимильных сообщений в панели 1С

Запрос к CDR базе Asterisk используя диалплан и userevent

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,Set(tmp_dir=${AST_CONFIG(asterisk.conf,directories,astlogdir)}/)
exten => 444,11,Answer()
exten => 444,12,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}> ${tmp_dir}${UNIQUEID})
exten => 444,13,Set(kls=${SHELL(cat ${tmp_dir}${UNIQUEID} |wc -l)})
exten => 444,14,Gotoif($[ ${kls} = 0 ]?21:15)
exten => 444,15,Set(ostatok=${kls})
exten => 444,16,Set(packet=${IF($[ ${ostatok} < ${packet}]?${ostatok}:${packet})})
exten => 444,17,Set(num=$[${num} + ${packet}])
exten => 444,18,UserEvent(FaxFromCDR,Channel: ${chan},Lines: ${QUOTE(${SHELL(cat ${tmp_dir}${UNIQUEID} |head -n '${num}'| tail -n '${packet}'| sed 's/[\t]/'\',\''/g'|sed 's/$/...../g'|tr "\n" " ")})})
exten => 444,19,Set(ostatok=$[${ostatok}-${packet}])
exten => 444,20,Gotoif($[ ${ostatok} > 0 ]?16:21)
exten => 444,21,System(rm ${tmp_dir}${UNIQUEID})
exten => 444,22,Gotoif($[${kls}>0]?23:24)
exten => 444,23,UserEvent(Refresh1CFAXES,Channel: ${chan})
exten => 444,24,Hangup()

Запрос к CDR базе Asterisk используя ODBC и механизм внешних источников данных в 1С

//Функция генерирует строку соединения с сервером через 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 УБЫВ
	               |АВТОУПОРЯДОЧИВАНИЕ";
 
	Запрос.УстановитьПараметр("НачалоДня",ДатаНачало);
	Запрос.УстановитьПараметр("КонецДня",ДатаОкончания);
 
	Результат = Запрос.Выполнить();
 
	ТЗ=Результат.Выгрузить();
	Возврат ТЗ;
 
КонецФункции
Готовые файлы скриптов лежат в дистрибутиве поставки панели Asterisk для 1C
Если для вас данная инструкция оказалась сложной, не стесняйтесь,пишите, звоните, мы поможем или предложим настроенные решения от партнеров.

Полезные ссылки

Комментарии

doc/panel1ccrm/asterisk_config/faxhistory.1331404345.txt.gz · Последние изменения: 2014/11/14 22:32 (внешнее изменение)