【问题标题】:MS bot , not reacting to Activity unless i remove the conversation data?MS bot,除非我删除对话数据,否则不会对 Activity 做出反应?
【发布时间】:2017-08-23 17:06:16
【问题描述】:

所以我必须进行对话活动,第一个用于管理用户个人资料,第二个将负责对话。

       StateClient stateClient = activity.GetStateClient();
       BotData userData = await stateClient.BotState.GetUserDataAsync(activity.ChannelId, activity.From.Id);
            if (userData.GetProperty<bool>("ProfileDone") == false)
            {
                await Conversation.SendAsync(activity, () => new ProfileSetup());
            }
            else
            {
                await Conversation.SendAsync(activity, () => new RootLuisDi());
            }

现在,当第一次与机器人交互时,它会将用户发送到 ProfileSetup,没有问题。完成配置文件并将 ProfileDone 标志设置为 true 后。如果用户再次交互,它会转到 RootLuisDi() 但那里没有任何触发。但是,如果我删除对话并再次聊天,它实际上是有效的。 !!

【问题讨论】:

    标签: c# bots botframework azure-language-understanding


    【解决方案1】:

    我不会在控制器中分支对话。我对您的建议是创建一个 RootDialog 并将对话分支到那里,相应地调用/转发消息到其他对话框。

    您甚至可以使用您的RootLuisDi 对话作为根,并将对话分支到那里。覆盖MessageReceived 方法,检查配置文件标志并将消息转发到ProfileSetup 对话框或调用base.MessageReceived

    查看this 了解有关如何启动新对话的更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-10
      • 2023-03-19
      • 2012-08-31
      • 1970-01-01
      • 2021-10-15
      相关资源
      最近更新 更多