我正在使用Kamailio版本5.3.3和rtpengine版本8.4.0。 Kamailio和Rtp-Engine都在同一台ubuntu计算机上运行。 rtpengine配置文件中的“超时”值设置为60秒。
我在注册到Kamailio的两个SIP客户端之间建立了呼叫,并且媒体通过rtp引擎中继-可以正常工作
为了测试rtp媒体超时,我阻止了从SIP客户端到rtpengine的UDP流量,并且在指定的时间段之后,我从rtpengine看到以下日志,这似乎表明它已检测到超时]
rtpengine[2127]: INFO: [R-RVm58r4SUY7Cz6GW-D5w..]: Closing call due to timeout
但是,即使在此之后,呼叫也会终止。所以我的问题是:
当rtp引擎检测到媒体超时时,如何让Kamailio终止呼叫。为此,需要对kamailio cfg进行哪些更改(如果有)?
UPDATE
在屏蔽IP地址后附加了当前的kamailio.cfg和rtpengine.conf文件
[基本上,我的要求是,如果一个呼叫中的一个(或两个)SIP客户端被杀死或失去网络或停止发送媒体-必须有一种方法可以在Kamailio中识别这一点并终止呼叫。
Kamailio配置:https://pastebin.com/s4akZSfartpengine配置:https://pastebin.com/7xzejiYW
我对此进行了进一步调试,并且面临两个单独的问题:
[第一期
:我前面提到的问题-当我阻止从两个SIP客户端到RTPEngine的RTP流量时,RTP Engine会检测到超时,如从上述日志中看到的那样,但呼叫不会结束。根据我的理解,在进一步调试时,rtpengine需要对Kamailio进行RPC调用以告知其结束对话框-为此,我尝试在rtpengine中使用“ b2b-url”和“ xmlrpc-format”配置选项,但是在这里我不清楚以下内容:
a。在rtpengine的“ b2b-url”配置中应设置什么端口?一世尝试使用80和5060,但在以下情况下保持连接被拒绝rtpengine尝试在媒体超时时发出卷曲请求
b。为此需要加载哪个Kamailio模块-有一个XMLRPC模块,XHTTP RPC模块和JSONRPCS模块-其中之一是需要这个吗?
第二期
:第二个问题是,如果不是从两个设备都阻止了RTP流量,而是仅从其中一个设备阻止了它-那么rtpengine甚至无法检测到媒体超时,这意味着我看不到日志[我在syslog中看到这两个设备的流量都被阻止时看到的情况。我假设必须有一种方法可以检测到此情况-处理一台设备说出网络松动或停止发送媒体的情况-我如何才能基于此检测并采取措施?我正在使用Kamailio版本5.3.3和rtpengine版本8.4.0。 Kamailio和Rtp-Engine都在同一台ubuntu计算机上运行。 rtpengine配置文件中的“超时”值设置为60秒。 ...
好,所以我很可能想出了第一个问题