对话输入参数

Dify 应用支持配置初始参数,在对话开启时,展示在界面上供用户输入。

默认情况下,同一个对话只允许输入一次参数值,在后续对话时,将会禁用输入控件。

应用输入参数-默认

5.1 支持在对话开始后更新参数

在应用配置中,你可以选择是否允许用户在对话开始后更新参数值。

在界面上编辑应用配置,将 "对话参数配置" 中的 "更新历史参数" 设为 "启用" 即可。

应用输入参数-配置

读取 URL 作为应用参数

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

读取 URL 作为应用参数-说明

为了支持此功能,你的 URL 需要定义成如下形式:

<dify-chat-address>/dify-chat/app/<appId>?<paramName>=<encodedParamValue>&isNewCvst=1

应用示例 - 订单号填入

默认情况下,对话参数的值为空:

读取 URL 作为应用参数-默认

我们可以在 URL 中拼接参数:

http://localhost:5200/dify-chat/app/${appId}?orderNo=${encodedValue}&isNewCvst=1

说明:

  • appId, 应用 ID
  • encodedValue, 经过 GzipencodeUriComponent 处理后的参数值
  • isNewCvst, 指定需要开启新对话(如果不指定且存在历史对话时,默认将会选中最近一个对话)

encodedValue 生成方式(NodeJS):

const zlib = require("zlib");

const originalOrderNo = "123456";
const buffer = Buffer.from(originalString, "utf8");
let encodedValue = "";

zlib.gzip(buffer, (err, compressedBuffer) => {
  if (err) {
    console.error("压缩时出错:", err);
    return;
  }
  const encodedString = compressedBuffer.toString("base64");
  encodedValue = encodeURIComponent(encodedString);
});

encodedValue 填入链接后访问,可以看到我们定义的 orderNo: 123456 已经被填入表单:

读取 URL 作为应用参数-结果