在Microsoft Bot Framework中,可以使用(在http://docs.botframework.com/connector/tracking-bot-state上记录)在回复消息上设置对话元数据:
// Set a property on the BotUserData
public static void SetBotUserData(this Message message, string property, object data)
// Set a property on the BotConversationData
public static void SetBotConversationData(this Message message, string property, object data)
// Set a property on the BotPerUserInConversationData
public static void SetBotPerUserInConversationData(this Message message, string property, object data)
但是,它仅在回复邮件时才有效。是否可以在对话中设置状态而不回复消息?
答案 0 :(得分:0)
是的。您将需要botId,userId和消息。您可以执行以下操作:
using (var scope = DialogModule.BeginLifetimeScope(Conversation.Container, message))
{
var client = scope.Resolve<IConnectorClient>();
var data = await client.Bots.GetUserDataAsync(botId, userId);
data.SetProperty("key", "value");
await client.Bots.SetUserDataAsync(botId, userId, data);
}
答案 1 :(得分:0)
我找到了解决方法。
简单地做一些事情:
var reply = message.CreateReplyMessage(null);
reply.SetBotConversationData("MyData", myData);
return reply;
这很有效。机器人没有回复,并且会话中设置了状态。不知道这是否是一个很好的方法。