我试图通过状态客户端保存会话数据,我在模拟器和短信通道之间得到不一致的结果。通过模拟器测试我的机器人应用程序允许我使用SetConversationData和GetConversationData,但是一旦我在服务URL上尝试它:https://sms.botframework.com/我得到以下错误:
“exceptionMessage”:“无法反序列化响应。”, “exceptionType”:“Microsoft.Rest.SerializationException”, “stackTrace”:“at Microsoft.Bot.Connector.BotState.d__9.MoveNext()\ r \ n --- ---从抛出异常的上一个位置开始的堆栈跟踪结束---在System.Runtime.CompilerServices上的\ r \ n .TaskAwaiter.ThrowForNonSuccess(任务任务)\ r \ n在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\ r \ n在Microsoft.Bot.Connector.BotStateExtensions.d__9.MoveNext()\ r \ n-- - 从抛出异常的先前位置开始的堆栈跟踪结束---在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\ r \ n处于System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)的\ r \ n )\ r \ n在Microsoft.Bot.Connector.BotStateExtensions.SetConversationData(IBotState操作,String channelId,String conversationId,BotData botData)\ r \ n在OutboundTestApp.Controllers.OutboundController.Post(OutboundConversationData`1 outboundData)“, “innerException”:{ “message”:“发生错误。”, “exceptionMessage”:“解析值时遇到意外的字符:T。路径'',第0行,位置0”, “exceptionType”:“Newtonsoft.Json.JsonReaderException”, “stackTrace”:“在Newtonsoft.Json.Json.JsonTextReader.ParseValue()\ r \ n,在Newtonsoft.Json.Serialization上的Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType(JsonReader reader,JsonContract contract,Boolean hasConverter)\ r \ n。 JsonSerializerInternalReader.Deserialize(JsonReader reader,Type objectType,Boolean checkAdditionalContent)\ r \ n在Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader,Type objectType)\ r \ n在Microsoft.Rest.Serialization.SafeJsonConvert.DeserializeObject [T](字符串json,JsonSerializerSettings设置)\ r \ n在Microsoft.Bot.Connector.BotState.d__9.MoveNext()“
这是我的代码,用于设置channelId为“sms”的数据,conversationId是一个有效的id,数据只是一个简单的POCO类:
var stateClient = new StateClient(new Uri(serviceUrl), account);
stateClient.BotState.SetConversationData(outboundData.ChannelId, conversationResponse.Id, new BotData(data: outboundData.Data));
我应该使用SetPrivateConversationDataWithHttpMessagesAsync并传入内容类型并将我的botdata设置为json字符串吗?我觉得状态客户端假设json正在某处传递,但它反序列化的对象实际上不是json。