Hvordan bruke LuisDialog i en kjede flytende dialog?

stemmer
3

Jeg ønsker å bruke en kjede grensesnitt som min dialog root for å bytte samtalen av brukeren melding, for eksempel jeg kan kalle en HelpDialog hvis brukeren skrive 'hjelp' og la de andre inngangene forvaltes av LuisDialog.

Mitt problem er at LuisDialog vente på en melding fra brukeren så, i en kjede miljø, må brukeren skrive dobbelt inngang før Luis tilbake en av hans hensikt.

Dette er mitt eksempel kode:

public static readonly IDialog<string> dialog = Chain
        .PostToChain()
        .Switch(
            new Case<IMessageActivity, IDialog<string>>(msg =>
                {
                    var regex = new Regex(^help$, RegexOptions.IgnoreCase);
                    return regex.IsMatch(msg.Text);
                },
                (ctx, msg) =>
                {
                    return new HelpDialog();
                }),

            new DefaultCase<IMessageActivity, IDialog<string>>(
                (ctx, msg) => {
                    return new MyLuisDialog();
                })
        )           
        .Unwrap().PostToUser();

Er det mulig å bruke LuisDialog med kjede eller hvordan kan jeg bruke flere Dialoger sammen?

Takket være Marco

Publisert på 21/10/2016 klokken 12:10
kilden bruker
På andre språk...                            


1 svar

stemmer
0

Å bruke, context.Forward og context.Call krever for å opprette en ny klasse implementere IDialog.

Hvis du ikke liker å gjøre det, kan du prøve under koden i LuisDialog gjennomføring. Det fungerer!

public override async Task StartAsync(IDialogContext context)
    {
        await this.MessageReceived(context, Awaitable.FromItem(context.Activity.AsMessageActivity()));
    }
Svarte 20/03/2017 kl. 14:02
kilden bruker

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