【发布时间】:2019-01-29 22:25:04
【问题描述】:
我正在使用 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;
}
但是在本地模拟器中它工作正常,而只发布这种情况。 请帮忙。
【问题讨论】:
-
您在哪个渠道看到问题?
-
这是我发布的网络聊天链接。
-
@Sandy 每当用户重新加载页面时,在机器人框架中,尤其是对于 Webchat,它将触发活动
ConversationUpdate。因此,每次他都会收到相同的欢迎信息。您可以使用 Channel Idactivity.ChannelId和 UserIDactivity.From.Id根据用户状态值来处理它。
标签: c# botframework