2016-04-05 5 views
1

Ich baue einen LuisDialog und LUIS Integration funktioniert gut.C# Bot Builder SDK - Ansatz für Disambiguierung

In den Fällen, in denen LUIS in allen Lücken füllen tut ich brauche, was ist der beste Ansatz für Begriffsklärung?

Im Moment benutze ich PromptDialog Rückrufe - also in einem Dialog-Methode (mit dem LuisIntent-Attribut versehen), wenn ich weitere Details brauchen, um/disambiguate Ich hätte:

PromptDialog.Choice<string>(context, EnsureTimeOfDayChosen, new[] { "Morning (AM)", "Afternoon (PM)", "Any" }, "What time of day would you like us to book the appointment? (AM/PM/Any)", "Please choose AM or PM. Alternatively, if you don't mind which, just say Any."); 

und dem Körper des Delegierten (EnsureTimeOfDayChosen):

string AmPmOrAny = await result; 
context.PerUserInConversationData.SetValue<string>("TimeOfDay", AmPmOrAny); 
BookAppointment(context); 

das Problem bei diesem Ansatz ist die letzte Zeile des Delegierten - es sich nicht richtig anfühlt. Ich kann nicht einfach zurück in den Ort, ich war in der ursprünglich genannten LuisIntent dekoriert Methode und Lebenslauf aufrufen.

Stattdessen habe ich vorne mit dem LUIS Info beschäftigen, und rufen Sie die BookAppointment Methode nach mehr Informationen zu sammeln und es in PerUserInConversationData speichern.

Mache ich es falsch?

Jede Hilfe wäre sehr dankbar - Mit freundlichen Grüßen, Matt.

Antwort

1

aktuelle Implementierung des Dialogmodells Da kann ich mir keinen besseren Weg, um Ihre Logik zu implementieren. Wenn Sie zu einem beliebigen Zeitpunkt auf eine asynchrone Antwort des Benutzers warten, wird Ihr Code bei der Rückmeldung, die Sie bei der Antwort angegeben haben, fortgesetzt. Sie können es sich als Begin/End model for async programing

vorstellen