В этой ситуации лучше всего вызвать намерение Луиса за пределами формопотока. Функциональность, которую вы ищете, точно не существует. Вы можете вызвать намерение «Имя», а затем назвать форму следующим образом:
ользую каркас бота Microsoft, чтобы создать бота для опроса пользователя и затем понимания ответа. Пользователь опрашивается с помощью API FormFlow в среде бота, и ответы получены. Вот код для потока форм:
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();
}
}
Пользователь может войти при запросе имени:
меня зовут джеймс бонд
Также имя может быть переменной длины. Я был бы лучше позвонить Луису отсюда и получить сущность (имя) для намерения. В настоящее время я не знаю, как я могу вызвать диалог luis из потока форм.