无法正确传递Webhook的json数据

dify

我想从公司内部系统通过 webhook 接收 JSON 数据,并将其通过 HTTP 请求发送出去,但在 HTTP 请求阶段,数据会变成空。我在输出块中输出了「_webhook_raw」,确认接收到的 JSON 内容是正常的。我使用的是本地部署版本 1.10.0。如果有类似的问题或解决方案,恳请赐教。

如果“数据为空”指的是“输入为 {}”,那么暂时可以不必担心。

根据我本地测试的结果,程序运行没有任何问题。因此,问题的根本原因可能出在以下两个设置中的某一个:

  • Webhook 触发节点的配置内容
  • HTTP 请求节点的配置内容

如果您能提供相关截图,我或许可以给出更具体的建议。

image

感谢您的评论。
两个模块的设置内容如上所示。
关于 JSON 输入框(本次为 {{ webhook._webhook_raw.body }}),我尝试了多种方式,但至今仍未成功通过。

image

由于一次只能粘贴一个媒体文件,我将分两次发布。

谢谢,我已理解情况。

在这种情况下,以下几点是关键前提:

  • _webhook_raw 是一个 Object 类型的变量;
  • 在 HTTP 请求节点中,无法直接调用 Object 类型的变量。

因此,如果想在 HTTP 请求节点中使用从 Webhook 接收到的 Body 数据,必须通过某种方式将其转换为字符串(String 类型)或其他可支持的格式。


如果只需要接收到的 JSON 中部分键的值(字符串型或数字型)

此时,可以在触发器节点的 Request Body Parameters 中指定键名和类型,这样后续节点就可以将这些值作为对应类型的变量来调用。

但请注意:如果预期类型是 Object,最终仍会受限于 HTTP 请求节点无法调用 Object 类型变量的限制。


如果需要完整接收的 JSON 数据

我个人推荐的方法是:通过模板节点将 Object 转换为 String

请在触发器节点和 HTTP 请求节点之间,插入一个简单的模板节点(如下图所示),并将 _webhook_raw 作为输入传入:

image

之后,在 HTTP 请求节点中直接调用:backhand_index_pointing_up:该模板节点的 output 即可。

image

希望对您有所帮助。

1 个赞

按照您的建议尝试后,确实得到了我期望的输出!

非常感谢您!