You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用C#的Bot Framework Conversation Update:Webchat频道欢迎消息重复排查

解决Bot发送两次欢迎消息的问题

嘿,这个问题在Web Chat里挺常见的,我来帮你理清楚原因和解决办法!

首先,为什么会收到两次欢迎回复?核心原因是Web Chat在会话初始化时会触发两次ConversationUpdate事件:一次是把Bot添加到会话中,另一次是把用户加入会话。如果你的代码没有区分这两个事件,就会两次触发欢迎消息的逻辑。

接下来是具体的解决步骤:

  • 过滤Bot自身的加入事件:
    你需要在处理ConversationUpdate时,判断新增的成员是不是用户,而不是Bot自己。因为Bot加入会话的事件完全不需要发送欢迎消息,只需要响应用户加入的那次。

    举个JavaScript(Bot Framework v4)的例子:

    async onTurn(context) {
        if (context.activity.type === ActivityTypes.ConversationUpdate) {
            const membersAdded = context.activity.membersAdded;
            // 遍历新增成员,排除Bot自己
            for (const member of membersAdded) {
                if (member.id !== context.activity.recipient.id) {
                    await context.sendActivity("嗨!欢迎使用我的Bot 😊");
                }
            }
        }
        // 其他逻辑...
    }
    
  • 用状态标记避免重复发送:
    有时候即使过滤了Bot事件,某些场景下(比如刷新Web Chat页面)还是可能触发重复的用户加入事件。这时候可以用Bot的会话状态存储,标记该会话已经发送过欢迎消息,避免重复响应。

    代码示例(还是JS):

    async onTurn(context) {
        if (context.activity.type === ActivityTypes.ConversationUpdate) {
            const membersAdded = context.activity.membersAdded;
            const welcomeState = await this.conversationState.createProperty('WelcomeSent').get(context, { sent: false });
            
            for (const member of membersAdded) {
                if (member.id !== context.activity.recipient.id && !welcomeState.sent) {
                    await context.sendActivity("嗨!欢迎使用我的Bot 😊");
                    welcomeState.sent = true;
                    await this.conversationState.saveChanges(context);
                }
            }
        }
        // 其他逻辑...
    }
    
  • 额外注意Web Chat的特殊情况:
    如果你是嵌入Web Chat到自己的页面,还要检查是否因为页面加载时的重复初始化导致触发多次会话事件。确保Web Chat的初始化代码只执行一次,避免重复创建会话。

这两个方法结合起来,基本就能解决你遇到的两次欢迎回复的问题啦!

内容的提问来源于stack exchange,提问作者Sanjeev Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:31:31