【发布时间】:2025-12-17 07:20:06
【问题描述】:
我正在构建一个基于 Lync 2013 的路由应用程序,使用 MSPL 中的路由,将请求分派到 ServerAgent,并使用它自己的 ApplicationEndpoint 使用 UCMA 可信应用程序处理呼叫。
现在我需要根据用户的活动端点配置路由。具体来说,我需要确定用户是否有一个端点,即 Lync Mobile(移动)客户端。
我可以在MSPL 脚本中获取用户端点列表,但这仅提供端点 ID、功能和 GRUU。我需要每个端点的用户代理字符串来确定合适的路由。
在UCMA 中订阅用户的存在可以让我在各个端点上存在,但它也不会让我获得用户代理字符串。
到目前为止,我找到的唯一途径是访问 Lync .\rtclocal SQL 服务器并查询 rtcdyn.dbo.RegistrarEndpoint 表。这意味着向每个前端 SQL 服务器添加一个 SQL 连接,这是我想不惜一切代价避免的最后手段。
还有哪些其他选项(最好使用MSPL 或UCMA)来获取所有用户的端点,包括客户端版本/用户代理字符串?
编辑:
- 我检查了 MSPL 编译器代码,除了当前请求之外,似乎没有任何东西可以获取任何端点的用户代理字符串。有一些未记录的功能,但似乎对我没有任何帮助。
- 我检查了任何增强的存在容器是否有信息,但也没有发现任何信息。
编辑 2:
稍后进行一些挖掘,我认为最好的选择是从"machineState" 存在类别中获取设备类型。每个端点都发布其中一个,MSDN 上描述了 XML:state[@type='machineState'] element。它有一个device 元素,可以包含以下内容:
computer:设备是运行 Lync 2013 的计算机。deskphone:设备是运行 Lync Phone 的桌面电话版本正在运行。mobile:该设备是运行 Microsoft Lync 2010 for Android、iPad、iPhone、诺基亚或 Windows Phone 的手机。
web:这是一台运行 Microsoft Lync Web App 的计算机。
但是如何从MSPL查询这个元素呢?有QueryCategory(..) 函数,但这似乎不返回机器状态,只返回聚合存在状态。
【问题讨论】: