C# MS bot,除非我删除对话数据,否则不会对活动作出反应?

C# MS bot,除非我删除对话数据,否则不会对活动作出反应?,c#,bots,botframework,azure-language-understanding,C#,Bots,Botframework,Azure Language Understanding,所以我必须进行对话活动,第一个用于管理用户配置文件,第二个用于对话 StateClient stateClient = activity.GetStateClient(); BotData userData = await stateClient.BotState.GetUserDataAsync(activity.ChannelId, activity.From.Id); if (userData.GetProperty<bool>

所以我必须进行对话活动,第一个用于管理用户配置文件,第二个用于对话

       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());
            }
StateClient StateClient=activity.GetStateClient();
BotData userData=await stateClient.BotState.GetUserDataAsync(activity.ChannelId,activity.From.Id);
if(userData.GetProperty(“ProfileDone”)==false)
{
等待对话。SendAsync(活动,()=>new ProfileSetup());
}
其他的
{
wait Conversation.sendaync(活动,()=>newrootluisdi());
}

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

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

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

检查以了解有关如何启动新对话框的更多信息