Asterisk 从分机发起呼叫

Asterisk 从分机发起呼叫,asterisk,pbx,Asterisk,Pbx,是否可以从分机发起呼叫?我的扩展名如下所示: [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

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

[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很陌生。

你想做的事情可能会因为拨号计划而变得相当混乱。试着做以下几点:

[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()
Channel: Local/s@call_read_text
Context: read_text
Extension: s
Priority: 1
  • 开始之前不要接电话
  • g
    如果呼叫未被接听,将在拨号计划中继续,并呼叫下一分机
  • G()
    如果呼叫被接听,将跳转到
    读取文本s,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()
Channel: Local/s@call_read_text
Context: read_text
Extension: s
Priority: 1
此处有更多待命文件:。在调用文件中使用
Set:foo=bar
来设置
${text}