Ваш ответ, конечно, правильный, но описание одной команды + пример от другой команды помогут топикстрартеру запутаться:)
eyt5297 ( 2014-02-17 16:39:26 +0400 )редактироватьextensions.conf
[outgoing]
exten => _XXXXXXXXXX,1,SET(fname=${STRFTIME(${EPOCH},,%Y%m%d_%H%M%S)}_X_${CALLERID(dnid)}_${CALLERID(num)})
exten => _XXXXXXXXXX,2,MixMonitor(/home/share/all/${fname}.wav)
exten => _XXXXXXXXXX,3,MixMonitor(/home/share/good/${fname}.wav,b)
exten => _495XXXXXXX,4,Dial(SIP/zadarma/7${EXTEN},40,)
exten => _499XXXXXXX,4,Dial(SIP/zadarma/7${EXTEN},40,)
exten => _XXXXXXXXXX,4,Dial(SIP/sip.pctel.ru/07${EXTEN},120,tT)
Суть: Есть 2 провайдера ip-телефонии . Требуется:
Не смог разобраться как размещать сообщения , поэтому пишу сюда. Пробовал таким образом:
[outgoing]
exten => _XXXXXXXXXX,1,SET(fname=${STRFTIME(${EPOCH},,%Y%m%d_%H%M%S)}_X_${CALLERID(dnid)}_${CALLERID(num)})
exten => _XXXXXXXXXX,2,MixMonitor(/home/share/all/${fname}.wav)
exten => _XXXXXXXXXX,3,MixMonitor(/home/share/good/${fname}.wav,b,System(/bin/rm /home/share/good/${fname}.wav)))
exten => _495XXXXXXX,4,Dial(SIP/zadarma/7${EXTEN},40,)
exten => _499XXXXXXX,4,Dial(SIP/zadarma/7${EXTEN},40,)
exten => _XXXXXXXXXX,4,Dial(SIP/sip.pctel.ru/07${EXTEN},120,tT)
exten = h,1,StopMixMonitor()
exten = h,n,System(/usr/bin/lame -q 2 -b 64 /home/share/good/${fname}.wav /home/share/good/${fname}.mp3)
exten = h,n,System(/bin/rm /home/share/good/${fname}.wav)
Увы ничего не происходит , ни перекодировки , ни последующего удаления файла. Переписал следующим образом:
[outgoing]
exten => _XXXXXXXXXX,1,SET(fname=${STRFTIME(${EPOCH},,%Y%m%d_%H%M%S)}_X_${CALLERID(dnid)}_${CALLERID(num)})
exten => _XXXXXXXXXX,2,MixMonitor(/home/share/all/${fname}.wav)
exten => _XXXXXXXXXX,3,MixMonitor(/home/share/good/${fname}.wav,b,System(/bin/rm -f /home/share/good/${fname}.wav)))
exten => _495XXXXXXX,4,Dial(SIP/zadarma/7${EXTEN},40,)
exten => _499XXXXXXX,4,Dial(SIP/zadarma/7${EXTEN},40,)
exten => _XXXXXXXXXX,4,Dial(SIP/sip.pctel.ru/07${EXTEN},120,tT)
По идее , если запись удачна -файл должен удалиться из /home/share/good
, заглянул в консоль во время звонка (asterisk -r) , никаких warning-ов нет , запись не удаляется, в чем может быть проблема ?
Запустил asterisk консоль с -vvvvr при звонке обнаружил следующее:
-- Executing [1122334455@outgoing:1] Set("SIP/200-00000006", "fname=20140220_003801_X_1122334455_200") in new stack
-- Executing [1122334455@outgoing:2] MixMonitor("SIP/200-00000006", "/home/share/all/20140220_003801_X_1122334455_200.wav") in new stack
-- Executing [1122334455@outgoing:3] MixMonitor("SIP/200-00000006", "/home/share/good/20140220_003801_X_1122334455_200.wav,b,System(/bin/rm -f /home/share/good/20140220_003801_X_1122334455_200.wav))") in new stack
-- Executing [1122334455@outgoing:4] Dial("SIP/200-00000006", "SIP/sip.pctel.ru/071122334455,120,tT") in new stack
== Using SIP RTP CoS mark 5
-- Called SIP/sip.pctel.ru/071122334455
== Begin MixMonitor Recording SIP/200-00000006
== Begin MixMonitor Recording SIP/200-00000006
> doing dnsmgr_lookup for 'sip.pctel.ru'
> ast_get_srv: SRV lookup for '_sip._udp.sip.pctel.ru' mapped to host 3.sip.pctel.ru, port 5060
> doing dnsmgr_lookup for 'sip.pctel.ru'
> ast_get_srv: SRV lookup for '_sip._udp.sip.pctel.ru' mapped to host 3.sip.pctel.ru, port 5060
-- SIP/sip.pctel.ru-00000007 is making progress passing it to SIP/200-00000006
> doing dnsmgr_lookup for 'pbx.zadarma.com'
-- SIP/sip.pctel.ru-00000007 answered SIP/200-00000006
> doing dnsmgr_lookup for 'pbx.zadarma.com'
== Spawn extension (outgoing, 1122334455, 4) exited non-zero on 'SIP/200-00000006'
== MixMonitor close filestream
== MixMonitor close filestream
== Executing [System(/bin/rm -f /home/share/good/20140220_003801_X_1122334455_200.wav))]
== End MixMonitor Recording SIP/200-00000006
== End MixMonitor Recording SIP/200-00000006
MixMonitor имеет специальный параметр - скрипт вызываемый после окончания записи.
-= Info about application 'MixMonitor' =-
[Synopsis]
Record a call and mix the audio during the recording
[Description]
MixMonitor(<file>.<ext>[,<options>[,<command>]]):
Records the audio on the current channel to the specified file.
If the filename is an absolute path, uses that path, otherwise
creates the file in the configured monitoring directory from
asterisk.conf. Use of StopMixMonitor is required to guarantee
the audio file is available for processing during dialplan execution.
Valid options:
a - Append to the file instead of overwriting it.
b - Only save audio to the file while the channel is bridged.
Note: Does not include conferences or sounds played to each bridged
party.
Note: If you utilize this option inside a Local channel, you must
make sure the Local channel is not optimized away. To do this,
be sure to call your Local channel with the '/n' option.
For example: Dial(Local/start@mycontext/n)
v(<x>) - Adjust the heard volume by a factor of <x> (range -4 to 4)
V(<x>) - Adjust the spoken volume by a factor of <x> (range -4 to 4)
W(<x>) - Adjust the both heard and spoken volumes by a factor of <x>
(range -4 to 4)
<command> will be executed when the recording is over
Any strings matching ^{X} will be unescaped to ${X}.
All variables will be evaluated at the time MixMonitor is called.
The variable MIXMONITOR_FILENAME will contain the filename used to record.
вот тут например примеры как такой скрипт может выглядеть. в скрипт желательно сильно cpu-intensive задач не засовывать, лучше делать отметки и выполнять в фоне другим скриптом.
Ваш ответ, конечно, правильный, но описание одной команды + пример от другой команды помогут топикстрартеру запутаться:)
eyt5297 ( 2014-02-17 16:39:26 +0400 )редактироватьУ меня для этих целей вносятся необходимые для сортировки признаки в название файла, в h вызывается скрипт перловый (system) которому предается название файла. Там уже можно любые танцы устраивать.
еще один. документацию чиатйте. h-екстеншен для этого не предназначен, результат такого диалплана обычно сброс этих задач и отказ принимать новые звонки как только появляется нагрузка.
meral ( 2014-02-19 13:26:24 +0400 )редактироватьЗадан: 2014-02-17 03:03:57 +0400
Просмотрен: 5,359 раз
Обновлен: Feb 20 '14
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
нету сил,не гуглите. stopmixmonitor вызовет сбой(ибо уже нечего стопать) и дальше не пойдет. все команды system будут выполняться от пользователя астериск.
meral ( 2014-02-19 13:28:13 +0400 )редактироватьВы в консоль поглядите во время выполнения вашего диал-плана, 100% там есть ответ на ваш вопрос.
itprofit ( 2014-02-19 16:37:24 +0400 )редактироватьнет такой команды. надо написать скрипт который на вход приймет имя файла, сформирует новое имя и переименует. передать скрипт как 3-й параметр на mixmonitor. проверить. поправить в случае необхъодимости. проверить права досутпа. еще раз поправить.
meral ( 2014-02-19 22:36:24 +0400 )редактироватьМожно пример ?
wazza ( 2014-02-19 23:56:19 +0400 )редактироватьа милион не хотите? сами подумайте. пример зависит от вашего задания.
meral ( 2014-02-20 02:57:07 +0400 )редактироватьХотя бы подскажите как правильно запустить "некий" скрипт после завершения записи, с bash-ем я уже накручу.
wazza ( 2014-02-21 02:02:15 +0400 )редактироватьвы че издеваетесь? я же вам написал СРАЗУ, третьим параметром в команде монитор указываете скрипт.
meral ( 2014-02-21 13:25:21 +0400 )редактировать