Docker容器中的AGI不接收DTMF输入

问题描述 投票:0回答:1

我正在使用 Asterisk-Java 编写应用程序。它被设计为在也运行 Asterisk 的服务器上运行。到目前为止,一切都很好。

我的应用程序发起呼叫(使用 AMI)并管理用户输入(使用 Asterisk-Java 的 FastAGI 和嵌入式

AgiServer
)在我的开发服务器和生产服务器上都运行良好。

出于部署目的,我现在被要求创建一个 Docker 容器来打包 Asterisk 和我的应用程序,以便它可以轻松部署到其他地方,而无需经过安装和配置。

问题是,我的应用程序在 Docker 容器中的行为方式不同:在开发/生产服务器上,使用

getData
函数,我可以获得 DTMF 代码;在 Docker 容器上,
getData
似乎从未收到来自 Asterisk 的 DTMF 数据(我可以流式传输文件,但函数最终超时,这意味着它没有收到任何东西)。

我首先想到的是一个未暴露的端口,但由于这个通信问题似乎是在 AGI Server 和 Asterisk 之间,它们都在容器中运行,我觉得很难相信。

我没有别的想法,请建议。

docker asterisk agi asterisk-java
1个回答
0
投票

检查 SIP 对等点的 dtmfmode 参数...

如果您使用的是 RFC2833(通过 RTP 的 DTMF),未公开的媒体端口很可能就是原因。

您可以尝试优化您的端口设置(可能是很多端口!)。 或者尝试通过 SIP-Info 使用 DMTF 作为替代方案。

但这不会解决任何媒体问题...

© www.soinside.com 2019 - 2024. All rights reserved.