2014-01-31 24 views
4

這裏是撥號計劃星號,我怎麼能播放音頻文件

[testInComingCalls] 

exten => s,1,Answer 

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

我想只要有人接了電話播放音頻文件..

請給我一些想法如何調用一個php文件,發送輸入並根據輸出轉發呼叫。

回答

3

由於被叫方,而不是調用大部分Dial options行爲,你必須得到一個有點創意。與被叫方相比,對呼叫者做這樣的事情有點奇怪,但是,嘿,它是Asterisk:通常有辦法做任何你想做的事情。

一種方法是使用鮮爲人知(有點奇怪)的G選項。從文檔中引用:

如果應答呼叫,則將主叫方轉換爲指定優先級,並將被叫方轉換爲指定優先級加1。

  • 上下文
  • 訊號分配延長
  • 優先

基本上,ģ選項接受呼叫者/被叫信道和 - 代替橋接在一起 - 反彈兩者出到撥號方案。然後,您可以在將它們放入一個橋接器之前獲得一點創意來執行您的回放操作。下面的撥號方案應該工作(警告:我沒有測試過這一點,我坐在沙發上一臺筆記本電腦,但這應該讓你關閉):

[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() 
2

您想要播放來電者,來電者還是被叫者?

您可以使用M標誌撥號,在橋接之前在呼叫中運行宏,它在被調用方SIP/200000上運行。例如:

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

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

我想播放錄製的問候消息呼叫者,召集者。 –