-1

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

我的应用程序,它发起调用(使用 AMI)并管理用户输入(使用 Asterisk-Java 的 FastAGI 和嵌入式AgiServer)在我的开发服务器和生产服务器上都运行良好。

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

问题是,我的应用程序在 Docker 容器中的行为方式不同:在开发/生产服务器上,使用该getData函数,我可以获得 DTMF 代码;在 Docker 容器上,getData似乎永远不会收到来自 Asterisk 的 DTMF 数据(我可以流式传输文件,但该函数最终会超时,这意味着它没有得到任何东西)。

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

我没有其他想法,请建议。

4

1 回答 1

0

查看 SIP 对等体的 dtmfmode 参数...

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

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

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

于 2018-08-15T14:01:20.983 回答