Симуляция SIP-вызова
Давно не занимался Asterisk и SIP в целом, но на днях возникла задача сразу и по настройке Asterisk и Cisco для совместной работы. После конфигурирования обоих систем я потерпел фиаско на первом же тестировании. Вся проблема оказалась в диалплане Asterisk (но что можно там настроить не так?). Так как тестирование производится с перерывом в обслуживании основной системы, то возникла необходимость симулировать SIP-вызовы от Cisco в Asterisk, чтобы к моменту тестирования уже иметь по крайней мере рабочий диалплан и пытаться решать проблемы не связанные с неверной маршрутизацией.
В свое время был найден прекрасный инструмент sipp, который есть в поставке популярных Linux дистрибутивов. В Debian/Ubuntu это пакет sip-tester
, в CentOS/Fedora это пакет sipp
. Про sipp
имеется куча записей в интернете, эта лишь для себя с решением одной конкретной задачи.
Использовать его в качестве инструмента для тестирования диалплана никогда не приходилось. У проекта отличнейшая документация, но чтобы достичь результата необходимо хорошо понимать как работает SIP (какие пакеты отправлять, какие пакеты ожидать).
Далее приведен пример конфигурационного файла, который эмулирует вызов со стороны Cisco в Asterisk(согласно нумерации, которую Asterisk должен принимать и обрабатывать). Идет вызов с номера 80123456789
(по сути не важно с какого номера) на номер 4957390300
.
Далее для симуляции вызова запускаем следующую команду:
sipp -r 1 10.128.2.9:5060 -sf /path/to/cisco-to-asterisk.xml -i 10.128.2.9:54321 -m 1 -d 10000
-r 1
- один вызов за раз10.128.2.9:5060
- адрес сервера Asterisk, куда отправляется вызов-sf /path/to/cisco-to-asterisk.xml
- путь к XML-файлу, который описывает поведение-i 10.128.2.9:54321
- адрес к которому привязываться и начинать отправлять вызов-m 1
- количество попыток, после которого завершать выполнение-d 10000
- delay, время действия, в данном случае означает, что после удачного ответа со второй стороны завершить вызов через 10 секунд
Теперь подключаемся к консоли Asterisk и проверяем настройки диалплана :-)