Skip to content

[Feature]: 企业微信智能机器人用户反馈功能支持 #2077

@6mvp6

Description

@6mvp6

这是一个?

新功能

详细描述

功能概述

实现 LangBot 接入企业微信智能机器人的用户反馈功能,支持接收和记录用户对 AI 回复的点赞/点踩反馈,并在 Web 前端日志监控中展示反馈数据。

背景

根据企业微信官方 API,当开发者通过流式消息回复用户时,可以设置 stream.feedback.id 字段。用户在客户端对消息进行点赞/点踩操作后,企业微信会将反馈事件回调给机器人服务。

参考企业微信服务端API文档

1、接收消息
2、用户反馈事件
3、流式消息回复

技术实现要点

  1. 流式回复设置 feedback_id
  • LangBot 流式回复企业微信智能机器人消息时,在 stream.feedback.id 字段传入唯一标识
  • 建议使用 UUID 格式,便于后续关联反馈事件
  1. 接收反馈事件
  • 企业微信回调事件格式(参考官方文档):
{
  "msgid": "CAIQ16HMjQYY/NGagIOAgAMgq4KM0AI=",
  "create_time": 1700000000,
  "aibotid": "AIBOTID",
  "chatid": "CHATID",
  "chattype": "group",
  "from": {
      "userid": "USERID"
  },
  "msgtype": "event",
  "event": {
      "eventtype": "feedback_event",
      "feedback_event": {
          "id": "FEEDBACKID",
          "type": 2,
          "content": "能再详细一些么",
          "inaccurate_reason_list": [2, 4]
      }
  }
}
  • 字段说明:
    • event.eventtype : 固定为 feedback_event
    • event.feedback_event.id : 反馈唯一标识,对应流式回复时设置的 feedback.id
    • event.feedback_event.type : 反馈类型,1=点赞,2=点踩,3=取消准确/不准确
    • event.feedback_event.content : 用户反馈文本内容
    • event.feedback_event.inaccurate_reason_list : 不准确原因代码列表
  1. 数据库存储反馈记录
  • 新增 monitoring_feedback 表,字段包括:
    • id : 主键
    • feedback_id : 企业微信返回的反馈唯一标识
    • feedback_type : 反馈类型 (1=点赞, 2=点踩, 3=取消准确/不准确)
    • feedback_content : 用户反馈文本
    • inaccurate_reasons : 不准确原因代码列表 (JSON)
    • bot_id , pipeline_id , session_id , message_id , stream_id : 关联上下文
    • user_id , platform : 用户和平台信息
    • timestamp : 反馈时间
  1. 前端日志监控展示
  • 在 LangBot Web 的监控页面新增「反馈记录」标签页
  • 展示字段:反馈类型(👍/👎)、反馈内容、不准确原因、关联消息、时间等
  • 支持按机器人、流水线、时间范围筛选

预期效果

  • 用户在企业微信客户端对 AI 回复进行点赞/点踩
  • LangBot 自动接收并存储反馈事件
  • 管理员可在 Web 后台查看用户反馈统计和详情
  • 便于分析 AI 回复质量,优化提示词和模型配置

相关修改文件

  • src/langbot/pkg/platform/sources/wecombot.py - 企业微信适配器
  • src/langbot/libs/wecom_ai_bot_api/api.py - API 客户端
  • src/langbot/pkg/pipeline/monitoring_helper.py - 监控辅助类
  • src/langbot/pkg/api/http/service/monitoring.py - 监控服务
  • src/langbot/pkg/entity/persistence/monitoring.py - 数据库实体
  • web/src/app/home/monitoring/ - 前端监控页面

待实现功能

以下功能在当前版本中尚未实现,后续版本需要补充:

  1. 取消反馈处理 (feedback_event.type = 3)
    根据企业微信官方文档, feedback_event.type 有三种取值:
  • 1 : 准确(点赞)
  • 2 : 不准确(点踩)
  • 3 : 取消准确/不准确
    当前代码仅处理了 type=1 和 type=2,未实现 type=3(取消反馈)的逻辑。
    建议实现方案:
  • 收到 type=3 时,更新对应 feedback_id 的记录状态为「已取消」
  • 或在前端展示时标记为「已取消」状态
  1. 负反馈原因的友好展示
    feedback_event.inaccurate_reason_list 返回的是原因代码列表(如 [1, 2, 4] ),当前前端仅显示数字代码,未转换为具体文字说明。
    根据企业微信官方文档,负反馈原因代码对应关系:
    含义 1:与问题无关;2:内容不完整;3 内容有错误;4 数据分析错误
    建议在前端展示时,将数字代码映射为对应的中文说明,提升可读性。

Metadata

Metadata

Assignees

No one assigned

    Labels

    IM: wecom企业微信 适配器相关 / WeCom and WeComCS adapter relatedeh: Featureenhance: 新功能添加 / add new featuresm: Platform机器人管理相关 / Bots managementpd: Need designpending: 需要进一步设计的功能 / wait for us to design

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions