First time here? Check out the FAQ!

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

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

0

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

спросил Oct 22 '13

thunderamur Gravatar thunderamur
444 70 12 39

обновил Oct 28 '13

2 Ответа

0

Делайте ваш System в exten => h,1,xxx

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

ответил Oct 22 '13

komrad123 Gravatar komrad123
3810 5 3 44

Comments

System уже там, или я неверное написал конфиг? same=>n после exten=>h

thunderamur (Oct 22 '13)edit
1

да что то не заметил h / n. есть подозрение что в момент система нету того .ogg еще. Конвертацию из wav в ogg тоже в h вытащите.

komrad123 (Oct 22 '13)edit

Так и я про то пишу, что мб нет этого файла ещё, но попробовал ввести задержку sleep 5, не вышло и успокоился, однако, не пойму почему сразу не попробовал вынос в h - это помогло, спасибо!

Рабочий код в вопросе, т.к. в комментариях глючат спец. символы.

thunderamur (Oct 28 '13)edit
0

скорее всего файл не получается переименовать т/к он в это время занят (записью разговора). используйте exten => h

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

ответил Oct 22 '13

boffart Gravatar boffart flag of Russian Federation
61 3 2 5
http://www.telefon1c.ru/

Comments

Глянь мой диалплан, я уже пользуюсь exten=>h. Как раз для того, чтобы получить значение "кто ответил" и т.д. Или я где-то ошибся?

thunderamur (Oct 22 '13)edit

покажи лог звонка при

asterisk -rvvvvv

boffart (Oct 22 '13)edit

Ваш ответ

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 ленту новостей

Статистика

Задан: Oct 22 '13

Просмотрен: 1,807 раз

Обновлен: Oct 28 '13

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

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