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

История изменений [назад]

нажмите, чтобы скрыть/показать версии 1
изначальная версия
редактировать

спросил 2013-10-22 09:39:07 +0400

thunderamur Gravatar thunderamur

${DIALEDPEERNUMBER} в имени записанного файла

Хочу писать в имя файла, ответившего на вызов (в примере всего один, т.к. это тестовый план). В CDR ответившего удается записать, а вот файл начинает писаться когда ещё не известно кто ответит. Выходит, что пишем не зная ещё конечное имя файла. После записи, файл нужно переименовать. Пробую сделать так. Срабатывает все, кроме System. В консоли видно, что команда отрабатывается и если скопировать её вывод в консоль системы, то файл переименовывается, т.е. команда в System передается верная, но, то ли файл ещё не создан в это время (пробовал добавлять sleep 5), то ли другая беда, хз.

[incoming-call-203013]
exten=>203013,1,Set(fname=${STRFTIME(${EPOCH},,%Y-%m-%d__%H-%M-%S)}__${CALLERID(number)}-${EXTEN})
    same=>n,Set(dfname=${path2rec}/203013/${fname})
    same=>n,Set(monopt=nice -n 19)
    same=>n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)
    same=>n,MixMonitor(${dfname}.wav,,oggenc -Qq0 ${dfname}.wav && rm -f ${dfname}.wav)
    same=>n,Dial(SIP/128,60,t)
    same=>n,Hangup
exten=>h,1,Set(CDR(dialedpeernumber)=${DIALEDPEERNUMBER})
    same=>n,Set(CDR(record)=${fname}_${DIALEDPEERNUMBER}.ogg)
    same=>n,Set(CDR(userfield)=in)
    same=>n,System(mv ${dfname}.ogg ${dfname}_${DIALEDPEERNUMBER}.ogg)

${DIALEDPEERNUMBER} в имени записанного файла

Хочу писать в имя файла, ответившего на вызов (в примере всего один, т.к. это тестовый план). В CDR ответившего удается записать, а вот файл начинает писаться когда ещё не известно кто ответит. Выходит, что пишем не зная ещё конечное имя файла. После записи, файл нужно переименовать. Пробую сделать так. Срабатывает все, кроме System. В консоли видно, что команда отрабатывается и если скопировать её вывод в консоль системы, то файл переименовывается, т.е. команда в System передается верная, но, то ли файл ещё не создан в это время (пробовал добавлять sleep 5), то ли другая беда, хз.

[incoming-call-203013]
exten=>203013,1,Set(fname=${STRFTIME(${EPOCH},,%Y-%m-%d__%H-%M-%S)}__${CALLERID(number)}-${EXTEN})
    same=>n,Set(dfname=${path2rec}/203013/${fname})
    same=>n,Set(monopt=nice -n 19)
    same=>n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)
    same=>n,MixMonitor(${dfname}.wav,,oggenc -Qq0 ${dfname}.wav && rm -f ${dfname}.wav)
    same=>n,Dial(SIP/128,60,t)
    same=>n,Hangup
exten=>h,1,Set(CDR(dialedpeernumber)=${DIALEDPEERNUMBER})
    same=>n,Set(CDR(record)=${fname}_${DIALEDPEERNUMBER}.ogg)
    same=>n,Set(CDR(userfield)=in)
    same=>n,System(mv ${dfname}.ogg ${dfname}_${DIALEDPEERNUMBER}.ogg)

Вот так удалось дописать ответившего в имя файла, здесь диалплан другого офиса, но они отличаются только номерами телефонов.

[incoming-call-rabotaem]
exten=>s,1,Set(fname=${STRFTIME(${EPOCH},,%Y-%m-%d__%H-%M-%S)}__${CALLERID(number)}-${EXTEN})
    same=>n,Set(dfname=${path2rec}/${fname})
    same=>n,Set(monopt=nice -n 19)
    same=>n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)
    same=>n,MixMonitor(${dfname}.wav)
    same=>n,Dial(SIP/501&SIP/502,60,t)
    same=>n,Hangup
exten=>h,1,Set(CDR(dialedpeernumber)=${DIALEDPEERNUMBER})
    same=>n,Set(fname2=${fname}_${DIALEDPEERNUMBER})
    same=>n,Set(dfname2=${path2rec}/${fname2})
    same=>n,Set(CDR(record)=${fname2}.ogg)
    same=>n,Set(CDR(userfield)=in)
    same=>n,System(oggenc ${dfname}.wav -Q -q 0 -o ${dfname2}.ogg && rm -f ${dfname}.wav)

${DIALEDPEERNUMBER} в имени записанного файла

Хочу писать в имя файла, ответившего на вызов (в примере всего один, т.к. это тестовый план). В CDR ответившего удается записать, а вот файл начинает писаться когда ещё не известно кто ответит. Выходит, что пишем не зная ещё конечное имя файла. После записи, файл нужно переименовать. Пробую сделать так. Срабатывает все, кроме System. В консоли видно, что команда отрабатывается и если скопировать её вывод в консоль системы, то файл переименовывается, т.е. команда в System передается верная, но, то ли файл ещё не создан в это время (пробовал добавлять sleep 5), то ли другая беда, хз.

[incoming-call-203013]
exten=>203013,1,Set(fname=${STRFTIME(${EPOCH},,%Y-%m-%d__%H-%M-%S)}__${CALLERID(number)}-${EXTEN})
    same=>n,Set(dfname=${path2rec}/203013/${fname})
    same=>n,Set(monopt=nice -n 19)
    same=>n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)
    same=>n,MixMonitor(${dfname}.wav,,oggenc -Qq0 ${dfname}.wav && rm -f ${dfname}.wav)
    same=>n,Dial(SIP/128,60,t)
    same=>n,Hangup
exten=>h,1,Set(CDR(dialedpeernumber)=${DIALEDPEERNUMBER})
    same=>n,Set(CDR(record)=${fname}_${DIALEDPEERNUMBER}.ogg)
    same=>n,Set(CDR(userfield)=in)
    same=>n,System(mv ${dfname}.ogg ${dfname}_${DIALEDPEERNUMBER}.ogg)

====== РЕШЕНИЕ ======

Вот так удалось дописать ответившего в имя файла, здесь диалплан другого офиса, но они отличаются только номерами телефонов.

[incoming-call-rabotaem]
exten=>s,1,Set(fname=${STRFTIME(${EPOCH},,%Y-%m-%d__%H-%M-%S)}__${CALLERID(number)}-${EXTEN})
    same=>n,Set(dfname=${path2rec}/${fname})
    same=>n,Set(monopt=nice -n 19)
    same=>n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)
    same=>n,MixMonitor(${dfname}.wav)
    same=>n,Dial(SIP/501&SIP/502,60,t)
    same=>n,Hangup
exten=>h,1,Set(CDR(dialedpeernumber)=${DIALEDPEERNUMBER})
    same=>n,Set(fname2=${fname}_${DIALEDPEERNUMBER})
    same=>n,Set(dfname2=${path2rec}/${fname2})
    same=>n,Set(CDR(record)=${fname2}.ogg)
    same=>n,Set(CDR(userfield)=in)
    same=>n,System(oggenc ${dfname}.wav -Q -q 0 -o ${dfname2}.ogg && rm -f ${dfname}.wav)

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