我正在开发基于Asterisk(最流行的开源PBX解决方案)的电话解决方案,我使用AMI协议将其逻辑注入其拨号方案,并使用AGI收听Asterisk的事件。
现在我需要在我的应用程序中管理有人值守转移(不是盲转),为此,我确实需要记录AMI的流量和AGI在文本格式的某处,以便我可以看到幕后发生的事情。
我想到了WireShark,因为它是那里最强大的流量捕获工具,但我不能让它工作。我不知道要捕获哪个端口(AMI在星号端的端口5038上工作,但我需要在我的C#应用服务器中使用WireShark,而且我不知道这边的哪个端口正忙)。我无法创建用于捕获仅与Asterisk相关的事件的过滤器。
我也不知道如何以文本格式制作WireShark日志流量,而不是显示那些根本不可读的二进制数据(可能是十六进制数据)。
我知道AMI协议非常简单,就像HTTP一样,它是一种基于文本的消息传递协议。因此,我想我应该能够看到它的文本日志。
有人有任何想法吗?
答案 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