3

是否可以从分机发起呼叫?我的扩展如下所示:

[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 应答,它会播放文本并挂断,如果没有人应答,它会继续拨号 我还发现有队列,但找不到从调用文件发起对队列的调用的方法。我对星号很陌生。

4

1 回答 1

3

您尝试做的事情可能会从拨号计划中变得非常混乱。尝试以下方式:

[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+auto-dial+out 。Set: foo=bar在调用文件中使用来设置${text}

于 2011-11-06T10:16:30.143 回答