如何让用户设备类型访问 Skype for business bot built in MS Bot Framework

How to get user device type accessing skype for business bot built in MS Bot Framework

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

我需要了解用于检测访问 Skype For Business 机器人的用户设备(设备类型和 OS)的选项。如果有办法知道用户设备是台式机还是移动设备。在 bot 框架中,User-Agent header 的格式类似于以下字符串:

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

(来自连接器 returns 以下的用户代理:

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

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

UCWA是做不到的,实际上没有客户端或client-facing api可以提供这样的信息。这是因为 User-Agent 信息不是存在的一部分,因此客户端不会将其发布给其他客户端。此 User-Agent 信息的主要目的是用于监控报告目的。

然而,服务器端仍然有一些 space 允许我们做一些事情。如果您有权访问 Skype for Business 服务器,则有多种解决方法。

  1. Get-CsConnections.ps1 是一个 well-known 脚本,用于从 Lync 服务器端拉取当前登录的用户。它是在 2011 年编写的,当时我们只有 Lync 2010,但好消息是它可以在新版本的 Lync 上正常工作,例如 Lync Server 2013、Skype for Business Server 2015。此脚本需要 运行 in Lync/Skype 管理 shell 或导入了 Lync/Skype 模块的 Powershell session。它需要使用 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. 自己动手吧。如果您不想使用 3rd 方脚本或者只是想以最简单和纯粹的方式来做,可以通过从服务器数据库查询来完成。 Lync/Skype 服务器将此用户代理信息存储在前端服务器的动态数据库中。它在实例rtclocal的数据库rtcdyn的tabledbo.RegistrarEndpoint中].

    请注意,没有关于数据库架构的 public 文档,因此您需要自己进行一些猜测和修改。好消息是数据库中的所有数据都以可读格式存储,所以这应该不是什么大问题。

  4. 在极少数情况下您不需要 real-time 中的此信息,monitoring report and database 可能是最好的方法。这不是 real-time 数据,数据是在对话结束后 10 分钟内生成的。

    如果你想从监控数据库中得到它,你应该看看SessionDetails view for P2P conversation and ConferenceSessionDetails 会议对话。视图中有一些简单的字段,称为 UserClientType 以指出某些 session.

  5. 的用户代理信息

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