如何使用WireShark以文本格式捕获Asterisk的AMI和AGI流量?

时间:2013-04-27 14:45:09

标签: asterisk wireshark ami agi asteriskami

我正在开发基于Asterisk(最流行的开源PBX解决方案)的电话解决方案,我使用AMI协议将其逻辑注入其拨号方案,并使用AGI收听Asterisk的事件。

现在我需要在我的应用程序中管理有人值守转移(不是盲转),为此,我确实需要记录AMI的流量和AGI在文本格式的某处,以便我可以看到幕后发生的事情。

我想到了WireShark,因为它是那里最强大的流量捕获工具,但我不能让它工作。我不知道要捕获哪个端口(AMI在星号端的端口5038上工作,但我需要在我的C#应用​​服务器中使用WireShark,而且我不知道这边的哪个端口正忙)。我无法创建用于捕获仅与Asterisk相关的事件的过滤器。

我也不知道如何以文本格式制作WireShark日志流量,而不是显示那些根本不可读的二进制数据(可能是十六进制数据)。

我知道AMI协议非常简单,就像HTTP一样,它是一种基于文本的消息传递协议。因此,我想我应该能够看到它的文本日志。

有人有任何想法吗?

1 个答案:

答案 0 :(得分:3)

您无法使用AGI收听星号事件。 AGI是CONTROL接口,没有事件发送给它。所有活动都通过AMI进行。

您可以在星号服务器(linux端)上使用tcpdump来查看AMI消息:

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

除非是FastAGI,否则无法捕获AGI流量。获取agi信息:

asterisk -r
agi set debug on