2011-09-19 79 views
1

找不到具體的答案。我是星號和AMI的新手。我需要使用星號自動生成呼叫並將參數傳遞給AGI程序。使用呼叫文件似乎首先生成不需要的呼叫。那麼,如何使用星號AMI API(PHP)通過傳遞所有參數來執行帶有AGI的撥號方案?所以,AGI將接管並接聽電話。如何通過星號的AMI API執行撥號方案?

回答

1

我覺得在你的情況下,使用調用文件實際上會更簡單。原因如下:

  1. AMI要求您編寫聯網代碼,如果您是初學者,則構建簡單文本文件(Call Files)會更加棘手。
  2. 呼叫文件允許您將變量傳遞給您可以在撥號方案代碼中使用的星號。
  3. 呼叫文件是非常簡單。

下面是一個使用調用文件的簡單方法的完整示例。我盡力在相關評論中解釋它。首先,我們假設你有一些使用變量的dialplan代碼,並且調用一個AGI腳本(這是我根據你的問題假設你正在做的事)。這意味着你必須在你的extensions.conf文件中的代碼看起來是這樣的:

[test_stuff] 
exten => s,1,NoOp(starting test!) 
exten => s,n,NoOp(my variable's value is: ${somevar}) 
exten => s,n,NoOp(my other variable's value is: ${some_other_var}) 
exten => s,n,AGI(/path/to/my/script.sh,${somevar}) 
exten => s,n,NoOp(i just ran an AGI script and passed it a command line argument!) 
exten => s,n,Hangup() 

下面是一個調用文件,將:

  1. 需要一些臨時目錄(也許/tmp/)創建。
  2. 保存後,您可以將其移動到/var/spool/asterisk/outgoing/(例如:mv /tmp/blah.call /var/spool/asterisk/outgoing/)來運行。
  3. 呼叫文件將立即撥出電話號碼818-222-3333。
  4. 一旦在818-222-3333的人拿起電話,Asterisk會立即開始執行你的[test_stuff]撥號方案的代碼,並且將有變量給它提供您的通話文件中設置:

    頻道: SIP/trunkname/18182223333

    語境:test_stuff

    擴展:■

    優先級:1

    套裝:使mevar = hithere

    設置:some_other_var =活泉

希望幫助!

+0

謝謝rdegges。您看到,生成的呼叫來自訂閱者的帳戶。所以,AGI會首先檢查他/她是否有足夠的積分來撥打電話。然後開始撥號。這就是爲什麼呼叫文件在這裏沒有用,因爲它首先開始撥號。 – Luchman

0

你的問題可以通過當地渠道的幫助,例如

在調用文件使用Local/[email protected]_stuff作爲通道,而使用下面的撥號方案

[test_stuff] 
exten => _X.,1,NoOp(starting test!) 
exten => _X.,n,Set(phone=${EXTEN}) 
exten => _X.,n,AGI(/path/to/my/billing,${phone},${other_variables_account_etc..}) 
exten => _X.,n,Dial(SIP/trunkName/${phone}) 

得到解決,您可以使用此方法既接口AMI或。通話文件