sammenheng post async unntak

stemmer
0

Bruke bot simulator:

Har denne koden i MessagesController:

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

I RootLuisDialog:

        [LuisIntent()]
        [LuisIntent(None)]
        public async Task None(IDialogContext context, LuisResult result)
        {
            string message = $Sorry, I did not understand '{result.Query}'. Type 'help' if you need assistance.;

            await context.PostAsync(message);

            context.Wait(this.MessageReceived);
        }

Dette gjør et unntak:

{ Skriv 'Microsoft.Bot.Connector.Activity' i Assembly 'Microsoft.Bot.Connector, Version = 3.0.0.0, Culture = nøytral, PublicKeyToken = 31bf3856ad364e35' ikke er markert som serialiserbar.} Data: {System.Collections. ListDictionaryInternal} HRESULT: -2146233076 HELPLINK: null InnerException: null Melding: Skriv 'Microsoft.Bot.Connector.Activity' i forsamlingens Microsoft.Bot.Connector, versjon = 3.0.0.0, Culture = nøytral, PublicKeyToken = 31bf3856ad364e35 'er ikke merket som serialiserbar. Kilde: mscorlib stakksporing: i System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers (RuntimeType type) \ r \ n ved System.Runtime.Serialization.FormatterServices.GetSerializableMembers (Type Type, StreamingContext sammenheng) \ r \ n i system. Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo () \ r \ n ved System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize (Object obj, ISurrogateSelector surrogateSelector, StreamingContext sammenheng SerObjectInfoInit serObjectInfoInit, IFormatterConverter omformer, objectWriter objectWriter, SerializationBinder bindemiddel) \ r \ n ved System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Write (WriteObjectInfo objectInfo, NameInfo memberNameInfo, NameInfo typeNameInfo) \ r \ n ved System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize ( objekt~~POS=TRUNC graf, Header [] inHeaders, __BinaryWriter serWriter, Boolean FKontroller) \ r \ n ved System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize (St ris serializationStream, Objekt graf, Header [] overskrifter, Boolean FKontroller) \ r \ n ved System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize (Stream serializationStream, Object graf) \ r \ n i Microsoft.Bot.Builder. Internals.Fibers.FormatterStore 1.Microsoft.Bot.Builder.Internals.Fibers.IStore<T>.Save(T item)\r\n at Microsoft.Bot.Builder.Internals.Fibers.ErrorResilientStore1.Microsoft.Bot.Builder.Internals.Fibers.IStore.Save (T element) \ r \ n ved Microsoft.Bot.Builder.Internals.Fibers.FactoryStore 1.Microsoft.Bot.Builder.Internals.Fibers.IStore<T>.Save(T item)\r\n at Microsoft.Bot.Builder.Dialogs.Internals.DialogTask.<Microsoft-Bot-Builder-Dialogs-Internals-IPostToBot-PostAsync>d__211.MoveNext () \ r \ n- - Slutt på stakk spor fra forrige sted hvor unntak oppsto --- \ r \ n ved System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (oppgave oppgave) \ r \ n ved System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (oppgave oppgaven) \ r \ n ved Microsoft.Bot.Builder.Dialogs.Internals.ReactiveDial ogTask. d__5 1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Microsoft.Bot.Builder.Dialogs.Internals.LocalizedDialogTask.<Microsoft-Bot-Builder-Dialogs-Internals-IPostToBot-PostAsync>d__21.MoveNext () \ r \ n --- End of stabel spor fra forrige sted hvor unntak oppsto --- \ r \ n ved System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Oppgave oppgave) \ r \ n i System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (oppgave oppgave) \ r \ n ved Microsoft.Bot.Builder.Dialogs.Internals.ScoringDialogTask 1.<Microsoft-Bot-Builder-Dialogs-Internals-IPostToBot-PostAsync>d__61.MoveNext () \ r \ n --- End of stabel spor fra foregående sted hvor unntak ble kastet --- \ r \ n ved System.Runtime.Co mpilerServices.TaskAwaiter.ThrowForNonSuccess (oppgave oppgave) \ r \ n ved System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (oppgave oppgave) \ r \ n i Microsoft.Bot .Builder.Dialogs.Internals.PersistentDialogTask.d__6 1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at Microsoft.Bot.Builder.Dialogs.Internals.PersistentDialogTask.<Microsoft-Bot-Builder-Dialogs-Internals-IPostToBot-PostAsync>d__61.MoveNext () \ r \ n --- End of stabel spor fra forrige sted hvor unntak oppsto --- \ r \ n i System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (oppgave oppgave) \ r \ n ved System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (oppgave oppgave) \ r \ n i Microsoft.Bot.Builder .Dialogs.Conversation.d__4.MoveNext () \ r \ n --- End of stabel spor fra forrige sted hvor unntak oppsto --- \ r \ n ved System.Runtime.CompilerServices.TaskAwaiter.Throw ForNonSuccess (Oppgave oppgave) \ r \ n ved System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (oppgave oppgave) \ r \ n i Microsoft.Bot.Builder.Dialogs.Conversation.d__2.MoveNext () \ r \ n --- End of stabel spor fra foregående sted hvor unntak oppsto --- \ r \ n ved System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (oppgave oppgave) \ r \ n ved System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (oppgave oppgave) \ r \ n i System.Runtime.CompilerServices.TaskAwaiter.GetResult () \ r \ n i MessengerBot.MessagesController.d__1.MoveNext () i C: \ MyApp \ MessagesController.cs-linjen 60 TargetSite: {System.Reflection.MemberInfo [] InternalGetSerializableMembers ( System.RuntimeType)}

Jeg er ikke ganske sikker på at jeg forstår hva unntak her er ... litt hjelp?

Edit: I løst problemet med nye konstruktøren for rootluisdialog med parameteren - aktivitet.

avvente Conversation.SendAsync (aktivitet, () => ny RootLuisDialog (aktivitet)); og deretter i RootLuisDialog jeg har denne:

 Activity activity;
public RootLuisDialog(Activity activity)
        {
            this.activity = activity;

        }
Publisert på 20/01/2017 klokken 13:15
kilden bruker
På andre språk...                            


1 svar

stemmer
1

Den Activityklassen er ikke serial, som er feilen du ser. Alle offentlige eller vernede eiendommer i LuisDialogbehovet for å være serial slik at de kan lagres som sammenhenger mellom svarene.

Forutsatt din Dialog klassen er arvet fra LuisDialogså dette bør allerede være å ta vare på å gripe tak i aktivitet fra den hensikt - generelt vil du arbeide med konteksten og resultatet fra LUIS snarere enn aktiviteten direkte (som du ville gjort hvis du var å skape en rett opp IDialogimplementering).

Passerer den fra kontrolleren heller ikke vil gjøre det du kan forvente som det ikke vil bli inkludert på påfølgende samtaler i samtalen.

Svarte 21/01/2017 kl. 21:21
kilden bruker

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