1

我正在构建一个基于 Lync 2013 的路由应用程序,使用路由输入MSPL、将请求分派到 aServerAgent并使用 UCMA 受信任的应用程序处理呼叫以及它自己的ApplicationEndpoint.

现在我需要根据用户的活动端点配置路由。具体来说,我需要查找用户是否有一个端点,即 Lync Mobile(移动)客户端。

我可以在MSPL脚本中获取用户端点的列表,但这仅提供端点 ID、功能和 GRUU。我将需要每个端点的用户代理字符串来确定适当的路由。

订阅用户的存在UCMA可以让我在各个端点上存在,但它也不会让我获得用户代理字符串。

到目前为止,我找到的唯一途径是访问 Lync .\rtclocalSQL 服务器并查询rtcdyn.dbo.RegistrarEndpoint表。这意味着向每个前端 SQL 服务器添加一个 SQL 连接,这是我想不惜一切代价避免的最后手段。

还有哪些其他选项(最好使用MSPLor UCMA)来获取所有用户的端点,包括客户端版本/用户代理字符串?


编辑:

  • 我检查了 MSPL 编译器代码,除了当前请求之外,似乎没有任何东西可以获取任何端点的用户代理字符串。有一些未记录的功能,但似乎对我没有任何帮助。
  • 我检查了任何增强的存在容器是否有信息,但也没有发现任何信息。

编辑2:

稍后进行一些挖掘,我认为最好的选择是从"machineState"存在类别中获取设备类型。每个端点都发布其中一个,MSDN 上描述了 XML state[@type='machineState'] element:. 它有一个device可以包含以下内容的元素:

computer:设备是运行 Lync 2013 的计算机。
deskphone:该设备是运行 Lync Phone Edition 的桌面电话。
mobile:该设备是运行 Microsoft Lync 2010 for Android、iPad、iPhone、诺基亚或 Windows Phone 的手机。
web:这是运行 Microsoft Lync Web App 的计算机。

但是如何从中查询这个元素MSPL呢?有这个QueryCategory(..)功能,但这似乎没有返回机器状态,只有聚合存在状态。

4

1 回答 1

0

除非您可以将其视为 SIP 消息中的标头,否则我认为您无法从 MSPL 脚本中获取它。(显然,如果您可以将其视为标题,则可以通过它进行查询)

但是,一旦您发送了消息,在您发送到的方法中(包含一个Object source参数,您可以使用

HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
string userAgent = context.Request.UserAgent;

获取 userAgent 字符串

于 2014-07-25T15:05:49.000 回答