【问题标题】:Kamailio concurrent calls after forked invite分叉邀请后的 Kamailio 并发通话
【发布时间】:2015-09-11 09:00:44
【问题描述】:

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

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

kamailio 可以做到这一点吗? 如何防止第二个 200 Ok 被取消?

【问题讨论】:

    标签: fork sip invite sip-server kamailio


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢您的回答。您能否举一个小例子,我该如何使用它?我不是很喜欢 kamailio 语法。那太好了!
    • 感谢@miconda,我使用了这种方法,但似乎每个转发都会在转发的消息中添加新的 Via 标头,并且两个 Via 标头是相同的,这是第二个 forward() 的示例 Via 标头:VIA:SIP / 2.0 / UDP 192.168.1.21;分支= Z9HG4BKBE8C.953ED42F0BCC438C6991121D3483010B.0 VIA:SIP / 2.0 / UDP 192.168.1.21;分支= Z9HG4BKBE8C.953ED42F0BCC438C6991121D3483010B.0 VIA:SIP / 2.0 / UDP 10.189.219.4:5060; rport=5060;rport=5060;branch=z9hG4bK-4177-1-2
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-29
    • 2019-06-04
    • 1970-01-01
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 2011-12-12
    相关资源
    最近更新 更多