我正在使用 Microsoft Bot Framework 开发聊天机器人,最近将框架 3.0 升级到 3.5。升级之前它工作正常,但现在
当用户向我的机器人发送消息时,他会收到欢迎消息。但是当用户响应时,机器人会再次发送欢迎消息。
我怎样才能解决这个问题?这是代码。
private Activity HandleSystemMessage(Activity message)
{
if (message.Type == ActivityTypes.DeleteUserData)
{
// Implement user deletion here
// If we handle user deletion, return a real message
}
else if (message.Type == ActivityTypes.ContactRelationUpdate)
{
// Handle conversation state changes, like members being added and removed
// Use Activity.MembersAdded and Activity.MembersRemoved and Activity.Action for info
// Not available in all channels
}
else if (message.Type == ActivityTypes.ConversationUpdate)
{
// Handle conversation state changes, like members being added and removed
// Use Activity.MembersAdded and Activity.MembersRemoved and Activity.Action for info
// Not available in all channels
logger.Debug("Activity Type " + message.Type);
logger.Debug("Inside conversation update and activity Id is :-"+ message.Id);
ConnectorClient connector = new ConnectorClient(new System.Uri(message.ServiceUrl));
Activity reply = message.CreateReply(ConstantsTable.WelcomeMessage);
connector.Conversations.ReplyToActivityAsync(reply);
message.Type = ActivityTypes.Message;
}
else if (message.Type == ActivityTypes.ContactRelationUpdate)
{
// Handle add/remove from contact lists
// Activity.From + Activity.Action represent what happened
}
else if (message.Type == ActivityTypes.Typing)
{
// Handle knowing tha the user is typing
ConnectorClient connector = new ConnectorClient(new System.Uri(message.ServiceUrl));
Activity reply = message.CreateReply("You are typing");
connector.Conversations.ReplyToActivityAsync(reply);
}
else if (message.Type == ActivityTypes.Ping)
{
ConnectorClient connector = new ConnectorClient(new Uri(message.ServiceUrl));
Activity reply = message.CreateReply("Hello PING. Please reply");
connector.Conversations.ReplyToActivityAsync(reply);
}
return message;
}
但在本地模拟器中,当仅发布这种情况时,它工作正常。
请帮忙。
我相信这可能与几天前推出的一项更改有关; Direct Line 将发送更多信息ConversationUpdate
消息比以前多。
检查公告 https://github.com/Microsoft/BotBuilder/issues/2065 and a 相关问题 https://github.com/Microsoft/BotBuilder/issues/2093(与你的类似,但是在node.js
).
首先ConversationUpdate
当机器人添加到对话中时发送。
之后,每增加一个ConversationUpdate
当新用户加入对话时发送。
所以,我认为这里的解决方案是检查添加的成员(activity.MembersAdded
)
else if (message.Type == ActivityTypes.ConversationUpdate)
{
if (message.MembersAdded.Any(o => o.Id == message.Recipient.Id))
{
// logic
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)