0

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

但是,我需要从 Bob1 和 Bob2 向 Alice 发送 200 个 Ok 响应。然后,爱丽丝想同时与他们交谈。

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

4

1 回答 1

3

在有状态模式下(通过 tm 模块)路由时,Kamailio 在收到 200ok 时取消所有其他活动分支。甚至您会认为同时生成了两个 200ok,它们很可能是一个接一个地处理,因此一个分支被取消。

你应该可以通过无状态路由来实现你想要的。不要使用 tm 模块中的函数来发送请求,而是使用 forward() 函数。逻辑应该是这样的:

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

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

于 2015-09-14T20:49:28.920 回答