先说一个常见场景:客户反馈像雪片般涌来,Bug 需要人工从聊天记录里逐条提取,再手动填入 Excel,最后专人整理归类——不仅耗费时间精力,还容易出错遗漏。如今有一种更智能的方案:借助 Dify 将零散的用户反馈转化为结构化数据,直接同步至 Jira 或飞书多维表格。Bug 的所属模块、优先级、严重程度等信息都能自动归类,全程无需人工干预。

准备原始反馈数据源
第一步,在 Dify 中新建一个应用,类型选择「API 模式」——只有此模式才能接入外部 Webhook 触发流程。网页对话模式无法响应外部提交的 Bug 表单,这一点务必注意。
接着进入「设置 → 环境变量」,添加三个变量:【JIRA_API_TOKEN】、【JIRA_EMAIL】、【JIRA_BASE_URL】。值暂时留空,后续再填写。这三项是写入 Jira 必需的认证凭证,缺少任意一个都会导致分类完成后无法入库,整个流程等于白做。
最后,复制当前应用的「API Key」,后续配置 Webhook 时会用到。
设计 Bug 反馈结构化提取 Prompt
在「提示词」模块中新建一个系统提示词,命名为「Bug 结构化提取器」。
输入以下内容(请务必逐字复制,标点符号一个都不能少):
“你是一个资深测试工程师,严格按 JSON 格式输出,字段仅包含:module(字符串,从['登录模块','支付模块','订单模块','APP首页','后台管理']中选一个)、severity(字符串,从['致命','严重','一般','轻微']中选一个)、priority(整数,1=最高,4=最低)、summary(字符串,≤30字,不含标点)、steps(字符串数组,每步≤15字,最多4步)。用户输入可能含错别字或口语化表达,你要推理真实意图。不加解释,不补字段,不输出 JSON 以外任何字符。”
这一步不可跳过——如果使用默认提示词,模型大概率会自由生成描述性文字,而非固定字段的 JSON,后续解析将直接失败,整个自动化流程就会中断。
搭建自动化处理链路
第一步:在工作流中新建一个,命名为「Bug 自动分类流水线」。
第二步:拖入「HTTP请求」节点,URL 填写你自己的 Bug 收集表单接口地址(例如 https://yourdomain.com/api/bug-report),方法选择 POST。在 Headers 中添加一行:Authorization: Bearer 【你的 Dify API Key】。Body 选择 raw → JSON,填写:{"inputs":{"user_input":"{{input}}"},"response_mode":"blocking"}。
第三步:接入一个「大模型」节点,模型选择你已开通的 Qwen 或 GLM,提示词选择刚刚创建的「Bug 结构化提取器」,输入变量填写 HTTP 请求节点的「response.body.output.text」。
第四步:再接一个「JSON 解析」节点,Schema 填写:{"module":"string","severity":"string","priority":"number","summary":"string","steps":"array"}。记得勾选「严格模式」——如果不勾选,字段缺失时不报错,会静默丢失数据,排查起来非常麻烦。
第五步:拖入「条件分支」节点,判断逻辑设置为:{{json_parsed.priority}} == 1。真分支连接「飞书消息通知」,假分支连接「Jira 创建 Issue」节点。
对接 Jira 写入逻辑
方法一:使用 HTTP 请求节点直连 Jira REST API
URL 填写:{{JIRA_BASE_URL}}/rest/api/3/issue。Headers 添加:Authorization: Basic {{JIRA_EMAIL}}:{{JIRA_API_TOKEN}} 的 Base64 编码值。Body 选择 raw → JSON,内容如下(注意替换字段名与变量映射):
{"fields":{"project":{"key":"PROJ"},"summary":"{{json_parsed.summary}}","description":"步骤:{{json_parsed.steps | join(', ')}}","customfield_10020":"{{json_parsed.module}}","priority":{"id":"{{json_parsed.priority}}"},"customfield_10019":"{{json_parsed.severity}}"}}
方法二:用飞书多维表格替代 Jira(适合没有 Jira 权限的团队)
选择「飞书多维表格」节点 → 填写应用凭证 → 选择目标表格 → 字段映射时,把「module」拖到「模块」列,「severity」拖到「严重程度」列,「summary」拖到「标题」列,其余字段同理。务必关闭“追加重复项”开关,否则同一用户反复提交相似 Bug 会导致表格数据堆积,后续清理会非常麻烦。
