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

时间:2014-06-05 13:56:15

标签: lync ucma lync-2013

我正在使用MSPL中的路由构建基于Lync 2013的路由应用程序,将请求分派给ServerAgent,并使用UCMA受信任的应用程序处理呼叫,并使用自己的ApplicationEndpoint

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

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

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

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

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


修改

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

编辑2:

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

  

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

但是如何从MSPL查询此元素?有QueryCategory(..)函数,但这似乎不会返回机器状态,只返回聚合的presense状态。

1 个答案:

答案 0 :(得分:0)

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

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

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

获取userAgent字符串