我正在使用MSPL
中的路由构建基于Lync 2013的路由应用程序,将请求分派给ServerAgent
,并使用UCMA受信任的应用程序处理呼叫,并使用自己的ApplicationEndpoint
现在我需要根据用户的活动端点配置路由。具体来说,我需要查找用户是否有一个端点是Lync Mobile(移动)客户端。
我可以在MSPL
脚本中获取用户端点的列表,但这仅提供端点ID,功能及其GRUU。我需要每个端点的用户代理字符串才能确定适当的路由。
订阅用户在UCMA
中的状态可以让我出现在各个端点上,但它也不会让我获得用户代理字符串。
到目前为止,我找到的唯一途径是访问Lync .\rtclocal
SQL服务器并查询rtcdyn.dbo.RegistrarEndpoint
表。这意味着为每个前端SQL服务器添加一个SQL连接,这是我不惜一切代价避免的最后手段。
还有哪些其他选项(最好使用MSPL
或UCMA
)来获取所有用户的端点,包括客户端版本/用户字符串?
修改
编辑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状态。
答案 0 :(得分:0)
除非您可以将其视为SIP消息中的标题,否则我认为您无法从MSPL脚本中获取它。 (显然,如果您可以将其视为标题,那么您可以通过它进行查询)
但是,一旦您调度了消息,在您调度到的方法中(包含Object source
参数),您可以使用
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
string userAgent = context.Request.UserAgent;
获取userAgent字符串