LINUX.ORG.RU
ФорумAdmin

Asterisk, вопрос по extensions.conf

 


0

1

Здравствуйте.

Допустим у меня есть строка:

exten => 000,1,Dial(SIP/111)

Я хочу сделать в следующей строке нечто подобное:

exten => 000,2,System(присвоить имени некоторого файла значение 111)

Может кто знает, как это сделать?

Читай про Asterisk AGI, либо: exten => 000,2,System(mv some_file 111)

anonymous
()
Ответ на: комментарий от petav

Похоже я не совсем точно выразился. Имел в виду, что некоему файлу надо присвоить значение сипа, что прописан в скобках в первом exten.

При этом первая строка должна остаться как есть.

Может засунуть это значение в какую-то переменную и как-то передать?

ExoGenesis
() автор топика

exten => 000,1,Dial(SIP/111)
...
exten => h,1,System(mv some_file ${DIALEDPEERNUMBER})

Вообще из контекста непонятно когда должен создаваться файл и зачем он нужен.

Alternating_Current
()
Ответ на: комментарий от ExoGenesis

Да, совсем не понятно. Вы набираете номер «000» станция вызывает номер «111», по Вашему диалплану ни чего динамического. Откуда берется «111», там же его надо взять и для второй части диалплана. Предположу

exten => 000,1,Set(MYVARIABLE=111)
exten => 000,2,System(mv имя-файла ${MYVARIABLE})
petav ★★★★★
()
Ответ на: комментарий от petav

Данная запись написана для примера.

Файл создается когда работает микс монитор, но он создается с кривым именем, ибо входящий звонок бегает по внутренним номерам и в итоге, когда трубку берут, имя файла получается - «внешний входящий-внешний принимающий» а надо во второй части записать вместо внешнего принимающего внутренний, с которого конкретно ответили. Желательно совсем не прибегая к макросам.

ExoGenesis
() автор топика
Ответ на: комментарий от petav

[incoming]

exten => 8495*******,1,Answer()

exten => 8495*******,2,Set(fname=${STRFTIME(${EPOCH},,%Y/%m/%d/%H.%M)}-${CALLERID(number)}-${EXTEN})

exten => 8495*******,3,MixMonitor(/var/spool/asterisk/monitor/in/${fname}.wav)

exten => 8495*******,4,Dial(SIP/111,6,tTm(default))

exten => 8495*******,n,Dial(SIP/112,6,tTm(default))

exten => 8495*******,n,Dial(SIP/113,6,tTm(default))

exten => 8495*******,n,Dial(SIP/114,6,tTm(default))

exten => 8495*******,n,Dial(SIP/115,6,tTm(default))

exten => 8495*******,n,Dial(SIP/111,,tTm(default))

ExoGenesis
() автор топика
Ответ на: комментарий от ExoGenesis

По конкретному случаю, в команду Dial надо вставить макрос и передавать ему два параметра:

  • первый /var/spool/asterisk/monitor/in/${fname}.wav;
  • второй имя нового файла

В макросе делать переименование файла.

Можно макрос использовать и в MixMonitor, но тогда встает проблема Ваших «111» и т.д.

petav ★★★★★
()
Последнее исправление: petav (всего исправлений: 1)
Ответ на: комментарий от petav

А поподробнее можно?)

Как должен выглядеть макрос? Во все диалы вставлять(их там много же)? Нельзя ли без макросов обойтись? Как передать первый параметр макросу?

Спасибо.)

ExoGenesis
() автор топика
Ответ на: комментарий от ExoGenesis

А поподробнее можно?)

Учитывая нижеследующие вопросы в этом комментарии это легче сразу написать Вам функционал, на что лень отвлекаться, прямо скажу. Направление дано, ищите, задавайте конкретные вопросы.

petav ★★★★★
()
Ответ на: комментарий от petav

Для начала:

Микс монитор работает пока звонок не оборвется, следовательно файл закрыт для перезаписи, разве в этом случае не имеет смысл начинать манипуляции после того, как отработают все строки?

ExoGenesis
() автор топика
Ответ на: комментарий от ExoGenesis

Книгу по астериску иди читай.

У MixMonitor помимо имени файла, есть еще параметр имя скрипта, который вызовется после завершения записи этим скриптом и надо будет переименовать.

Yur4eg ★★
()
Ответ на: комментарий от ExoGenesis

Ты мой вариант то проверил? h-экстеншн и переменная ${DIALEDPEERNUMBER}. Переименуй файл после окончания разговора, вместо ${EXTEN} впиши ${DIALEDPEERNUMBER}. Другое дело, если трубку вообще никто не взял, тогда надо еще ${DIALSTATUS} отслеживать.

Alternating_Current
()
Ответ на: комментарий от Alternating_Current

Здравствуйте, попробовал ваш вариант. Пример такой:

exten => 8495*******,1,Answer()

exten => 8495*******,2,Set(fname=${STRFTIME(${EPOCH},,%Y/%m/%d/%H.%M)}-${CALLERID(number)}-${EXTEN})

exten => 8495*******,3,MixMonitor(/var/spool/asterisk/monitor/in/test/${fname}.wav)

exten => 8495*******,4,Dial(SIP/777,6,tTm(default))

exten => 8495*******,n,Dial(SIP/000,6,tTm(default))

exten => h,1,System(mv /var/spool/asterisk/monitor/in/test/${fname}.wav /var/spool/asterisk/monitor/in/test/${STRFTIME(${EPOCH},,%H.%M)}-${CALLERID(number)}-${DIALEDPEERNUMBER}.wav)

Но логи звонка выглядят так (приведу только работу с последней строкой)

 — Executing [h@incoming:1] System(«SIP/8495*******-0000af5b», «mv /var/spool/asterisk/monitor/in/test/2015/05/13/11.45-7926*******-8495*******.wav /var/spool/asterisk/monitor/in/test/11.45-7926*******-000.wav») in new stack

== Spawn extension (incoming, 8495*******, 5) exited non-zero on 'SIP/8495*******-0000af5b'

== MixMonitor close filestream

== End MixMonitor Recording SIP/8495*******-0000af5b

Судя по всему файл перезаписывается и делает это как надо, но миксмонитор заканчивает работу после этой строки и перезаписывает обратно(( Может я сделал что-то не так?

ExoGenesis
() автор топика
Ответ на: комментарий от Alternating_Current

Вызвать StopMixMonitor() перед System() пробовал, не сработало. Буду читать насчет <command>.

ExoGenesis
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.