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

Monitor/Stopmonitor AMI

Добавлено: 13 мар 2012, 13:46
Menjoy
Здравствуйте.

Прочитал документацию, вижу что по команде Monitor записывается звуковая дорожка определенного канала, при звонке есть два канала - вызываемой и вызывающей стороны. Как я понимаю, записывать нужно два канала и затем их объединять, как это можно сделать через AMI? Или все же оптимальный способ делать это через диалплан?
Так или иначе, при записи разговора через AMI нет проблемы определить имя записи в папке, т.к. мы сами его задаем. А как определить имя записанного и микшированного файла в случае записи командой в диалплане? Сообщает ли Астериск о том, что был записан определенный звонок в AMI?

Параллельно разбираюсь сам.
Насколько вижу - оптимальный способ все же записывать через диалплан, только еще не ясно как формируется имя файла, хотелось бы его все же контролировать, чтобы не иметь проблем с принадлежностью статистики по звонку и записанного разговора.

p.s. Очень странно, что такое поле не предусмотрено в Cdr (хотя, видимо, можно использовать Userfield для таких целей).

Re: Monitor/Stopmonitor AMI

Добавлено: 13 мар 2012, 13:55
Vlad1983
а что мешает добавить поле в таблицу cdr и писать в него имя файла Set(CDR(record)=блаблабла) ?

Re: Monitor/Stopmonitor AMI

Добавлено: 13 мар 2012, 14:03
Dgoni_ev
Объединить можно с использование soxmix.
Конкретный пример записи звонков

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

exten => s,1,Verbose(========= START CALLERID=${CALLERID(num)} ========)
exten => s,n,Set(AON=${CALLERID(number)})
exten => s,n,Set(Time_Start=${EPOCH})
exten => s,n,Set(Date_Start=${STRFTIME(${Time_Start},,%d-%m-%Y)})
exten => s,n,Set(Time_Start_Format=${STRFTIME(${Time_Start},,%H:%M:%S)})
exten => s,n,Set(Name_File=${AON}-${Date_Start}_${Time_Start_Format})
exten => s,n,Answer()
exten => s,n,Wait(1)
exten => s,n,Playback(ru/RISONE-OFFICE/ru_dummy)

exten => s,n,GotoIfTime(09:00-20:56,*,*,*?daytime:nighttime)
; day - день
; night - ночь

exten => s,n(nighttime),Playback(ru/RISONE-OFFICE/s9_00_do_21)
exten => s,n,Hangup()

exten => s,n(daytime),Monitor(wav,/tmp/${Name_File})
exten => s,n,Playback(ru/RISONE-OFFICE/welcome)
Далее вызов попадает в очередь
и при отбое

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

exten => h,1,Verbose(!!! Hangup IVR HANGUPCAUSE=${HANGUPCAUSE} QUEUESTATUS=${QUEUESTATUS} !!!)
exten => h,n,StopMonitor()

exten => h,n,System(/mix_audio_file ${Name_File})
Код mix_audio_file

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

#!/bin/bash
Dir_source=/tmp
Dir_dest=$Dir_source/debit
File_name=$1

soxmix "$Dir_source/$File_name-in.wav" "/tmp/$File_name-out.wav" "/tmp/$File_name.wav"
rm -f "$Dir_source/$File_name-in.wav"
rm -f "$Dir_source/$File_name-out.wav"
gzip "$Dir_source/$File_name.wav"
mv $Dir_source/*.gz $Dir_dest/

Re: Monitor/Stopmonitor AMI

Добавлено: 13 мар 2012, 14:04
Menjoy
Этому мешает то, что я непосредственно не администрирую Астериск :(
А так, я бы с удовольствием. Поэтому и приходится искать обходные пути.

Dgoni_ev, спасибо за реализацию - попробую донести до админа.

Re: Monitor/Stopmonitor AMI

Добавлено: 13 мар 2012, 14:07
Dgoni_ev
:shock: