Ring FormDialog innenfra et LUIS Dialog

stemmer
1

Jeg står fast i min LUIS Dialog. Jeg prøver å ringe en FormDialog av

[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);
    }

Etter samtalen tilbake min Emulator den første ledeteksten (hvilken by?) I min dialog Form, og tar neste innspill som Luis innspill og prøver å matche det mot en LuisIntent.

Min Form ser slik ut:

[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;
    }

Min CV metoden ikke gjøre mye ennå, bare for debugging.

private async Task AddressFormCompleteAsync(IDialogContext context, IAwaitable<AddressForm> result) {
        var adress = await result;
        context.Wait(MessageReceived);
    }

Hvordan kan jeg holde gjør i FormDialog og ikke hoppe tilbake til min LuisDialog? I tilfelle jeg trenger å bruke context.Forward (), min AddressForm klasse da trenger å være av typen IDialog og hvordan jeg håndterer IAwaitable i postadressen din klasse?

Takk for all hjelp.

Publisert på 07/12/2016 klokken 16:46
kilden bruker
På andre språk...                            


1 svar

stemmer
2

Jeg nå funnet ut et svar. Det hoppet ut av FormDialog fordi prompt (presentert i Channel) teller som en melding mottatt på Calling metoden (der jeg ringte LuisDialog), og dermed FormDialog og LuisDialog får en context.Done. Jeg måtte være mer forsiktig med samtalen flyt.

Svarte 08/12/2016 kl. 16:01
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more