Hier ist mein Code zu erhalten:Gibt es eine Möglichkeit Benutzereingabe von BotFramework innerhalb einer Schleife
public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
// Global variables
var boolAskedForFName = false;
var boolAskedForLName = false;
var userLName = string.Empty;
var userFName = string.Empty;
if (activity.Type == ActivityTypes.Message)
{
ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));
// Get any saved values
var sc = activity.GetStateClient();
var userData = sc.BotState.GetPrivateConversationData(
activity.ChannelId, activity.Conversation.Id, activity.From.Id);
boolAskedForCity = userData.GetProperty<bool>("AskedForUserFName");
boolAskedForName = userData.GetProperty<bool>("AskedForUserLName");
userLName = userData.GetProperty<string>("LastName") ?? "";
userFName = userData.GetProperty<string>("FirstName") ?? "";
if (boolAskedForFName == false)
{
Activity replyToConversation = activity.CreateReply("May i have your first name?");
replyToConversation.Recipient = activity.From;
replyToConversation.Type = "message";
userData.SetProperty<bool>("AskedForUserFName", true);
var reply = await connector.Conversations.ReplyToActivityAsync(replyToConversation);
}
else if (boolAskedForLName == false)
{
userName = activity.Text;
userData.SetProperty<string>("Name", userFName);
var replyToConversation = activity.CreateReply("what about last name?");
replyToConversation.Recipient = activity.From;
replyToConversation.Type = "message";
replyToConversation.Attachments = new List<Attachment>();
userData.SetProperty<bool>("AskedForUserLName", true);
var reply = await connector.Conversations.ReplyToActivityAsync(replyToConversation);
}
else
{
}
// Save BotUserData
sc.BotState.SetPrivateConversationData(
activity.ChannelId, activity.Conversation.Id, activity.From.Id, userData);
}
}
Ich kann nicht mit einer besseren Art und Weise kommen. Das scheint sehr schlecht zu sein. Fehler -> Ich frage nach dem ersten Namen in der ersten if-Schleife, aber ich bekomme den Ausgang zurück in der zweiten else if-Schleife. Wenn ich diesem Gespräch für eine Weile folge, werde ich Code haben, der nicht zu verwalten ist. Gibt es einen besseren Weg, dies zu tun? Ich dachte daran, den Dialog zu benutzen, wollte aber nur Code da draußen veröffentlichen, um zu sehen, ob jemand das besser gemacht hat.
Wie werden wir Zustand in diesem retten? Auch, wenn ich eine andere Logik einbinden muss, sagen wir, geben Sie Benutzereingaben von einer API, um Nachrichten auszuwählen, die sie sehen wollen, ich werde nicht in der Lage sein, das mit Formularfluss richtig zu machen? – NoviceMe
Siehe das Ende des Artikels: Einführung in FormFlow mit dem Microsoft Bot Framework (http://aihelpwebsite.com/Blog/EntryId/8/Introduction-To-FormFlow-With-The-Microsoft-Bot-Framework) für ein Beispiel Speichern von Daten. –