-1

我正在研究 MS Bot,现在卡在某一点上,我有两个问题

1) How can I get conversation count in MessageController Post method?
2) The values of userData as mentioned in below code becomes null, when bot came back to messagecontroller for further conversation. My bot flow is as below.

MessageController 类调用 (Chain.From(() => new BotManager()) -> 在 BotManager() 中列出了所有意图 -> 从 Intents 我跳转到特定表单,例如我有表单构建器的 SampleForm。

StateClient sc = activity.GetStateClient();
BotData userData = sc.BotState.GetUserData(activity.ChannelId, activity.From.Id);
UserDetails usr = new UserDetails();
usr.EmailId = "test@gmail.com";
userData.SetProperty<string>("EmailId", usr.EmailId);
sc.BotState.SetUserData(activity.ChannelId, activity.From.Id, userData);
4

2 回答 2

0

1)我不知道你为什么要创建UserDetails usr对象,你用它来分配 EmailId,然后你不将它用于其他任何事情。

2)要获得您应该使用的 SetUserData 重新分配的内容:

userData.GetProperty<string>("EmailId");
于 2017-05-17T15:28:36.797 回答
0

在 RootDialog(实现)IDialog 中,您可以(并且可能是一个很好的做法)使用 IDialogContext 对象的UserData更多信息)属性来为用户在整个对话中存储信息。

在下面的代码中,我尝试检索 ConversationCount 键,然后增量是否存在。然后我再次设置结果值(它在内部将值存储在 BotState 中)。

context.UserData.TryGetValue("ConversationCount", out int count = 0);
//Increment the message received from the user.
count++;

//Increment when the bot send a message to the user.
count++;
context.UserData.SetValue("ConversationCount", count);

您可以对 Email 属性执行相同的操作。

于 2017-05-18T14:57:29.427 回答