asterisk AMI介紹

Asterisk控制接口(AMI)允許管理客戶端程序連接到一個asterisk實例並且可以通過TCP/IP流發送命令或讀取事件。這在試圖跟蹤asterisk的狀態或其中的電話客戶端狀態時很有用,AMI說明了客戶端基於的一般(可能是動態的)規則。

一種簡單的"key: value"協議用於已連接的管理客戶端和asteriskPBX之間的信息傳遞。每行都用回車換行(\r\n)來結束。


協議特點:

在發送命令前,你必須建立一個連接。

在認證後,數據包任何時間都可以在兩個方向上互相傳輸。

數據包第一行爲"Action"時表明是由管理客戶端發送到asterisk,第一行爲"Event"或"Response"表明有asterisk發送到管理客戶端。數據包內各行順序可以變化,對數據包沒有影響。

回車換行由於區分每一行,空行(兩個連續回車換行)用於表明命令結束,Asterisk開始處理命令。


數據包類型:

數據包的類型通過一下幾種關鍵字來劃分

Action:一個由管理客戶端發送到Asterisk的數據包,請求執行特定的動作。只有有限的幾種動作供客戶端使用,每個動作是由Asterisk服務器上的模塊所決定的。一次只能執行一個動作,該動作數據包包含了動作名稱以及執行所必需的參數。

Response:Asterisk對管理客戶端動作的響應。

Event: 有關Asterisk核心或擴展模塊發生事件的信息。


建立管理連接和用戶身份驗證:

爲了與Asterisk進行管理通話,管理客戶端必須建立到Asterisk服務器偵聽端口(一般是5038)的TCP/IP連接,並使用登陸動作進行身份驗證。這就要求在Asterisk服務器上創建用戶賬戶,用戶賬戶在/etc/asterisk/manager.conf中配置。賬戶由允許登陸的主機,登錄密碼以及被授予的權限列表組成。

登錄和身份驗證的經理,你必須發送一個" 登錄 "行動,用您的用戶名和祕密(密碼作爲參數)。 Here is an example:下面是一個例子:

Action: login
Username: admin
Secret: secret


你還可以通過"Events: off"阻止事件數據包發送到你的連接。例如:

Action: login
Username: admin
Secret: secret
Events: off


動作數據包:

向Asterisk發送動作時,額外的關鍵字可以提供進一步的動作信息。例如,你可能希望指定號碼或通道的斷開。此外,如果您的操作會導致Asterisk來執行撥號規則中的條目,你可以傳遞變量給撥號規則。這與你傳遞關鍵字的方式是一樣的。

向Asterisk發送動作數據包時,按照以下格式:

Action: <action type><CRLF>
< Key 1>: <Value 1><CRLF>
< Key 2>: <Value 2><CRLF>
...
Variable: <Variable 1>=<Value 1><CRLF>
Variable: <Variable 2>=<Value 2><CRLF>
...
< CRLF>


管理動作( Action ):

通過CLI命令show manager commands的輸出結果就是管理動作列表。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章