2013-04-27 117 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