Hva er den riktige flyten til å håndtere bildeinngangene i en dialog som bruker LUIS?

stemmer
0

Jeg setter sammen en bot i C # som aksepterer bilde innspill fra brukeren samt skriving. Jeg bruker LUIS som AI rammeverk for å bestemme hensikter i en dialog mønster. Imidlertid virker det som om begge typer innspill kan ikke eksistere: LUIS og vedlegg. Jeg vil gjerne vite om det er en anbefalt mønster for dette scenariet. Vennligst hjelp! : |

Publisert på 18/01/2017 klokken 06:19
kilden bruker
På andre språk...                            


4 svar

stemmer
1

I MessageController, kan du få bilde / vedlegg verdier

activity.Attachments    

vedlegg Properties

 await Conversation.SendAsync(activity, () => new RootLuisDialog();    

LuisDialogvil håndtere tekstmeldinger, bortsett fra teksten vil det vurdere alle andre ting som nullparameter. Men,

Den Prompts.attachment () metoden vil be brukeren om å laste opp et vedlegg som et bilde eller video. Brukerens svar vil bli returnert som en IPromptAttachmentResult.

Her er referanse link.

Svarte 19/01/2017 kl. 06:37
kilden bruker

stemmer
0

Du kan også håndtere det innenfor LUIS dialogen selv.

Her er et eksempel med PromptDialog.Attachment:

[LuisIntent("SomeIntent")]
    public async Task SomeIntent(IDialogContext context, LuisResult result)
    {

        PromptDialog.Attachment(
               context: context,
               resume: ResumeAfterExpenseUpload,
               prompt: "I see you are trying to add an expense. Please upload a picture of your expense and I will try to perform character recognition (OCR) on it.",
               retry: "Sorry, I didn't understand that. Please try again."
           );
     }

    private async Task ResumeAfterExpenseUpload(IDialogContext context, IAwaitable<IEnumerable<Attachment>> result)
    {
        var attachment = await result as IEnumerable<Attachment>;
        var attachmentList = attachment.GetEnumerator();
        if (attachmentList.MoveNext())
        {
            //output link to the uploaded file
            await context.PostAsync(attachmentList.Current.ContentUrl); 

        }
        else
        {
            await context.PostAsync("Sorry, no attachments found!");
        }

    }
Svarte 20/06/2018 kl. 21:22
kilden bruker

stemmer
0

Du kan filtrere ut meldinger som har vedlegg i MessageController.

Du kan se etter vedlegg hjelp

activity.Attachments == null
Svarte 18/01/2017 kl. 20:38
kilden bruker

stemmer
-1

Så jeg fant ut en bedre mønster, men er langs linjene til Praveen svar.

I MesssageController du ønsker å se etter vedlegg activity.Attachments == null, men i tillegg må du lage det som kalles en RootDialog og sende alle samtaler der som du kan videresende samtaler til andre Dialoger.

I mitt tilfelle, jeg videresende meldingene som jeg ønsker LUIS å håndtere en dialog klasse som arver LUIS som en tjeneste. Andre meldinger, for eksempel som vedlegg sendes til en annen dialog klassen skal håndteres.

En annen måte å få et vedlegg og håndtere det inni dialog kode er ved hjelp av PromptAttachmentanrop som en catcher for brukerens input av vedlegg:

 var dialog = new PromptDialog.PromptAttachment(message.ToString(), "Sorry, I didn't get the receipt. Try again please.", 2);
        context.Call(dialog, AddImageToReceiptRecord);

Jubel! :)

Svarte 19/01/2017 kl. 06:39
kilden bruker

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