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

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

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


astpanel:ats:asterisk:downrec

Настройка Asterisk для скачивания файла записи пользователем из панели телефонии

Диалплан для запроса и перемещения файла записи в папку выгрузки

extensions_miko.conf
[miko_ajam]
exten => 0000666,1,NoCDR()
exten => 0000666,n,Set(chan=${v1})
exten => 0000666,n,Set(uniqueid1c=${v2})
exten => 0000666,n,Set(monitor_path=${ASTSPOOLDIR}/monitor)
exten => 0000666,n,Set(fax_path=${ASTSPOOLDIR}/fax)
exten => 0000666,n,Set(recuploadfldr=/var/www/html/1c/rec)
exten => 0000666,n,Set(faxuploadfldr=/var/www/html/1c/fax)
exten => 0000666,n,Set(RecFax=${v6})
exten => 0000666,n,Set(dbname=${AST_CONFIG(cdr_mysql.conf,global,dbname)})
exten => 0000666,n,Set(user=${AST_CONFIG(cdr_mysql.conf,global,user)})
exten => 0000666,n,Set(password=${AST_CONFIG(cdr_mysql.conf,global,password)})
exten => 0000666,n,Gotoif($[${RecFax} = FAX]?FAX)
exten => 0000666,n,Gotoif($[${RecFax} = Records]?Records)
exten => 0000666,n,Answer()
exten => 0000666,n,Hangup()

exten => 0000666,n(Records),NoOp()
exten => 0000666,n,Set(recordingfile=${SHELL(mysql -sse 'SELECT recordingfile FROM cdr WHERE uniqueid Like ${QUOTE(${uniqueid1c}%)} LIMIT 1' -u${user} -p${password} ${dbname})})
exten => 0000666,n,Gotoif($[${LEN(${recordingfile})} > 4]?FindInFileSystem:FindInUserfield)
exten => 0000666,n(FindInUserfield),Set(recordingfile=${SHELL(mysql -sse 'SELECT userfield FROM cdr WHERE uniqueid Like ${QUOTE(${uniqueid1c}%)} LIMIT 1' -u${user} -p${password} ${dbname})})
exten => 0000666,n,Gotoif($[${LEN(${recordingfile})} > 4]?FindInFileSystem:FailDownload)
exten => 0000666,n(FindInFileSystem),Set(namedorashiren=$[${LEN(${recordingfile})}-4])
exten => 0000666,n,Set(result=${SHELL(find ${monitor_path} -name ${recordingfile:0:${namedorashiren}}* -exec cp {} ${recuploadfldr} \;)})
exten => 0000666,n,NoOp(find ${monitor_path} -name ${recordingfile:0:${namedorashiren}}* -exec cp {} ${recuploadfldr} \;)
exten => 0000666,n,Wait(1)
exten => 0000666,n,Set(recfile=${SHELL(cd ${recuploadfldr} && find *${recordingfile:0:${namedorashiren}}*|head -n 1)})
exten => 0000666,n,NoOp(cd ${recuploadfldr} && find *${recordingfile:0:${namedorashiren}}*|head -n 1)
exten => 0000666,n,ExecIf($[${LEN(${recfile})} > 4 ]?UserEvent(StartDownloadRecord,Channel: ${chan},FileName: 80/1c/rec/${recfile}))
exten => 0000666,n(FailDownload),ExecIf($[${LEN(${recfile})} < 4 ]?UserEvent(FailDownloadRecord,Channel: ${chan}))
exten => 0000666,n,Wait(30)
exten => 0000666,n,System(rm  ${recuploadfldr}/${recfile})
exten => 0000666,n,Answer()
exten => 0000666,n,Hangup()

Этот диалплан позволяет по запросу из панели найти по уникальному идентификатору файл записи, учитывая то, что он может быть переконвертирован в файл с другим расширением, скопировать этот файл в папку выгрузки и сообщить в 1С через UserEvent результат этой операции. После чего панель телефонии инициирует скачивание файла или сообщает о том что файл записи не найден.

Скрипт скачивания файла записи

Если на сервере Asterisk установлен FreePBX то в папке /var/www/html нужно создать дополнительно папку «1с». Также для файлов подготовленных к выгрузке создаем папку «rec» внутри «1с». Именно эта папка указана в диалплане в переменной recuploadfldr.

Готовые файлы скриптов лежат в дистрибутиве поставки панели Asterisk для 1C
Если для вас данная инструкция оказалась сложной, не стесняйтесь,пишите, звоните, мы поможем или предложим настроенные решения от партнеров.

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

Комментарии

astpanel/ats/asterisk/downrec.txt · Последние изменения: 2014/11/14 22:32 (внешнее изменение)