Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Mixmonitor asterisk 1.8. Перемещение аудиозаписи после завершения звонка.

0

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-телефонии . Требуется:

  1. чтобы в имени файла записи разговора указывалось с какого провайдера был исходящий звонок.
  2. После завершения записи делать сортировку звонков: -разговор сотоялся; -трубку не взяли; Гуглить нету больше сил.

Не смог разобраться как размещать сообщения , поэтому пишу сюда. Пробовал таким образом:

[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
удалить закрыть спам изменить тег редактировать

спросил 2014-02-17 03:03:57 +0400

wazza Gravatar wazza
1 1 1 2

обновил 2014-02-20 01:00:32 +0400

Comments

нету сил,не гуглите. 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 )редактировать

3 Ответа

1

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 задач не засовывать, лучше делать отметки и выполнять в фоне другим скриптом.

http://www.voip-info.org/wiki/view/Monitor+stereo-example

ссылка удалить спам редактировать

ответил 2014-02-17 09:53:41 +0400

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

обновил 2014-02-17 10:08:56 +0400

Comments

Ваш ответ, конечно, правильный, но описание одной команды + пример от другой команды помогут топикстрартеру запутаться:)

eyt5297 ( 2014-02-17 16:39:26 +0400 )редактировать
0

У меня для этих целей вносятся необходимые для сортировки признаки в название файла, в h вызывается скрипт перловый (system) которому предается название файла. Там уже можно любые танцы устраивать.

ссылка удалить спам редактировать

ответил 2014-02-19 10:38:45 +0400

kozlevitch Gravatar kozlevitch
1 1 2

Comments

еще один. документацию чиатйте. h-екстеншен для этого не предназначен, результат такого диалплана обычно сброс этих задач и отказ принимать новые звонки как только появляется нагрузка.

meral ( 2014-02-19 13:26:24 +0400 )редактировать
0
  1. На мой взгляд, плохая практика таким образом использовать повторяющейся код, лучше использовать Макросы или Подпрограммы.
  2. Копировать файлы можно после завершения вызова в экстейшене h c помощью приложения System.
ссылка удалить спам редактировать

ответил 2014-02-17 07:22:32 +0400

eyt5297 Gravatar eyt5297
61 12 1 10
https://t.me/chan_asteris...

Comments

нет слов одни буквы..

meral ( 2014-02-17 09:52:23 +0400 )редактировать

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2014-02-17 03:03:57 +0400

Просмотрен: 5,350 раз

Обновлен: Feb 20 '14

Похожие вопросы:

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.