Продолжение выполнения dialplan'а после разрыва.
Добавлено: 23 май 2013, 10:30
Приветствую всех присутствующих!, вопрос такой.
Имеется аналоговый телефон подключенный через FXS порт платы Digium. Необходимо, при поднятии трубки начинать запись (что то вроде диктофона, только так, что бы пользователь не мог помешать процессу нажатием различных клавиш). Далее, когда пользователь кладет трубку, необходимо перекодировать в mp3 и удалить wav. Реализовал следующем методом:
/chan_dahdi.conf
..
immediate=yes на канале, что при поднятие трубки перескакивал сразу на нужный context
..
/extensions.conf
..
exten => s,n,Answer()
exten => s,n,Wait(1)
exten => s,n,Set(recname=${STRFTIME(%Y%m%d%H%M)})
exten => s,n,Set(monopt=nice -n 20 /usr/bin/lame -b 16 --silent "${WAV}/home/web-users/operator/${recname}.wav" "${MP3}/home/web-users/operator/${recname}.mp3" && rm -f "${WAV}/home/web-users/operator/${recname}.wav")
exten => s,n,Record(/home/web-users/operator/${recname}.wav,0,0,k)
exten => s,n,System(${monopt})
exten => s,n,HangUp()
..
Но, в случаи, когда запись завершается командой #, то диалплан выполняться соответственно далее и всё "ОК", когда же трубку "вешают", тем самым завершая вызов, диалплан обрывается на Record и до двух последних команд не доходит, что тоже логично. Вопрос, как сделать так, что бы диалплан выполнялся далее после того как пользователь "положит" трубку или же каким другим способ выполнить перекодирование файла. В какую сторону копать?
П.С. Пробывал использовать в конце:
exten => h,n,System(${monopt})
exten => h,n,HangUp()
Но признаю, то ли не разобрался, то ли не вышло по каким-то причинам.
Asterisk 1.8
Имеется аналоговый телефон подключенный через FXS порт платы Digium. Необходимо, при поднятии трубки начинать запись (что то вроде диктофона, только так, что бы пользователь не мог помешать процессу нажатием различных клавиш). Далее, когда пользователь кладет трубку, необходимо перекодировать в mp3 и удалить wav. Реализовал следующем методом:
/chan_dahdi.conf
..
immediate=yes на канале, что при поднятие трубки перескакивал сразу на нужный context
..
/extensions.conf
..
exten => s,n,Answer()
exten => s,n,Wait(1)
exten => s,n,Set(recname=${STRFTIME(%Y%m%d%H%M)})
exten => s,n,Set(monopt=nice -n 20 /usr/bin/lame -b 16 --silent "${WAV}/home/web-users/operator/${recname}.wav" "${MP3}/home/web-users/operator/${recname}.mp3" && rm -f "${WAV}/home/web-users/operator/${recname}.wav")
exten => s,n,Record(/home/web-users/operator/${recname}.wav,0,0,k)
exten => s,n,System(${monopt})
exten => s,n,HangUp()
..
Но, в случаи, когда запись завершается командой #, то диалплан выполняться соответственно далее и всё "ОК", когда же трубку "вешают", тем самым завершая вызов, диалплан обрывается на Record и до двух последних команд не доходит, что тоже логично. Вопрос, как сделать так, что бы диалплан выполнялся далее после того как пользователь "положит" трубку или же каким другим способ выполнить перекодирование файла. В какую сторону копать?
П.С. Пробывал использовать в конце:
exten => h,n,System(${monopt})
exten => h,n,HangUp()
Но признаю, то ли не разобрался, то ли не вышло по каким-то причинам.
Asterisk 1.8