物流延误预警工作流需接入快递查询API,通过Condition节点用time字段与当前时间比对超48小时且未签收来判定延误,再经企业微信Webhook自动通知。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要让系统自动查快递、识别延误风险、并提前通知相关人员,而不是每次手动打开物流网站复制粘贴单号再判断是否超时。
准备快递查询API与延误判定规则
先确认你已接入一个稳定可用的快递查询服务,比如“快递100”或自建的OpenAPI接口;若尚未部署,需确保该API支持tracking_number和carrier两个必填参数,并返回包含time字段的物流节点数组。
延误判定逻辑必须写死在Condition节点里:取最新物流节点的time时间戳,与当前UTC时间对比,若差值超过48小时且状态非“已签收”,则标记为延误。
这一步不能跳过——【未配置合法API密钥或未启用CORS跨域策略会导致后续HTTP请求节点全部失败】。
搭建工作流主干结构
第一步:登录Dify控制台 → 进入「工作流」页面 → 点击「新建工作流」→ 命名为“物流延误预警”。
第二步:从左侧节点库拖拽一个「用户输入」节点到画布,双击编辑,添加变量tracking_number(String类型)和carrier(String类型)。
第三步:拖入一个「HTTP 请求」节点,URL填写你的快递查询API地址(如https://api.kuaidi.com/track),请求方法选GET,参数设置为:tracking_number={{input.tracking_number}}&carrier={{input.carrier}}。
第四步:拖入一个「条件分支」节点,连接上一节点输出 → 在表达式栏输入:{{ $.http_request.output.data.last_status.time }} != null && (Date.now() - new Date({{ $.http_request.output.data.last_status.time }}).getTime()) > 172800000 && {{ $.http_request.output.data.status }} !== "signed"。
第五步:拖入两个「消息通知」节点,分别接在Condition的True和False出口;True分支填写企业微信Webhook地址,False分支留空即可。
配置消息通知内容与格式
方法一:在True分支的「消息通知」节点中,Body选择JSON格式,输入:
{"msgtype":"text","text":{"content":"⚠️物流延误预警\n单号:{{input.tracking_number}}\n承运商:{{input.carrier}}\n最新节点:{{ $.http_request.output.data.last_status.context }}\n发生时间:{{ $.http_request.output.data.last_status.time }}"}}
方法二:如果要用Markdown增强可读性,改用textcard类型,title填“物流异常”,description填“单号{{input.tracking_number}}在{{ $.http_request.output.data.last_status.time }}进入‘{{ $.http_request.output.data.last_status.context }}’状态,距今已超48小时未更新。”
注意:企业微信或钉钉Webhook地址必须带https协议且已通过验证,否则发送会静默失败,日志里只显示“HTTP 403”。
测试与触发方式设置
点击右上角「调试」按钮,手动输入tracking_number=SF123456789CN、carrier=SF,运行后观察Condition节点是否走True路径,消息通知节点是否返回200。
调试通过后,点击「发布」→ 在弹窗中选择触发方式:勾选「API触发」并复制生成的Webhook URL;如需定时扫描数据库中的待查单号,再额外添加一个「定时触发」节点,间隔设为每30分钟。
这一步完成后,任何外部系统只要向该Webhook发送POST请求并携带input对象,工作流就会立即执行。


















