从分机发起呼叫

时间:2011-11-02 04:53:05

标签: 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  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 个答案:

答案 0 :(得分:2)

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

[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}