C# 当用户向我的机器人发送消息时,他会收到欢迎消息。但当用户对此做出响应时,bot会再次发送欢迎消息。我怎样才能解决这个问题?

C# 当用户向我的机器人发送消息时,他会收到欢迎消息。但当用户对此做出响应时,bot会再次发送欢迎消息。我怎样才能解决这个问题?,c#,botframework,C#,Botframework,我正在使用Microsoft Bot Framework开发聊天机器人,最近我将Framework 3.0升级到了3.5。升级之前,它工作正常,但现在 当用户向我的机器人发送消息时,他会收到欢迎消息。但当用户对此做出响应时,bot会再次发送欢迎消息。 我怎样才能解决这个问题?这是密码 private Activity HandleSystemMessage(Activity message) { if (message.Type == ActivityTy

我正在使用Microsoft Bot Framework开发聊天机器人,最近我将Framework 3.0升级到了3.5。升级之前,它工作正常,但现在

当用户向我的机器人发送消息时,他会收到欢迎消息。但当用户对此做出响应时,bot会再次发送欢迎消息。 我怎样才能解决这个问题?这是密码

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消息

检查和类似于您的,但在node.js中

将bot添加到会话中时,将发送第一个ConversationUpdate。 之后,当新用户加入会话时,会发送每个附加的ConversationUpdate

因此,我认为这里的解决方案是检查成员添加的活动。MembersAdded


我相信这可能与几天前推出的一项变革有关;其中Direct Line将发送比以前更多的ConversationUpdate消息

检查和类似于您的,但在node.js中

将bot添加到会话中时,将发送第一个ConversationUpdate。 之后,当新用户加入会话时,会发送每个附加的ConversationUpdate

因此,我认为这里的解决方案是检查成员添加的活动。MembersAdded


您需要在主对话框中使用基于意图的切换操作来处理该问题,并为相关意图添加对话框


介绍和问候之间有区别。

您需要在主对话框中使用基于意图的切换操作来处理这一问题,并为相关意图添加对话框


介绍和问候之间是有区别的。

你在哪个频道看到了这个问题?这是我发布它的web聊天链接。@Sandy每当用户重新加载页面时,在bot框架中,特别是在Webchat中,它都会触发activity ConversationUpdate。所以,每次他都会收到同样的欢迎信息。您可以使用Channel Idactivity.ChannelId和UserID activity.From.Id根据用户状态值处理问题。您在哪个频道看到问题?这是我发布问题的web聊天链接。@Sandy每当用户重新加载页面时,在bot framework中,尤其是在Webchat中,它将触发activity ConversationUpdate。所以,每次他都会收到同样的欢迎信息。您可以使用Channel Idactivity.ChannelId和UserID activity.From.Id根据用户状态值来处理它。您是对的!一周前我还没有面对这个问题。谢谢我已经这样做了,即将用activity.memeberAdded通知您。在我的情况下,Bot发送了两条问候信息,此附加id检查修复了我发送IForm时不起作用的问题,并且我始终得到“不是首选语言选项。”,有什么想法吗?我正在使用相同的方法,但除非用户发起对话,否则不会发送欢迎消息。我正在使用网络机器人聊天应用程序的直连电话。有什么想法吗?你说得对!一周前我还没有面对这个问题。谢谢我已经这样做了,即将用activity.memeberAdded通知您。在我的情况下,Bot发送了两条问候信息,此附加id检查修复了我发送IForm时不起作用的问题,并且我始终得到“不是首选语言选项。”,有什么想法吗?我正在使用相同的方法,但除非用户发起对话,否则不会发送欢迎消息。我正在使用网络机器人聊天应用程序的直连电话。有什么想法吗?
    else if (message.Type == ActivityTypes.ConversationUpdate)
    {
        if (message.MembersAdded.Any(o => o.Id == message.Recipient.Id))
        {
            // logic
        }
    }