返回

Voiceflow HTTP POST 请求处理程序数据不可见:原因和解决方法

php

Voiceflow HTTP POST 请求处理程序中数据不可见:原因和解决方案

引言

在使用 Voiceflow 的 HTTP POST 请求处理程序时,遇到响应中缺少处理程序发送的数据的问题并不少见。这篇文章将深入探讨造成此问题的原因,并提供两种有效的方法来解决它。

问题:数据不可见

默认情况下,Voiceflow 的 API 步骤不返回响应的正文。因此,当通过 API 步骤调用 HTTP POST 请求处理程序时,即使请求成功,响应中也会缺少处理程序发送的状态、消息和数据项。

原因:响应正文不可用

响应正文不可用是因为 Voiceflow 的 API 步骤配置为默认不返回它。处理程序的响应包含在响应正文中,但由于 API 步骤的默认行为,它不会被返回给 Voiceflow。

解决方案 1:使用 fetch 函数

推荐使用 fetch 函数来从 Voiceflow 的 API 步骤访问处理程序响应的正文。fetch 函数允许你直接向服务器发送请求并处理响应。

实现:

  1. 在 Voiceflow 画布中,添加一个 Run Javascript 节点。
  2. Code 字段中,输入以下代码:
const response = await fetch('{{HANDLER_URL}}', {
  method: 'POST',
  body: JSON.stringify({}),
  headers: {
    'Content-Type': 'application/json',
  },
});

const data = await response.json();

// 使用 data 变量

解决方案 2:启用 API 步骤的“响应正文”选项

另一种访问处理程序响应正文的方法是启用 API 步骤的 响应正文 选项。

实现:

  1. 在 Voiceflow 画布中,选择 API 步骤
  2. 高级选项 下,启用 响应正文 复选框。

结论

通过使用 fetch 函数或启用 API 步骤的 响应正文 选项,你可以从 Voiceflow 的 API 步骤中访问 HTTP POST 请求处理程序的响应正文。这使你能够访问处理程序发送的状态、消息和数据项,从而扩展了 Voiceflow 自动化的功能。

常见问题解答

  1. 为什么默认情况下不返回响应正文?

为了提高性能和减少数据传输量。

  1. fetch 函数和“响应正文”选项有什么区别?

fetch 函数提供更大的灵活性,因为它允许你处理和转换响应正文。响应正文 选项更简单,但它可能不适用于所有场景。

  1. 在使用 fetch 函数时,我需要注意什么?

确保处理对响应的 Promise,因为未经处理的 Promise 可能会导致错误。

  1. 我可以自定义响应正文的内容吗?

是的,你可以通过在处理程序中设置 Content-Type 头和响应正文来自定义响应正文的内容。

  1. 是否有其他方法来访问响应正文?

有一些第三方库和工具可以帮助你访问响应正文,但它们可能需要额外的配置和设置。