Как AGI должен обрабатывать запрос на зависание

Недавно мы обновили нашу версию asterisk с версии 1.4.26.1 -> 13.23.1. И из изменений, которые мы заметили, было то, что после того, как AMI закрыл свое соединение, он использовал для ответа на AGI "зависание", а затем закрывает соединение tcp. Это поведение изменилось, и теперь он получает "HangupRequest" и оставляет соединение открытым. Судя по журналам Asterisk, он также постоянно пытается уничтожить канал. Ожидает ли HangupRequest конкретного ответа от AGI, чтобы завершить зависание?

Обходной путь, который мы используем в настоящее время, заключается в добавлении Set(AGIEXITONHANGUP=yes) в рамках плана набора это возвращает поведение к способу, который использовался для выполнения зависания, тогда как кажется, что они должны быть более изящным способом обработки запросов на зависание, для которых не требуется этот параметр в схеме набора номеров.

1 ответ

Решение

AMI получает запрос на зависание после того, как звездочка запросила зависание. https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+ManagerEvent_HangupRequest В этом случае он запрашивал HANGUP AGI, мы нашли 2 возможных способа обойти это. Первое было добавить Set(AGIEXITONHANGUP=yes) для плана набора это означает, что когда Asterisk получает HANGUP, он закрывает соединение с AGI. Вторым было сделать AGI, когда он получает HANGUP, чтобы очистить свои соединения с Asterisk, таким образом выполняя зависание.

Другие вопросы по тегам