History-Info 和 Diversion headers 在 MSPL Skype for business 中

History-Info and Diversion headers in MSPL Skype for business

当我将呼叫分叉到另一个 PBX(在 Sfb 环境之外)时,我遇到了中介服务器正在剥离的 headers 的一些问题。

有谁知道如何使用 MSPL 通过中介服务器解析 sip headers?我在托管应用程序中 运行 它添加了 headers 如下(在 OnResponse 和 OnRequest 处理程序中):

// Add a ModifyHeadersSample header.
                Header newHeader = new Header("ModifyHeadersSample1", "localhost");
                e.Request.AllHeaders.Add(newHeader);


// Add a ModifyHeadersSample header.
                Header newHeader = new Header("ModifyHeadersSample", "localhost");
                e.Response.AllHeaders.Add(newHeader);

问题是,我希望 History-Info header 从中介服务器解析到外部 PBX,因此历史记录不会在转发过程中丢失。 我什至希望能够解析自定义 headers(例如 X-MyHeader)以便将额外信息附加到跟踪。

如果我记录交易,我会在我的 SFB 服务器上的 Incoming Sip 消息中看到我添加的 headers,但它在 Out Sip Request 中消失了。

我运行按照请求进行设置:

            e.Request.SimpleProxy = true;
            e.ServerTransaction.EnableForking = false;

我想你在这里要倒霉了。我发现在通过 Lync 的 SIP t运行king 设置时,您可能会丢失所有进入或离开 Lync SIP 域的 headers。

唯一header 未被触及(至少从外部 sip 域进入 lync,我没有检查出)是转移 header。

还有其他方法可以解决这个问题。

  • 您可以创建一个 UCMA B2BUA 应用程序,而不是使用 T运行k。在这种情况下,您可以控制双方的 header,因此您可以随心所欲。 downside/upside 是 UCMA 只是无媒体。无媒体的缺点是您在外部 sip 域中的端点必须支持 SIPS/SRTP(否则您必须减少默认安全设置 - 可能但客户抱怨......一旦安全性降级,客户就很难re-enable 它)和 ICE/STUN/TURN(如果你想支持边缘/联合用户)。支持 TURN 很有趣,因为如果没有自己的 TURN 扩展,Microsoft 并不真正支持 TURN,而且他们没有很好地记录它们,因此您必须 运行 自己的 TURN 服务器。
  • 您可以编写一个 UCMA 应用程序或代理应用程序,转发到网关并通过您自己的 side-channel 连接写入您想要的信息到外部 sip 域。然后将外部 sip 域中的数据合并在一起(可能在外部 sip 域 B2BUA 中)。这假设您对外部 sip 域有足够的控制权来执行此操作。
  • 使用'Diversion' header 编码你自己的参数to/from 外部sip域。这仅在您没有大量数据要发送时才有效。

我已经为不同的项目完成了上述所有工作,所以我知道上述所有工作,除了来自 Lync 网关的 Diversion header,必须测试什么以检查是否一切顺利。