Как перехватить трафик AMI и AGI от Asterisk с помощью WireShark в текстовом формате?
Я занимаюсь разработкой решения для телефонии на основе Asterisk (наиболее популярного решения PBX с открытым исходным кодом), и внедряю свою логику в ее абонентские группы, используя протокол AMI, и слушаю события Asterisk, используя AGI.
Прямо сейчас мне нужно управлять передачей с участием в моем приложении (не слепой передачей), и для этого мне действительно нужно регистрировать трафик AMI и AGI в текстовом формате где-нибудь, чтобы я мог видеть, что происходит позади сцены.
Я подумал о WireShark, поскольку это самый мощный инструмент захвата трафика, но я не могу заставить его работать. Я не знаю, какой порт для захвата (AMI работает на порту 5038 на стороне звездочки, но мне нужно использовать WireShark на моем сервере приложений C#, и я не знаю, какой порт занят на этой стороне). Я не могу создать фильтр для захвата событий, которые связаны только с Asterisk.
Я также не знаю, как сделать так, чтобы WireShark регистрировал трафик в текстовом формате, а не отображал те двоичные данные (возможно, шестнадцатеричные), которые вообще не читаются человеком.
Я знаю, что протокол AMI настолько прост и, как HTTP, это протокол обмена текстовыми сообщениями. Поэтому я думаю, что я должен видеть текстовый журнал этого.
У кого-нибудь есть идеи для этого?
1 ответ
Вы не можете прослушивать события звездочки, используя AGI. AGI является интерфейсом CONTROL, на него не отправляются события. Все события проходят через AMI.
Вы можете использовать tcpdump на сервере звездочек (сторона linux), чтобы увидеть сообщения AMI:
tcpdump -i eth0 -nqtttt -s 0 -A '((src port 5038) or (dst port 5038))'
Вы не можете захватить трафик AGI, если это не FastAGI. Для получения информации об аги сделайте:
asterisk -r
agi set debug on