2011-11-02 87 views
2

可以從分機發起呼叫嗎?我的擴展如下所示:從分機發起呼叫

[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的答案,它起着文字和掛斷,如果沒有人回答它繼續撥打 我試着撥打電話文件,但它需要有些頻道需要設置,我試圖使用本地,但沒有成功。 我也發現有隊列,但無法找到一種方法來啓動調用來自調用文件的隊列。星號非常新。

回答

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/[email protected]_read_text 
Context: read_text 
Extension: s 
Priority: 1 

更多關於此調用文件:http://www.voip-info.org/wiki/view/Asterisk+auto-dial+out。在通話文件中使用Set: foo=bar設置${text}