Ich verwende das Bot-Framework von Microsoft, um einen Bot für die Befragung des Benutzers zu erstellen und dann die Antwort zu verstehen. Der Benutzer wird mithilfe der FormFlow-API im Bot-Framework befragt und die Antworten werden abgerufen. Hier ist der Code für die Formflow:Rufen Sie LUIS aus FormFlow in C#
public enum Genders { none, Male, Female, Other};
[Serializable]
public class RegisterPatientForm
{
[Prompt("What is the patient`s name?")]
public string person_name;
[Prompt("What is the patients gender? {||}")]
public Genders gender;
[Prompt("What is the patients phone number?")]
[Pattern(@"(<Undefined control sequence>\d)?\s*\d{3}(-|\s*)\d{4}")]
public string phone_number;
[Prompt("What is the patients Date of birth?")]
public DateTime DOB;
[Prompt("What is the patients CNIC number?")]
public string cnic;
public static IForm<RegisterPatientForm> BuildForm()
{
OnCompletionAsyncDelegate<RegisterPatientForm> processHotelsSearch = async (context, state) =>
{
await context.PostAsync($"Patient {state.person_name} registered");
};
return new FormBuilder<RegisterPatientForm>()
.Field(nameof(person_name),
validate: async (state, value) =>
{
//code here for calling luis
})
.Field(nameof(gender))
.Field(nameof(phone_number))
.Field(nameof(DOB))
.Field(nameof(cnic))
.OnCompletion(processHotelsSearch)
.Build();
}
}
Der Benutzer eingeben kann, wenn für Namen gefragt:
mein Name ist James Bond
Auch der Name von variabler Länge sein könnte. Ich wäre besser, Luis von hier aus anzurufen und die Entität (Name) für die Absicht zu bekommen. Mir ist momentan nicht bekannt, wie ich einen luis-Dialog aus dem Formularfluss aufrufen könnte.
'FormFlow' nicht wirklich die beste Lösung sein, wenn Sie einige benutzerdefinierte Behandlungen –
@NicolasR tun wollen, was getan werden sollte? –
Implementieren Sie einen Dialog, anstatt beispielsweise FormFlow zu verwenden. Es ist länger, aber Sie können tun, was Sie wollen –