2013-10-17 92 views
0

我有Asterisk 11.4.0,一個遠程雲服務器和一個Node.js服務器作爲中間件。當任何帳戶嘗試撥打電話時,我需要從遠程服務器獲得有關使用哪條外線的信息(或者根本不需要進行此呼叫!)。這些數據不能直接在Asterisk中計算。只有在雲的響應之後,呼叫必須進行。我的行動隊列如下所示:星號:使用AMI將一個頻道連接到另一個頻道

從中間服務器上用AMI從Asterisk獲取呼叫初始化;

發送信息給雲進行分析;

繼續使用AMI(或根本不處理)傳入響應外部線路的呼叫;

問題是,我不知道該怎麼做。我認爲,當有人試圖撥打電話時,我可以在dialplan選項中使用WaitExten,並使用中間服務器捕獲Newchannel事件,並將所有信息發送到雲端。當它響應時,我可以使用現有的等待線路發起呼叫。

你能告訴我,如何將通道附加到Originate操作,當我將其作爲「通道」參數傳遞時,Asterisk不會將此行與被稱爲exten連接起來。

回答

1

您需要使用FastAGI或AGI(fastagi更快但略微複雜)來控制您的頻道的通話流。

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

在AGI你可以調用信息,決定在何處放置它,使用撥號命令,使通話後。通話將自動橋接。

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

您也可以使用橋AMI行動來彌補2個通道,但是這不是它如何已經被創建。正確的方法 - 通過撥號。

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

您也可以在撥號規則捲曲功能用來請求通過HTTP幫助外部API。這將具有相同的成本fastagi,但因爲你喜歡的Node.js

如果使用發源於AMI命令,你可以通過

"Set" => "variablename=somethign" 

PS添加到命令的任何變量實際上幾乎能爲你的更簡單任何東西都可以在星號內計算出來,當然如果你對此有足夠的瞭解。星號有充分的語言(意味着你可以描述任何撥號方案的算法),有函數請求數據庫信息等

免責聲明:我推薦閱讀星號的書,如「Asterisk的電話的未來」 創建任何設計應用程序使用星號pbx。如果您忽略此警告,則應用程序可能會變得不穩定,並且在您投入生產後需要進行完全重寫。

+0

非常感謝!傳遞變量的想法很好,而且這本書比我讀過的關於Asterisk的所有內容都要好。 – JustLogin

相關問題