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