BOT å spørre enhet i andre trinn

stemmer
2

Bygge en enkel kundeservice BOT, har utviklet LUIS modell, og det fungerer bra når ordren nei. er tilveiebragt i det første trinnet i seg selv. for eksempel. hva er status på min bestilling ABC0898787? hvor hensikten er korrekt registrert og ABC0898787 identifiseres som enhet.

Men må tilpasse bot for å ha en samtale som følger:

Bruker: hva er status for bestillingen min

Bot: vennligst oppgi ordrenummer

Bruker: (Det er ABC0986767) eller (ABC0986767)

Bot bør være i stand til å kartlegge antall til foretak og behandle forespørselen.

koden for hensikten metoden, hva den beste måten å integrere andre trinn uten å sette opp LUIS modellen til å ta enkle ord som enhet?

   [LuisIntent(OrderStatus)]
        public async Task OrderStatus(IDialogContext context, LuisResult result)
        {
            var returnMsg = You wanted to check the order status;
            var orderStatus = Dispatched;
            var deliveryDate = DateTime.Now.AddDays(3);

            var entities = new List<EntityRecommendation>(result.Entities);
            if(entities.Any((entity)=> entity.Type == Order))
            {
                var orderEntity = entities.Where((entity) => entity.Type == Order).FirstOrDefault();
                var resolutionStr = orderEntity.Entity;
                if(!string.IsNullOrEmpty(resolutionStr))
                {
                    returnMsg = Your order  + resolutionStr +  is  + orderStatus +  and expected to arrive  + deliveryDate.Humanize();
                }
            }

            await context.PostAsync(returnMsg);
            context.Wait(MessageReceived);
        }
Publisert på 22/09/2016 klokken 06:44
kilden bruker
På andre språk...                            


1 svar

stemmer
1

Bytt MessageReceived med navnet på metoden som tar brukerens input. Før det, sjekk om foretaket eksisterer. Hvis det finnes, og deretter bruke MessageReceived, ellers denne metoden.

pseudo~~POS=TRUNC:

if (entity.exists) 
    OutputResult()
    Context.Wait(MessageReceived)
else //entitiy doesn't exist
    SendMessage("Please enter order number")
    Context.Wait(MyMethod)

Metoden kalles myMethod begynner slik:

public async Task MyMethod(IDialogContext context, IAwaitable<IMessageActivity> argument) 
{
    var response = await argument;
    string text = response.Text;

Jeg tror Microsoft ikke gjorde det klart nok at MessageReceived er bare et navn på en metode (som du ikke ser), og det kan bli erstattet med navnet på noen annen metode. Det kan også være flere context.Waits i en metode avhengig av en betingelse, så lenge koden ikke når en context.Wait () to ganger før brukeren sender en ny melding.

Svarte 22/09/2016 kl. 09:04
kilden bruker

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