Hvordan unngå "Beklager, min bot kode har et problem" i Microsoft Bot Work

stemmer
17

Jeg har en bot som kjører på Azure + Bot Work + LUIS (via LuisDialog).

Hvis brukeren skjer til å sende to meldinger i en rask rekkefølge (før boten har en sjanse til å svare på), de ser denne feilmeldingen på sin Facebook Messenger eller web embed:

Beklager, min bot kode har et problem.

Når debugging gjennom bot kanal emulator, ser jeg at feilen er dette:

Text: Feil: Response statuskode indikerer ikke lykkes. 429 (for mange forespørsler) på System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Oppgave oppgave) på System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Oppgave oppgave) Microsoft.Bot.Builder.Luis.LuisService.d__4.MoveNext ()

Den ende av stabelen spor viser at feilen oppsto ved denne linje i min MessageController.cs:

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

Dette er rart, fordi jeg bruker en betalt versjon av LUIS som tillater opp til 10 samtaler per sekund.

I alle fall, jeg prøvde å pakke hele koden i MessageController.cs inn en prøve / catch-blokken, og returnerer denne verdien uavhengig av et unntak:

return Request.CreateResponse(HttpStatusCode.OK);

Likevel, brukerne ser feilmeldingen Beklager, min bot kode har et problem som i utgangspunktet betyr at det er et ubehandlet unntak.

Hvordan kan jeg forhindre at denne meldingen blir vist til brukere, eller ta unntaket?

Publisert på 21/09/2016 klokken 07:07
kilden bruker
På andre språk...                            


3 svar

stemmer
11

Meldingen sendes til brukeren i PostUnhandledExceptionToUserTaskbare fordi unntak har rømt dialogen roten A. Du kan unngå denne situasjonen ved å hindre Ubehandlede unntak fra rømmer dialogen roten A.

Ett alternativ er å legge til en annen dialog rot B som bare kaller din dialog A og så bare ignorerer IAwaitable<R>resultat som sendes til ResumeAfter<R>tilbakeringing.

Chain.DefaultIfException gir en implementering av dialog B.

Svarte 28/09/2016 kl. 17:27
kilden bruker

stemmer
2

Du kan bruke DefaultIfExceptionfunksjonen for Bot Work til internt håndtere unntaket.

Det ser ut som dette:

await Conversation.SendAsync(
   activity, () => new Dialogs.RootDialog().DefaultIfException()
);
Svarte 30/08/2017 kl. 12:58
kilden bruker

stemmer
0

Når du får en 403 eller 429, kan det være "oppbrukt" eller "Too many request" henholdsvis i det første tilfellet må du opprette en nøkkel igjen og ategn til LUIS App, de første-1000 endepunkt søk er gratis og det vil bli oppdatert hver måned, må du bruke den klokt eller du må bruke en betalt tier.

For det andre tilfellet har du også en grense for forespørselen, se grenser dokumentasjon

Her kan du finne Microsoft dokumentasjon om dette.

Svarte 22/03/2019 kl. 00:04
kilden bruker

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