从Freeswitch 1.2.9(1.2.9 + git〜20130506T233047Z〜7c88f35451)升级到Freeswitch 1.4.21(1.4.21-35〜64bit)之后,freeswitch在挂断通道后停止删除通道,并且当我们尝试执行手册uuid_kill
,它给了我们这个可爱的错误:
-ERR No such channel!
即使节目频道清楚地显示了该频道。从我见过的jira.freeswitch.com上的错误看来,这可能是代码问题。有关我们的环境/代码的更多信息:
我们有一个连接到客户端的python扭曲循环,因此客户端可以在服务器上运行命令,反之亦然。一旦扭曲的连接消失(客户端关闭/断开连接),通道也将被杀死,但是我们需要通道在此之前终止,因为我们每秒要接听大量呼叫,而当另一个被呼叫时,它们必须终止端已断开连接。我们无法在每次通话结束后关闭并重新打开客户端,也无法重新连接,因为这会占用太多时间,从而使我们无法使用软件。
同样,仅当我们更改为使用apt-get而不是直接从源代码安装freeswitch服务器时,才开始发生此错误。这使我们可以更快地启动和运行新服务器,而我们不希望花费额外的时间来使用以前的方法。请告诉我您是否想要查看任何代码,并要求您进行任何澄清,但我们确实希望尽快解决。提前致谢!
编辑:为进一步说明,我们主要在软件中使用
mod_callcenter
,mod_conference
和mod_sofia
。编辑2:为进一步说明,我们在Ubuntu 14.04 Server上运行它
我们正在使用ESL连接来连接和运行来自python的freeswitch中的命令,我们认为这是问题的根源。我们尝试退出连接,但这破坏了两个通道。
而且,已针对Jira上的此问题提交的所有错误均已关闭,因为它们不是错误。我认为我在这里可能会有更多的成功,因为这是一个编程类型的问题。
最佳答案
您需要在测试环境中重现该问题,并将错误报告提交给Jira。充其量,您还应该尝试使用最新的master分支来重现它(仅支持Debian 8):
https://freeswitch.org/confluence/display/FREESWITCH/Debian+8+Jessie
当我使用mod_perl时,我遇到了类似的问题,并且一个Perl对象引用了一个会话,并且没有被正确地销毁(如果我没记错的话,我在同一个会话上附加了两个Perl对象)。这导致了无法杀死的渠道。
我想您正在应用程序和FreeSWITCH之间使用ESL连接,对吗?
关于python - 如何摆脱无懈可击的Freeswitch channel ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32320263/