首页 > 解决方案 > 机器人框架 v4。如何清除turnContext.Activity.MembersAdded,所以再次发送欢迎消息

问题描述

当 Facebook 用户首次向机器人发送消息时,机器人会发送欢迎消息。机器人检查 turnContext.Activity.MembersAdded 是否不为空,然后发送欢迎消息。虽然这个列表永远不会被抹去。

你知道我如何清除这个列表,以便下次用户向机器人发送消息时,它会再次发送欢迎消息

我尝试使用 LINQ 简单地清除它,但它没有用

if (turnContext.Activity.MembersAdded != null)
{
    await SendWelcomeMessageAsync(turnContext, cancellationToken);
}

提前谢谢各位!

标签: c#botframework

解决方案


bot 存储用户信息 (userState) 的方式与 Facebook 的方式非常不同。UserState 由机器人开发人员(您)创建和维护。Facebook 还通过 Facebook 应用程序(如游戏)或通过 Messenger 维护已连接到应用程序的人员列表。Facebook 将此信息存储在 PSID 或 ASID 中,可通过 Facebook Graph API v2.0 访问

在 bot 框架方面,当 facebook 用户首次与 bot 连接时,会点击 turnContext.Activity.MembersAdded(从而创建他们的 PSID 或 ASID 以存储在 Facebook Graph API 中)。从理论上讲,您可以进入并从Facebook 端的 Facebook 应用程序(机器人)中清除 PSID/ ASID,但请记住,一旦为 Facebook 用户创建了 ASID/PSID,这就是他们的 ASID/PSID。如果将它们从机器人中删除以便“重新连接”,Facebook Graph 将返回相同的 PSID/ASID,因此 .MembersAdded 标志不会触发,您将留在原处.

如果您尝试在每次用户离开机器人一段时间后创建新的“欢迎消息”,或者开始有关不同主题的对话,您将不得不跟踪对话和用户站在您这边(在您的用户连接后立即为他们提供唯一的用户 ID),并将其存储和跟踪到您自己的数据库中。然后,您可以使用机器人访问器获得可重置的欢迎消息(基于时间或会话 ID 的消息)。


推荐阅读