2017-02-22 2 views
0

Ich benutze Microsoft Bot-Framework für den Aufbau eines Bot-Bot.Recreate Sitzung des Root-Dialogfeld

Ich habe Menü, und ich will Menü auf diese Weise behandeln:

if (activity.Text == "item1_postback" || activity.Text == "item2_postback") 
{ 
    await Conversation.SendAsync(activity,() => new MenuDialog()); 

} 
else 
{ 
    await Conversation.SendAsync(activity,() => new RootLuisDialog()); 
} 

item1_postback und item2_postback sind Tasten aus dem Menü.

In MenuDialog habe ich Funktionen. Wenn alles in MenuDialog fertig ist, möchte ich den Root-Dialog wiederherstellen und den Root-Dialog von RootLuisDialog neu erstellen.

Ich habe versucht mit context.Done und context.Reset, aber es funktioniert nicht.

Haben Sie eine Idee, wie Sie den Root-Dialog zurücksetzen, wenn MenuDialog beendet ist?

Antwort

1

In Ihrem Nachrichtenendpunkt verlassen ruft einfach Ihre Wurzel Dialog

await Conversation.SendAsync(activity,() => new RootLuisDialog());

In Ihrem RootLuisDialog, [RegexPattern("^item1_postback")] Aktion Detektoren für die Verarbeitung Post Rücken hinzufügen.

In diesen Aktionen ein Menü Kind Dialog starten, indem

Aufruf context.Call(new MenuDialog(), (context, result) => { /*Do something. at this point your are back to the parent dialog.*/});

nach dem MenuDialog beendet (es bedeutet, irgendwo sollten Sie done(some_result) rufen Sie in Ihnen wieder übergeordneten Dialog RootLuisDialog und Mit der Verarbeitung neuer Benutzerbefehle fortfahren

Verwandte Themen