在没有活动的机器人上设置用户状态

时间:2016-08-13 17:11:13

标签: botframework

尝试将代码从BF 1.x升级到3.x,并且无法找到转换以下代码的示例

var client = new ConnectorClient();
var getData = await client.Bots.GetUserDataAsync(Constants.botId, userid);
getData.Data = ar.Serialize();
var resp = await client.Bots.SetUserDataAsync(Constants.botId, userid, getData);               
return Request.CreateResponse(resp);

对其他方法开放,但是用户从机器人那里获得了一个到网站的链接,它包含链接中的用户ID,然后该网站想要在对话中设置状态。

最大的问题是client.Bots不再存在 - 状态已经转移到它自己的StateClient但是要获得状态客户端,它似乎需要有一个Activity对象

1 个答案:

答案 0 :(得分:2)

activity.GetStateClient只是帮助获取给定频道的正确状态客户端。我们需要这个的原因是大多数频道使用集中存储,而其他频道可能需要特定于频道的频道(例如模拟器)。为了更深入地理解,我建议在ActivityEx.cs中查看此方法的代码。

构建状态客户端(对于大多数渠道)的直接方式是:

new StateClient(new MicrosoftAppCredentials(microsoftAppId, microsoftAppPassword));

有关参数的说明,请参阅this