如何在机器人中使用状态clinet保存数据

时间:2016-09-23 13:32:05

标签: bots botframework botbuilder

您好我正在使用bot项目,因为我在机器人状态服务中使用StateClient保存当前日期(2016-09-23T18:38:41)格式。这里我面临问题,当我使用SetProperty()方法保存日期值时工作正常,但当我想使用GetProperty()方法获取值时,它给出了错误的日期格式,如(1/1/0001 12:00: 00 AM)。  对于上面的概念,我在我的项目中编写了以下代码行     在这里输入代码

 var result = new ValidateResult { IsValid = true, Value = message.Text };
 DateTime? dt = DateTime.ParseExact(message.Text, "dd/MM/yyyy",      CultureInfo.InvariantCulture);
                if (dt.Value.Date < DateTime.Now.Date)
                {
                    await context.PostAsync("**Please enter a valid date like in the format DD/MM/YYY**" + " \r \n ");
                    result.IsValid = false;
                }
     else
      {
                    TimeSpan ts = new TimeSpan(DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second);
                    dt = dt.Value.Date + ts;
                    d = dt.Value.Date + ts;
                    result.Value = dt;

      //saving the date format using SetProperty() using StateClient and BotData
                    BotData userData = await stateClient.BotState.GetUserDataAsync(message.ChannelId, message.From.Id);
                    userData.SetProperty<DateTime?>("dt", dt);-->Here i am saving the date format like (2016-09-23T18:38:41)
                    await stateClient.BotState.SetUserDataAsync(message.ChannelId, message.From.Id, userData);
                    await context.PostAsync("user message");
                }



     //Getting the data using GetProperty() using BotData
         BotData userData = await stateClient.BotState.GetUserDataAsync           (message.ChannelId, message.From.Id);
        var date= userData.GetProperty<DateTime>("dt");-->here i am getting the date format is like(1/1/0001 12:00:00 AM)

请告诉我上述代码中的问题是什么,我该如何解决。

1 个答案:

答案 0 :(得分:0)

似乎很可能您没有在用户bot数据包GetUserDataAsync和SetUserDataAsync操作中使用一致(message.ChannelId,message.From.Id),并且因为DateTime是值类型,所以GetProperty返回默认值(日期时间)值。