我正在构建一个基于 Lync 2013 的路由应用程序,使用路由输入MSPL
、将请求分派到 aServerAgent
并使用 UCMA 受信任的应用程序处理呼叫以及它自己的ApplicationEndpoint
.
现在我需要根据用户的活动端点配置路由。具体来说,我需要查找用户是否有一个端点,即 Lync Mobile(移动)客户端。
我可以在MSPL
脚本中获取用户端点的列表,但这仅提供端点 ID、功能和 GRUU。我将需要每个端点的用户代理字符串来确定适当的路由。
订阅用户的存在UCMA
可以让我在各个端点上存在,但它也不会让我获得用户代理字符串。
到目前为止,我找到的唯一途径是访问 Lync .\rtclocal
SQL 服务器并查询rtcdyn.dbo.RegistrarEndpoint
表。这意味着向每个前端 SQL 服务器添加一个 SQL 连接,这是我想不惜一切代价避免的最后手段。
还有哪些其他选项(最好使用MSPL
or 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(..)
功能,但这似乎没有返回机器状态,只有聚合存在状态。