为啥 BotUserData 在我的 Bot Framework 机器人中不能持久化和可检索?

Posted

技术标签:

【中文标题】为啥 BotUserData 在我的 Bot Framework 机器人中不能持久化和可检索?【英文标题】:Why isn't BotUserData persisting and retrievable in my Bot Framework bot?为什么 BotUserData 在我的 Bot Framework 机器人中不能持久化和可检索? 【发布时间】:2016-06-23 16:14:32 【问题描述】:

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

例子:

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

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

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

但是 someObject 返回为 NULL

请注意,这两个 sn-ps 是在不同的频道、对话上执行的

我是不是用错了?

【问题讨论】:

您是否要为其他用户获取数据?那是行不通的。 有没有其他方法可以在用户之间传递数据? (没有他们在同一个对话中) @stuartd 我应该澄清一下 - 我正在尝试让不同渠道上的两个用户使用机器人作为中介相互交谈。所以我基本上是使用上述方法传递他们的频道帐户 【参考方案1】:

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

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

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

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

【讨论】:

感谢您的回复。我想过类似的解决方案。 我的问题是为了解决***.com/questions/37899111/… 中提出的更大的问题,您能否看看如何解决它?

以上是关于为啥 BotUserData 在我的 Bot Framework 机器人中不能持久化和可检索?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 Discord Bot 在 heroku 中不断崩溃?

ReferenceError:未定义“bot”(Eris)-在我的命令中

为啥当我在 discord bot 上执行命令时啥也没发生

为啥 Heroku 不喜欢我的文件夹结构?

在 JavaScript Discord Bot 中,为啥 message.react() 是“不是函数”

为啥 Discord bot 无法识别命令?