Инициировать вызов с добавочного номера

#asterisk #pbx

#asterisk #АТС

Вопрос:

Можно ли инициировать вызов с добавочного номера? Мое расширение выглядит следующим образом:

 [read_text]
    exten => s,1,Answer( )
    exten => s,n,Dial(SIP/1,G(99))
    exten => s,n,Dial(SIP/2,G(99))
    exten => s,n,Goto(1)
    exten => s,100,System(echo '${text}' | /usr/bin/espeak  --stdout |sox -t  wav - -r 8000  /tmp/voice.wav)
    exten => s,n,Playback(/tmp/voice)
    exten => s,n,System(rm /tmp/voice.wav)
    exten => s,n,Hangup( )
 

Поэтому, если отвечает SIP / 1 или SIP / 2, он воспроизводит текст и зависает, если никто не отвечает, он продолжает набирать номер
Я пытался создать файл вызова, но для этого требуется настроить какой-то канал, я пытался использовать локальный, но безуспешно.
Я также обнаружил, что существуют очереди, но не могу найти способ инициировать вызов очереди из файла вызова. Я очень новичок в asterisk.

Ответ №1:

То, что вы пытаетесь сделать, может стать довольно запутанным из диалплана. Попробуйте что-нибудь в этом роде:

 [call_read_text]
exten => s,1,Dial(SIP/1,gG(read_text,s,1))
exten => s,n,Dial(SIP/2,gG(read_text,s,1))
exten => s,n,Goto(1)

[read_text]
exten => s,1,System(echo '${text}' | /usr/bin/espeak  --stdout |sox -t  wav - -r 8000  /tmp/voice.wav)
exten => s,n,Playback(/tmp/voice)
exten => s,n,System(rm /tmp/voice.wav)
exten => s,n,Hangup()
 
  • Не отвечайте на вызов до начала!
  • g если на вызов не будет ответа, вызовите следующий добавочный номер
  • G() перейдет к read_text,s,1 , если на вызов будет дан ответ, и завершит поиск
  • Вы можете запустить все это с помощью файла вызова, соединив первый контекст со вторым (это произойдет при ответе).

Что-то в этом роде:

 Channel: Local/s@call_read_text
Context: read_text
Extension: s
Priority: 1
 

Подробнее о файлах вызовов здесь: http://www.voip-info.org/wiki/view/Asterisk автоматический набор выход. Используйте Set: foo=bar в файле вызова для установки ${text}