Страница 1 из 1

MixMonitor + Queue + AGI

Добавлено: 17 фев 2014, 12:10
Dampire
Доброго.
Есть очередь

Код: Выделить всё

monitor-format=wav
monitor-type=MixMonitor
Есть вызов

Код: Выделить всё

exten => 100,1,Answer()
exten => 100,2,Set(MONITORFILENAME=${CDR(uniqueid)})
exten => 100,3,Queue(queue,tc)
exten => 100,4,Hangup()

exten => h,1,AGI("upload_monitor.py")
Есть код (python), который загружает файл на сайт

Код: Выделить всё

url = 'http://somesite.foo/upload.php'
files = {'file': ('%s' % fname, open('/var/spool/asterisk/monitor/%s' % fname, 'rb'))}
r = requests.post(url, files=files)
Код в консольном виде загружает хорошо, в виде AGI - файл загружается битый(т.е. вообще не проигрывается, длина не соответствует). Предположительная причина - преждевременный выход из скрипта, т.к. скрипт излишне шустро отчитывается в консоли (return 0). time.sleep(5) не помогает.

Re: MixMonitor + Queue + AGI

Добавлено: 17 фев 2014, 13:55
Samael28
Есть команда StopMixMonitor.
Ее желательно вызывать до выгрузки файла.

Re: MixMonitor + Queue + AGI

Добавлено: 17 фев 2014, 14:15
andrew55555
Попробуйте через MONITOR_EXEC. Астериск выполняет любой скрипт, по идее, уже после закрытия файла. Описание есть в queues.conf.sample

Re: MixMonitor + Queue + AGI

Добавлено: 17 фев 2014, 15:50
Dampire
2Samael28
Об этом я не подумал. Скорее всего в этом и заключается причина.
andrew55555
Скрипт отработал как надо.

Всем спасибо. В итоге буду использовать monitor_exec просто по причине того, что так меньше строчек в скрипте :)