2026-06-04
00

目录

Dify Chatflow 踩坑记录:通过 API 调用时,如何获取自定义 inputs 参数
一、需求背景
二、最初方案
Postman 请求
Dify 开始节点
三、第一次误区
四、真正原因
(1)inputs 参数名必须与开始节点完全一致
(2)修改开始节点后必须重新发布(Publish)
五、正确配置
1、开始节点
2、Postman
3、HTTP节点
六、如何快速排查 inputs 是否传入
七、本次踩坑总结
经验一
经验二
经验三
八、个人建议
Tips:如何判断 Dify 是否真正收到了 inputs 参数?

Dify Chatflow 踩坑记录:通过 API 调用时,如何获取自定义 inputs 参数

一、需求背景

目前正在基于dify平台搭建一个对接公司考勤接口的考勤记录查询智能体。目前采用开发提供的mock接口,本人负责智能体的搭建以及搭建后postman接口调用的调试。

调用流程如下:

text
Postman ↓ Dify Chatflow ↓ 提取年月 ↓ HTTP节点 ↓ 调用后端考勤接口

后端接口要求:

http
POST /chat/captcha/get_attshifts Header: token: xxxxxxxxxxxxx Body: { "year":"2026", "month":"4" }

其中 token 需要从调用 Dify API 时动态传入。


二、最初方案

Postman 请求

json
{ "inputs":{ "token":"a9af8fdae7ab0c857b3dfab709d14XXX" }, "query":"我要查2026年4月考勤记录", "response_mode":"streaming", "conversation_id":"", "user":"demo-1231", "files":[] }

Dify 开始节点

配置了:

user_id

HTTP节点中使用:

text
{{开始节点.user_id#}}

结果:

始终获取不到值。


三、第一次误区

最开始怀疑:

  • HTTP节点变量引用错误
  • Postman 未传递参数
  • Dify API 不支持 inputs

于是查看:

workflow_started

返回内容:

json
{ "inputs": { "sys.files": [], "sys.user_id": "demo-1231", "sys.query": "我要查2026年4月考勤记录" } }

发现:

只有:

sys.user_id

没有:

user_id

也没有:

token

四、真正原因

(1)inputs 参数名必须与开始节点完全一致

开始节点:

user_id

Postman:

json
{ "inputs":{ "token":"xxxxxxxx" } }

二者名称不同。

Dify 不会自动映射:

token ≠ user_id

因此:

inputs.token ↓ 开始节点没有对应参数 ↓ 直接丢弃

(2)修改开始节点后必须重新发布(Publish)

这是本次最大的坑。

很多时候:

新增开始节点参数 ↓ 保存 ↓ 直接调用 API

实际上:

API 调用的仍然是旧版本工作流。

必须点击:

右上角 → 发布(Publish)

否则:

workflow_started 中看不到新增的参数。


五、正确配置

1、开始节点

新增输入变量:

参数名类型
user_idString

2、Postman

json
{ "inputs":{ "user_id":"a9af8fdae7ab0c857b3dfab709d1XXX" }, "query":"我要查2026年4月考勤记录", "response_mode":"streaming", "conversation_id":"", "user":"demo-1231", "files":[] }

注意:

inputs.user_id

必须和开始节点保持一致。


3、HTTP节点

Header:

text
token {{#开始节点ID.user_id#}}

建议不要手写。

直接:

插入变量 → 用户输入:直接输入‘/’ → user_id

由 Dify 自动生成变量表达式。


六、如何快速排查 inputs 是否传入

查看posman streaming 返回的第一个事件:

json
{ "event":"workflow_started" }

重点观察:

json
{ "data":{ "inputs":{ ... } } }

如果这里没有:

json
"user_id":"xxxx"

说明:

  • Postman 参数错误
  • 开始节点参数名不一致
  • 工作流未重新发布

而不是 HTTP 节点的问题。


七、本次踩坑总结

经验一

Dify 的 inputs 完全依赖名称映射:

Postman.inputs.xxx == 开始节点.xxx

否则直接丢弃。


经验二

修改开始节点后:

一定要:

保存 + 重新发布(Publish)

否则 API 仍调用旧版本。


经验三

排查 API 参数最有效的方法不是看页面,而是查看:

workflow_started

事件中的:

json
data.inputs

它能准确告诉你:

工作流真正接收到了哪些参数。


八、个人建议

以后所有需要外部传参的 Chatflow,建议统一采用:

text
开始节点: token user_id username tenant_id project_id

API:

json
{ "inputs":{ "token":"xxx", "user_id":"xxx", "username":"xxx" } }

然后通过「插入变量」引用,而不要手写变量表达式。

这样基本可以避免 90% 的参数传递问题。


提示

Tips:如何判断 Dify 是否真正收到了 inputs 参数?

不要第一时间去看 HTTP 节点。

直接观察 streaming 返回的第一个事件:

workflow_started

查看:

data.inputs

如果这里没有,说明参数压根没进入工作流。

排查顺序:

  1. Postman body
  2. 开始节点参数名
  3. 是否重新 Publish
  4. HTTP 节点变量引用

本文作者:精卫

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!