分叉邀请后发送的Kamailio并发呼叫

时间:2015-09-11 09:00:44

标签: fork sip invite sip-server kamailio

我使用的是Kamailio代理版本4.0.4。 我有两个UAC(Bob1,Bob2)注册了相同的URI。 然后第三个UAC(Alice)向代理发送INVITE。 两个UAC都收到此邀请,并且都接受该呼叫。 Kamailio现在取消第二个(Bob2)并将第一个(Bob1)的200 Ok转发给Alice。

但是,我需要从Bob1和Bob2获得200 Ok的回复给Alice。 爱丽丝然后想要与他们同时交谈。

这可能与kamailio有关吗? 如何防止第二个200 Ok被取消?

1 个答案:

答案 0 :(得分:2)

当以有状态模式(通过tm模块)进行路由时,当收到200ok时,Kamailio将取消所有其他活动分支。即使您认为两个200ok同时生成,很可能它们一个接一个地处理,因此一个分支被取消。

您应该能够通过无状态路由实现您想要的目标。不使用tm模块中的函数发送请求,而是使用forward()函数。逻辑应该是:

  • 将r-uri($ ru)设为第一目的地
  • 向前()
  • 将r-uri($ ru)设为第二目的地
  • 向前()

如果目的地是通过查找(“位置”)设置的,则第一个进入r-uri并且您可以执行forward()。对于第二个,您必须通过$ branch(...)变量获取其详细信息并设置r-uri,然后设置与下一跳相关的其他属性。