Dify可通过Webhook自动推送结构化告警至企微或钉钉:创建“系统状态监控”应用→生成API密钥→启用Webhook并获取URL→配置Prometheus/Zabbix签名推送→在工作流中按event字段分支处理→绑定事件与工作流→curl验证。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要让Dify在系统关键状态变更时(如服务宕机、数据库连接失败、API调用超时)自动向企业微信或钉钉推送结构化告警消息,而不是等人工巡检发现后再补救。
创建接收状态事件的Webhook应用
进入Dify控制台 → 应用列表 → 点击“+新建应用” → 选择“空白应用” → 命名“系统状态监控”后点击“创建”。
创建完成后,在左侧导航栏点击“设置” → “API密钥” → 点击“生成新密钥”,复制保存该密钥——【此密钥用于后续签名验证,丢失后无法还原】。
返回应用首页 → 点击右上角“发布” → 在弹出面板中切换到“Webhook”标签页 → 开启“启用Webhook”开关 → 点击“复制URL”获取唯一入站地址(形如https://api.dify.ai/v1/webhooks/xyz789)。
配置外部监控系统向Dify推送状态事件
方法一:Prometheus Alertmanager直连
在Alertmanager配置文件中添加一个webhook receiver,URL填入你刚复制的Dify Webhook地址;在webhook_configs下添加headers:X-Dify-Signature: "sha256={{ sha256sum $api_key .externalURL }}"(需提前将Dify API密钥注入为环境变量$api_key)。
方法二:Zabbix自定义脚本推送
编写Python脚本,使用requests.post发送JSON体,必须包含event字段(如"system.down"、"db.unreachable")和payload字段(含host、severity、trigger_name等);请求头必须携带X-Dify-Signature,值为base64( hmac-sha256(api_key, raw_json_string) )——【不带签名或签名格式错误将直接返回401,且无调试日志提示】。
在Dify中绑定事件类型与响应动作
第一步:进入该应用的“工作流”模块,点击“+新建工作流”。
第二步:拖入“开始节点” → 接入“条件分支节点”,设置判断逻辑:当inputs.event == "system.down"时走A路径,当inputs.event == "db.unreachable"时走B路径,其余走默认路径。
第三步:在A路径末端接入“HTTP请求节点”,method设为POST,url填入企业微信机器人Webhook地址(建议通过secrets管理,变量名为WECHAT_ALERT_URL),body使用Jinja2模板渲染:
{ "msgtype": "markdown", "markdown": { "content": "? 系统宕机告警\n> **服务**:{{ inputs.payload.service }}\n> **主机**:{{ inputs.payload.host }}\n> **触发时间**:{{ inputs.timestamp }}" } }
第四步:保存工作流 → 返回“设置” → “Webhook” → 在“事件绑定”区域,将event字段值"system.down"与该工作流关联 → 点击“保存绑定”。
验证推送是否生效
用curl模拟一次真实告警:复制AI写代码
curl -X POST https://api.dify.ai/v1/webhooks/xyz789 \
-H "Content-Type: application/json" \
-H "X-Dify-Signature: sha256=xxxxxx" \
-d '{"event":"system.down","payload":{"service":"auth-api","host":"prod-03","severity":"critical"}}'
查看企业微信群是否收到格式正确的markdown消息;若未收到,立即检查Dify应用右上角“日志”页签中的最近3条记录,确认状态码是否为200、是否有“workflow executed”字样。











