Инициировать звонок с внутреннего номера - PullRequest
2 голосов
/ 02 ноября 2011

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

[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 отвечает, он воспроизводит текст и зависает, если никто не отвечает, он продолжает набирать. Я пытался создать файл вызова, но для этого требуется настроить какой-либо канал, я пытался использовать Local, но безуспешно. Я также обнаружил, что есть очереди, но не могу найти способ инициировать вызов в очередь из файла вызовов. Я очень плохо знаком со звездочкой.

1 Ответ

2 голосов
/ 06 ноября 2011

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

[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/ просмотр / Звездочка + автоматический набор + из .Используйте Set: foo=bar в файле вызовов для установки ${text}

...