如何获取用户设备类型访问内置于MS Bot Framework的业务机器人的skype

时间:2018-04-20 10:59:42

标签: botframework bots skype-for-business ucwa

有谁知道如何获取有关访问部署在S4B频道中并使用MS Bot Framework(C#)构建的机器人的用户设备的信息。

我需要了解检测访问Skype For Business Bot的用户设备(设备类型和操作系统)的选项。如果有办法知道用户设备是桌面还是移动设备。在bot框架中,User-Agent标头的格式类似于下面的字符串:

SFBUserAgent (Microsoft-BotFramework/3.1+https://botframework.com/ua)

(来自Connector的用户代理返回以下内容:

fxversion / 4.7.2563.0 osname / windowsserver2016datacenter osversion / 6.3.14393 microsoft.bot.connector.connectorclient / 3.14.1.1)

我想知道UCWA是否可用于检测访问Skype For Business bot的设备类型。

1 个答案:

答案 0 :(得分:0)

UCWA无法这样做,实际上没有客户端或面向客户端的api可以提供此类信息。这是因为用户代理信息不是在线状态的一部分,因此客户端不会将其发布到其他客户端。此用户代理信息的主要用途是用于监控报告目的。

然而,服务器端仍有一些空间允许我们做某事。如果您可以访问Skype for Business服务器,则可以使用多种解决方法。

  1. Get-CsConnections.ps1是一个众所周知的脚本,用于从Lync服务器端提取当前登录的用户。它是在2011年写的,而我们只有Lync 2010,但好消息是它适用于新版本的Lync,如Lync Server 2013,Skype for Business server 2015.此脚本需要在Lync / Skype管理shell或Powershell中运行导入Lync / Skype模块的会话。它需要使用Lync / Skype管理员帐户运行。

    使用sip uri检索特定用户的用户代理。

    $UserHomePool = (Get-CsUser -Identity [sip address]).RegistrarPool Get-CsConnections.ps1 -SipAddress [sip address] -Pool $UserHomePool

  2. Connections.ps1是上述Get-CsConnections.ps1的原型脚本,它更简单但不提供高级功能。你可以查看它并决定你需要哪一个。

  3. 自己动手。如果您不想使用第三方脚本或只是想以最简单和最纯粹的方式进行,可以通过从服务器数据库中查询来实现。 Lync / Skype服务器将此用户代理信息存储在前端服务器的动态数据库中。它位于实例 rtclocal 的数据库 rtcdyn 的表格 dbo.RegistrarEndpoint 中。

    请注意,没有关于数据库架构的公开文档,因此您需要做一些猜测并自己进行攻击。好消息是数据库中的所有数据都是以可读格式编写的,因此不应该是一个大问题。

  4. 您极不希望实时获取此信息,monitoring reportdatabase可能是最佳方法。这不是实时数据,会话结束后10分钟内就会生成数据。

    如果您想从监控数据库中获取它,您应该查看SessionDetails view进行P2P对话,ConferenceSessionDetails进行会议对话。视图中有直接的字段,称为 UserClientType ,用于指出特定会话的用户代理信息。

  5. 最后一件事我想提醒的是Skype允许用户同时登录多个客户端,所以无论你如何使它工作,你仍然需要面对登录客户端真正重要的问题,如果用户有多个客户端登录。