Auto-sette meldinger i LuisDialog ved å overstyre MessageReceived

stemmer
1

Jeg prøver å lage en LuisDialogder alle meldinger fra brukeren vil bli automatisk oversatt til det språket mitt LUIS app forstår.

For å gjøre det, er jeg overstyrer LuisDialog.MessageReceived()metoden.

I auto-sette meldingen til mitt språk, men hvor jeg står fast er hvordan du oppdaterer verdien av IAwaitable<IMessageActivity>.Textslik at det er transparent tilgjengelig for intent-baserte metoder inne i dialogen.

[Serializable]
class LuisDialogAutoTranslated<T> : LuisDialog<T>
{
    protected override async Task MessageReceived(IDialogContext context, IAwaitable<IMessageActivity> msg)
    {
        var activity = await msg;

        activity.Text = await new CognitiveTranslator().TranslateToCurrentLanguage(activity.Text);

        //????
        //how to replace the value of IMessageActivity.Text
        //inside the IAwaitable msg?
        //????

        await base.MessageReceived(context, msg);
    }
} 
Publisert på 12/01/2017 klokken 06:38
kilden bruker
På andre språk...                            


1 svar

stemmer
3

I stedet for å overstyre MessageReceivedJeg vil anbefale deg å overstyre GetLuisQueryTextAsync, som i utgangspunktet mottar meldingen og returnere teksten som vil bli sendt til LUIS ( se her ).

Hvis du likevel ønsker å overstyre MessageReceived, så har du opprette en Awaitable<T>hjelp Awaitable.FromItem<IMessageActivity>(activity)som vist i koden under.

var activity = await msg;

activity.Text = await new CognitiveTranslator().TranslateToCurrentLanguage(activity.Text);

msg = Awaitable.FromItem<IMessageActivity>(activity);

await base.MessageReceived(context, msg);
Svarte 12/01/2017 kl. 10:50
kilden bruker

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