2015-04-07 95 views
1

我有一個Asterisk服務器在支付環境中工作得很好。現在,我需要將業務邏輯與Asterisk服務器分離以提高效率,並保護AGI腳本,原因很明顯。如何將現有的Asterisk AGI腳本轉換爲FASTAGI腳本

問題是,如何將現有的工作AGI腳本轉換爲FASTAGI腳本,或者如何從FASTAGI服務器調用現有的AGI腳本?

我有紅色的一些帖子在這個平臺上的答案,但沒有人清楚說明如何從頭開始做這件事。很高興能夠清楚地瞭解如何使用PHP實現這一目標。

回答

0

您可以使用xinetd。從每一個星號框中輸入您的撥號方案,調用AGI具有快速AGI參數,取代fastagi服務器的IP地址:

AGI(agi://192.168.1.100/) 

請確保您有在/etc/services類似:

agi    4573/tcp      # FAST AGI entry 

在FastAGI服務器:在一個名爲/etc/xinetd.d/agi的文件中(確保/etc/xinetd.conf正在從/etc/xinetd.d/加載模塊)有一個調用您的agi腳本的定義。

# description: agi service for PHP fastagi interaction 
service agi 
{ 
     socket_type = stream 
     user   = root 
     group  = nobody 
     server  = /path/to/agiLaunch.sh 
     wait   = no 
     protocol  = tcp 
     bind   = 127.0.0.1 
     disable  = no 
     per_source = UNLIMITED 
     instances = UNLIMITED 
     cps   = 1000 0 
} 

在你的AGI腳本,現在你可以只是做像往常一樣,通過讀取STDIN或STDOUT。

+0

好的,謝謝你的迴應。在這個平臺上的某個地方有紅色,並嘗試過它。所以,如果我已經說過10個AGI腳本已經工作了,那麼我該如何使用這種方法來使用這種方法調用所有的AGI腳本? – CEDOC

+0

您可以使用xinetd爲每個端口創建一個不同的端口。但!我可能會使用「網絡腳本」功能,例如如果你調用'AGI(agi:// hostname [:port] [/ script],args)'你放入'/ script'部分的內容將作爲一個通道變量'agi_network_script'傳遞給腳本。因此,使用網絡腳本來編寫一個處理10的哪個AGI腳本的腳本來處理它。另外,這本書「星號:電話的未來」使用xinetd和他們的fastagi例子來說明它的價值。 – dougBTV

+0

非常感謝dougBTV,你一直很樂於助人。您是否有任何想法可以進行身份​​驗證,以允許經過身份驗證的人員或用戶從他們的撥號計劃中調用FASTAGI腳本?我計劃將服務擴展到任何願意在其dialplan中使用AGI腳本的人。 – CEDOC