Это старая версия документа!
В плане набора должен быть описан контекст miko_ajam.
В контексте miko_ajam определяется extension с номером 10000666.
[miko_ajam] exten => 10000666,1,NoOP(dounload file from Asterisk)
При начале работы, “Панель телефонии Asterisk” выполняет AMI команду originate.
Параметры originate
Переменные канала
Приложение должно выполнить команду плана набора UserEvent и передать информацию по файлу:
Если файл найден:
; для типа Records exten => 10000666,n,UserEvent(StartDownloadRecord,Channel: ${chan},FileName: ${port}/${path}/${recfile}) ; для типа FAX exten => 10000666,n,UserEvent(StartDownloadFax,Channel: ${chan},FileName: ${port}/${path}/${recfile})
Если файл не найден:
; для типа Records exten => 10000666,n,UserEvent(FailDownloadRecord,Channel: ${chan}) ; для типа FAX exten => 10000666,n,UserEvent(FailDownloadFax,Channel: ${chan})
Параметр состоит их нескольких частей:
При получении оповещения, 1С откроет интернет обозвреватель по адресу:
http://${IP_PBX}:${port}/${path}/${recfile}
После выполнения UserEvent приложение должно ответить на звонок и отбить его.
exten => 10000111,n,Answer() exten => 10000111,n,Hangup()
Скрипт для скачивания файла
В качестве ресурса для скачивания файла можно использовать php скрипт:
<?php $ASTSPOOLDIR = "/var/spool/asterisk/"; $tmpdir = '/tmp/'; $faxdir = $ASTSPOOLDIR."fax/"; $recdir = $ASTSPOOLDIR."monitor/"; if ($_GET['view']) { if ($_GET['type']=="FAX") { $filename = $faxdir.basename($_GET['view']); $fp=fopen($filename, "rb"); if ($fp) { header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: public"); header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=".basename($_GET['view'])); ob_clean(); fpassthru($fp); }else{ echo '<b>404 File lib not found!</b>'; } }elseif ($_GET['type']=="Records" && file_exists($recdir.$_GET['view']) ){ $wavfile = $recdir.$_GET['view']; $size = filesize($wavfile); $name = basename($_GET['view']); $extension = strtolower(substr(strrchr($name,"."),1)); // This will set the Content-Type to the appropriate setting for the file $ctype =''; switch( $extension ) { case "mp3": $ctype="audio/mpeg"; break; case "wav": $ctype="audio/x-wav"; break; case "Wav": $ctype="audio/x-wav"; break; case "WAV": $ctype="audio/x-wav"; break; case "gsm": $ctype="audio/x-gsm"; break; // not downloadable default: die("<b>404 File not found!</b>"); break ; } // need to check if file is mislabeled or a liar. $fp=fopen($wavfile, "rb"); if ($ctype && $fp) { header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: public"); header("Content-Description: wav file"); header("Content-Type: " . $ctype); header("Content-Disposition: attachment; filename=" . $name); header("Content-Transfer-Encoding: binary"); header("Content-length: " . $size); ob_clean(); fpassthru($fp); }else{ echo '<b>404 File not found!</b>'; } }else{ echo '<b>404 File not found!</b>'; } exit; }else{ echo '<b>404 File not found!</b>'; }?>