对话输入参数
Dify 应用支持配置初始参数,在对话开启时,展示在界面上供用户输入。
默认情况下,同一个对话只允许输入一次参数值,在后续对话时,将会禁用输入控件。

1. 支持在对话开始后更新参数
在应用配置中,你可以选择是否允许用户在对话开始后更新参数值。
在界面上编辑应用配置,将 "对话参数配置" 中的 "更新历史参数" 设为 "启用" 即可。

读取 URL 作为应用参数
在实际应用场景下,我们可能有需要在 URL 中动态传入参数值,填入表单。

为了支持此功能,你的 URL 需要定义成如下形式:
<dify-chat-address>/dify-chat/app/<appId>?<paramName>=<encodedParamValue>&isNewCvst=1
应用示例 - 订单号填入
默认情况下,对话参数的值为空:

我们可以在 URL 中拼接参数:
http://localhost:5200/dify-chat/app/${appId}?orderNo=${encodedValue}&isNewCvst=1
说明:
appId
, 应用 ID
encodedValue
, 经过 Gzip
和 encodeUriComponent
处理后的参数值
isNewCvst
, 指定需要开启新对话(如果不指定且存在历史对话时,默认将会选中最近一个对话)
encodedValue
生成方式(NodeJS):
import zlib from 'zlib'
const originalOrderNo = "123456";
const buffer = Buffer.from(originalOrderNo, "utf8");
let encodedValue = "";
zlib.gzip(buffer, (err, compressedBuffer) => {
if (err) {
console.error("压缩时出错:", err);
return;
}
const encodedString = compressedBuffer.toString("base64");
encodedValue = encodeURIComponent(encodedString);
console.log("压缩后的 Base64:", encodedValue);
});
将 encodedValue
填入链接后访问,可以看到我们定义的 orderNo: 123456
已经被填入表单:

2. 全局参数缓存
有时候,对于一些固定的业务参数,我们可能需要在多个应用/对话中共享输出参数值,不需要用户重复输入,这时候可以使用全局参数缓存功能。
要使用全局参数缓存非常简单,只需要在正常传递参数的同时,加上一个 &isKeepAll=true
即可。
例如:
http://localhost:5200/dify-chat/app/cmdx5fmtb0000364zs23s6nez?orderNo=H4sIAAAAAAAAEzM0MjYxNQMAYdNyCQYAAAA%3D&isNewCvst=1&isKeepAll=true
参数说明:
isKeepAll
, 指定是否需要缓存参数值, 在进入其他对话时复用
整个链接将会有如下效果:
- 开启新对话(
isNewCvst=1
)
- 缓存参数值(
isKeepAll=true
)
- 进入其他对话后,会自动将
orderNo
参数值填入表单