나는 LUIS 대화 상자에 갇혀있다. 내가 전화 후LUIS 대화 상자에서 FormDialog 호출
[LuisIntent("GetRestaurant")]
public async Task GetRestaurant(IDialogContext context, LuisResult result) {
try {
FormDialog<AddressForm> addressForm = new FormDialog<AddressForm>(new AddressForm(), AddressForm.BuildAddressForm, FormOptions.PromptInStart);
AddressForm address = new AddressForm();
context.Call(addressForm, AddressFormCompleteAsync);
}
하여 FormDialog를 호출하기 위해 노력하고있어, 내 에뮬레이터 내 양식 대화 상자에서 첫 번째 프롬프트를 (어느 도시?) 반환하고, 루이스 입력으로 다음 입력을 받아 대조를 일치 할려고 LuisIntent.
내 양식은 다음과 같습니다
[Serializable]
public class AddressForm {
[Prompt(new string[] { "Which city?" })]
public string City { get; set; }
[Prompt("Which street?")]
public string Street { get; set; }
[Prompt("Which number?")]
public string Number { get; set; }
public static IForm<AddressForm> BuildAddressForm() {
IForm<AddressForm> addressFrom = new FormBuilder<AddressForm>()
.Field(nameof(City), validate: ValidateCityInformation)
.Field(nameof(Street))
.Field(nameof(Number), validate: ValidateNumberInformation, active: NumberEnabled)
.Build();
return addressFrom;
}
내 이력서 방법은 디버깅을 위해, 아직 많이하지 않습니다.
private async Task AddressFormCompleteAsync(IDialogContext context, IAwaitable<AddressForm> result) {
var adress = await result;
context.Wait(MessageReceived);
}
어떻게이 FormDialog에 머물 내 LuisDialog로 다시 이동하지합니까? context.Forward()를 사용해야하는 경우 내 AddressForm 클래스가 IDialog 유형이어야하고 AddressFrom 클래스에서 IAwaitable을 처리하려면 어떻게해야합니까?
도움 주셔서 감사합니다.