2012-09-21 23 views
2

我的目標:客戶端(SIP電話,我使用3CX電話)撥號到星號服務器,星號然後連接外部關係數據庫(不與星號服務器位於同一地點),如果數據庫響應的東西,星號服務器播放語音文件(預定義的.gsm文件)到響應客戶端。如何整合Asterisk服務器與外部關係數據庫,如mysql?

我已經有了:我已經在VirtualBox中將AsteriskNow安裝爲星號服務器,客戶端使用軟電話連接SIP通道中的Asterisk服務器。當客戶端撥號至星號服務器時,服務器可以執行撥號方案。

我的問題:如果我想要星號服務器建立連接到外部數據庫,例如MySQL。並訪問請求數據,我需要讓dialplan調用AGI腳本要做到這一點嗎?如果是這樣,在PHP中使用創建AGI腳本更容易實現?如果沒有,連接mysql應該怎麼做?使用ODBC?

是否可以使用dialplan在不使用其他編程語言的情況下操縱星號服務器中的數據?但是,似乎dialplan沒有像其他編程語言一樣的完整語法支持?

回答

3

您可以在星號上使用ODBC。即使您可以將星號連接到Microsoft SQL Server。 如果要將日誌數據保存爲星號,可以使用CELCDR或者您可以通過AMI接收事件。但如果你想強制星號做一個特殊的任務(動態),最好使用AGI。我希望這會有所幫助。

1

星號可以使用MySQL或其他數據庫存儲帳單信息,但對於你的任務 - 播放各種副文件,你應該使用AGI。 AGI非常靈活,因爲您可以使用您想要的各種語言和庫。我爲我的AGI腳本使用Python,但其他人使用C,Perl,Java。您可以在Asterisk wiki上找到這些語言的示例:http://www.voip-info.org/wiki/view/Asterisk+AGI

當然,從您的AGI程序中,您可以連接到數據庫或使用HTTP/SOAP/REST與其他軟件集成。

1

不,你不需要AGI腳本。

最簡單的方法是通過dialplan使用func_odbc(通過odbc用戶定義的sql函數)。

btw,diallplan是像任何其他編程語言一樣的完整語言。任何事情都可以通過dialplan來完成。但並非所有事情都有效,需要大量的經驗。

相關問題