AGI в контейнере Docker не получает ввод DTMF

Я пишу приложение, используя Asterisk-Java. Он предназначен для работы на сервере, на котором также работает Asterisk. Все идет нормально.

Мое приложение, которое инициирует вызовы (используя AMI) и управляет пользовательским вводом (используя FastAGI от Asterisk-Java и встроенный AgiServer) отлично работает как на моем сервере разработки, так и на рабочем сервере.

В целях развертывания меня теперь просят создать контейнер Docker, который будет упаковывать Asterisk и мое приложение, чтобы его можно было легко развернуть в других местах без необходимости установки и настройки.

Дело в том, что мое приложение не работает так же, как в контейнере Docker: на серверах разработки / производства, используя getData функция, я могу получить код DTMF; на контейнере Docker, getData похоже, никогда не получает данные DTMF от Asterisk (я могу передать файл в потоковом режиме, но функция в конечном итоге отключается, что означает, что она ничего не получила).

Сначала я подумал о неэкспонированном порте, но, поскольку эта проблема связи, по-видимому, существует между сервером AGI и Asterisk, которые работают в контейнере, мне трудно в это поверить.

У меня нет другой идеи, пожалуйста, предложите.

1 ответ

Проверьте параметр dtmfmode для вашего SIP-Peer...

Если вы используете RFC2833 (DTMF через RTP), причиной могут быть неэкспонированные медиа порты.

Вы можете попытаться оптимизировать настройки вашего порта (может быть много портов!). Или попробуйте использовать DMTF через SIP-Info в качестве альтернативы.

Но это не решило бы никаких проблем со СМИ...

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