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

Docker容器中的AGI未接收DTMF输入,docker,asterisk,agi,asterisk-java,Docker,Asterisk,Agi,Asterisk Java,我正在使用Asterisk Java编写一个应用程序。它被设计为在同样运行星号的服务器上运行。到目前为止,一切顺利 我的应用程序,它发起调用(使用AMI)并管理用户输入(使用Asterisk Java的FastAGI和嵌入式AgiServer),在我的开发服务器和生产服务器上都运行良好 出于部署目的,我现在被要求创建一个Docker容器,该容器将打包Asterisk和我的应用程序,以便可以轻松地将其部署到其他地方,而无需进行安装和配置 问题是,我的应用程序在Docker容器中的行为不同:在开发/

我正在使用Asterisk Java编写一个应用程序。它被设计为在同样运行星号的服务器上运行。到目前为止,一切顺利

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

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

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

我首先想到了一个未公开的端口,但由于这个通信问题似乎是AGI服务器和Asterisk之间的,两者都在容器中运行,我觉得很难相信


我没有其他想法,请建议

检查SIP对等机的dtmfmode参数

如果您使用的是RFC2833(通过RTP的DTMF),则未暴露的媒体端口很可能是原因

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

但这并不能解决任何媒体问题