星号,我怎么能播放音频文件

时间:2014-01-31 05:53:58

标签: asterisk pbx

这是拨号计划

[testInComingCalls]

exten => s,1,Answer

exten => 30953025,1,Dial(SIP/20000,20)

我想在有人接听电话后立即播放音频文件。

请给我一些想法如何调用一个php文件,发送输入并根据输出转发。

3 个答案:

答案 0 :(得分:4)

由于大多数Dial options会对被叫方起作用,而不是来电者,因此您必须获得一点创意。与被叫方相比,向呼叫者做这些事情有点奇怪,但是嘿,这是Asterisk:通常有办法做任何你想做的事。

一种方法是使用鲜为人知的(有点奇怪的) G 选项。引自文档:

  

如果呼叫已应答,则将主叫方转移到指定的优先级,并将被叫方转移到指定的优先级加一。

     
      
  • 上下文
  •   
  • 讯号分配延长
  •   
  • 优先
  •   

基本上, G 选项接受来电者/被叫频道,而不是将它们连接在一起 - 将它们反弹到拨号方案。然后,您可以在将它们放在Bridge中之前获得一些创意来执行播放操作。下面的Dialplan应该可以工作(警告:我没有测试过这个,我坐在沙发上的笔记本电脑上,但这应该让你接近):

[default]

exten => 1000,1,NoOp()
 same => n,Dial(SIP/alice,,G(default^bridge_and_play^1))
 same => n,Hangup()

exten => bridge_and_play,1,Goto(jump_caller,1)
 same => n,Goto(jump_called,1)
 same => n,Hangup()

exten => jump_caller,1,NoOp()
 same => n,Answer()
 same => n,Playback(tt-monkeys)
 same => n,Bridge(${bridge_this})
 same => n,Hangup()

exten => jump_called,1,NoOp()
 same => n,Set(MASTER_CHANNEL(bridge_this)=${CHANNEL})
 same => n,Wait(1000)
 same => n,Hangup()

答案 1 :(得分:2)

您想将音频播放给来电者或来电者?

您可以使用M标志拨号在桥接之前在呼叫上运行宏,它在被叫方SIP / 200000上运行。例如:

[testInComingCalls]
exten => 30953025,1,Dial(SIP/20000,20,M(onanswer))

[macro-onanswer]
exten => s,1,Playback(hello-world)

答案 2 :(得分:0)

您需要阅读有关AGI界面的信息,允许使用php通过phpagi来控制拨号方案。

http://www.voip-info.org/wiki/view/Asterisk+AGI

对于播放文件,请使用STREAM FILE agi命令(PHP中的$ agi-> stream_file)

相关问题