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,必须测试什么以检查是否一切顺利。
当我将呼叫分叉到另一个 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,必须测试什么以检查是否一切顺利。