2017-04-04 5 views
0

Ich versuche, Konversationsdaten über Status-Client zu speichern, und ich erhalte inkonsistente Ergebnisse zwischen dem Emulator und den SMS-Kanälen. Testen meine Bot App über Emulator ermöglicht es mir zu SetConversationData und GetConversationData in Ordnung, aber sobald ich es auf SMS mit Service url versuchen: https://sms.botframework.com/ bekomme ich folgende Fehlermeldung:Botstate.SetConversationData - Unerwartetes Zeichen beim Analysieren von Wert gefunden

"exceptionMessage": "Unable to deserialize the response.", "exceptionType": "Microsoft.Rest.SerializationException", "stackTrace": " at Microsoft.Bot.Connector.BotState.d__9.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.Connector.BotStateExtensions.d__9.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.Connector.BotStateExtensions.SetConversationData(IBotState operations, String channelId, String conversationId, BotData botData)\r\n at OutboundTestApp.Controllers.OutboundController.Post(OutboundConversationData`1 outboundData)", "innerException": { "message": "An error has occurred.", "exceptionMessage": "Unexpected character encountered while parsing value: T. Path '', line 0, position 0.", "exceptionType": "Newtonsoft.Json.JsonReaderException", "stackTrace": " at Newtonsoft.Json.JsonTextReader.ParseValue()\r\n at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType(JsonReader reader, JsonContract contract, Boolean hasConverter)\r\n at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)\r\n at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)\r\n at Microsoft.Rest.Serialization.SafeJsonConvert.DeserializeObject[T](String json, JsonSerializerSettings settings)\r\n at Microsoft.Bot.Connector.BotState.d__9.MoveNext()"

Hier ist mein Code, um die Daten zu setzen, wo die channelId ist „sms“, ConversationId ist eine gültige ID und die Daten ist nur eine einfache POCO-Klasse:

var stateClient = new StateClient(new Uri(serviceUrl), account); 
    stateClient.BotState.SetConversationData(outboundData.ChannelId, conversationResponse.Id, new BotData(data: outboundData.Data)); 

Soll ich SetPrivateConversationDataWithHttpMessagesAsync und übergeben Sie den Inhaltstyp und stellte meine botdata auf einen jSON-String verwenden? Ich fühle, dass der Zustandsklient annimmt, dass json irgendwo weitergegeben wird, aber das Objekt, das es deserialisiert, ist tatsächlich nicht json.

Antwort

0

Das Problem ist, dass die ServiceUrl falsch beim Erstellen des Zustandsclients festgelegt wurde. Die BaseUri sollte https://state.botframework.com sein.

Verwandte Themen