为什么 BotUserData 不能在我的 Bot Framework 机器人中保留和检索?

Why isn't BotUserData persisting and retrievable in my Bot Framework bot?

我正在使用带有用户 ID 的虚拟消息来为特定用户设置 BotUserData,以便机器人可以通过相同的方法在其他地方访问它。

示例:

        message.From.Id = someUserId;            
        message.SetBotUserData("someObject", someObject);

后来, 当另一个用户与机器人交互时,我执行

        message.From.Id = someUserId
        someObject = message.GetBotUserData<objectType>("someObject")

但是 someObject 返回为 NULL

请注意,这两个片段是在不同的渠道、对话中执行的

我是不是用错了?

每个频道的 userId 都不同(即 Skype / Slack 使用不同的命名空间)。 BotFramework 目前不提供在渠道之间 link 帐户的方法。您可以创建一个允许用户 link 帐户的用户界面(例如,通过在一个频道中生成令牌并让用户将其输入另一个频道)。

<SLACK-USER> Get Link code
<SLACK-BOT> Link Code: FSE1-SDF2

<SKYPE-USER> Link account FSE1-SDF2
<SKYPE-BOT>  User linked

然后您想要创建您自己的数据存储,您可以使用您提供的令牌访问它。