Lync 2013 - 使用来自分叉请求的 180 个响铃响应

Posted

技术标签:

【中文标题】Lync 2013 - 使用来自分叉请求的 180 个响铃响应【英文标题】:Lync 2013 - consuming 180 ringing responses from a forked request 【发布时间】:2014-11-25 12:33:41 【问题描述】:

是否可以将 Lync 2013 配置为在对 Lync 的 INVITE 触发多个对 Lync 订阅者端点的 INVITE(每个最终生成 180/183 消息)后仅向上游发送一个 180/183 振铃。

在同时响铃的情况下,我希望 Lync 使用所有这 180 秒以避免不必要的消息返回给 SBC 后面的发起方 INVITE'ing Lync。

它似乎是作为一个分叉代理而不是 b2bua。

【问题讨论】:

【参考方案1】:

说 Lync 分叉呼叫是对的。如果用户有多个终结点,Lync 会将呼叫分叉到每个终结点,然后每个终结点都将返回振铃响应。

您可以创建一个MSPL 脚本来捕获 180 个响应。由于 MSPL 是无状态的,它需要一个支持应用程序(ServerApplication)来检查是否已经为当前呼叫发送了 180 响应,并阻止后续响铃响应。基于对所有请求的CallID 标头相同的假设,您可以决定发送哪些响应,哪些不发送。

一个简单的 MSPL 类似于:

<lc:applicationManifest
 lc:appUri="http://www.contoso.com/DefaultRoutingScript"
 xmlns:lc="http://schemas.microsoft.com/lcs/2006/05">
<lc:responseFilter reasonCodes="1XX" />
<lc:proxyByDefault action="true" />
<lc:splScript><![CDATA[
    if (sipResponse && sipResponse.StatusCode == 180)
    
        Dispatch("OnResponse");
    
]]></lc:splScript>
</lc:applicationManifest>

然后在您的服务器应用程序中处理OnResponse 事件,我想像这样:

public void OnResponse(object sender, ResponseReceivedEventArgs e)

    if (e.Response.StatusCode == 180)
    
        var callIdHeader = e.Response.AllHeaders.FindFirst(Header.StandardHeaderType.CallID);
        if (callIdHeader != null)
        
            var callId = callIdHeader.Value;
            if (ShouldSendRingingResponse(callId))
            
                e.ClientTransaction.ServerTransaction.SendResponse(e.Response);
            
        
    


public bool ShouldSendRingingResponse(string callId)  .... 

然后你可以在ShouldSendRingingResponse函数中创建一些逻辑来查看是否发送180响应。

请注意,我没有对此进行测试,这只是我将如何尝试处理这种情况的基本概述。

【讨论】:

【参考方案2】:

在 Lync 中没有办法防止这种情况发生;但是,通常也会部署一个包含处理这种情况的选项的奥科 SBC。

多个 18 倍: 设备支持多种18x响应(包括180 Ringing、181 Call is Forwarded、182 Call Queued、183 Session Progress)的互通,支持转发给主叫。 UA 可以配置为仅支持接收第一个 18x 响应(即设备仅将此响应转发给呼叫者),或接收多个 18x 响应(默认)。这由 IP 配置文件参数“SBC Remote Multiple 18x Support”配置

【讨论】:

以上是关于Lync 2013 - 使用来自分叉请求的 180 个响铃响应的主要内容,如果未能解决你的问题,请参考以下文章

尝试在 Lync 2013 中接受音频呼叫时出现 System.UnauthorizedAccessException

在 MSPL 应用程序中添加 SIP 标头在 Lync 2013 中丢失/被删除

从分叉存储库中发布来自 GitHub 操作的评论的解决方法

Lync Server 2013 标准版部署边缘服务器部署[三]

获取 Lync 终结点的用户代理字符串

使用 UI 抑制的 Lync 2013 自定义客户端的视频质量