2013-04-27 108 views
1

我正在開發一個基於Asterisk(最受歡迎的開源PBX解決方案)的電話解決方案,並使用AMI協議將我的邏輯注入其撥號計劃中,並使用AGI收聽Asterisk的事件。如何使用WireShark以文本格式捕獲Asterisk的AMI和AGI流量?

現在我需要管理我的應用程序出席轉移(不盲轉),並對於這一點,我真的需要登錄AMI和AGI的流量以文本格式的地方,所以我可以看到幕後發生了什麼。

我想到WireShark,因爲它是那裏最強大的流量捕獲工具,但我無法使它工作。我不知道要捕獲哪個端口(AMI在星號端的端口5038上工作,但我需要在我的C#應用​​程序服務器中使用WireShark,並且我不知道在哪一端忙)。我無法創建捕獲僅與Asterisk相關的事件的過濾器。

我也不知道如何以文本格式製作WireShark日誌流量,而不是顯示那些根本不可讀的二進制數據(可能是十六進制數據)。

我知道AMI協議非常簡單,就像HTTP一樣,它是基於文本的消息協議。因此,我想我應該能夠看到它的文本日誌。

任何人有任何想法嗎?

回答

3

使用AGI不能監聽星號事件。 AGI是CONTROL界面,沒有事件發送給它。所有事件都通過AMI進行。

您可以使用星號服務器(Linux端)的tcpdump看到AMI消息:

tcpdump -i eth0 -nqtttt -s 0 -A '((src port 5038) or (dst port 5038))' 

您不能捕獲AGI通信,除非它是FastAGI。獲得agi信息做:

asterisk -r 
agi set debug on