Voiceflow HTTP POST 请求处理程序数据不可见:原因和解决方法
2024-03-20 06:51:34
Voiceflow HTTP POST 请求处理程序中数据不可见:原因和解决方案
引言
在使用 Voiceflow 的 HTTP POST 请求处理程序时,遇到响应中缺少处理程序发送的数据的问题并不少见。这篇文章将深入探讨造成此问题的原因,并提供两种有效的方法来解决它。
问题:数据不可见
默认情况下,Voiceflow 的 API 步骤不返回响应的正文。因此,当通过 API 步骤调用 HTTP POST 请求处理程序时,即使请求成功,响应中也会缺少处理程序发送的状态、消息和数据项。
原因:响应正文不可用
响应正文不可用是因为 Voiceflow 的 API 步骤配置为默认不返回它。处理程序的响应包含在响应正文中,但由于 API 步骤的默认行为,它不会被返回给 Voiceflow。
解决方案 1:使用 fetch
函数
推荐使用 fetch
函数来从 Voiceflow 的 API 步骤访问处理程序响应的正文。fetch
函数允许你直接向服务器发送请求并处理响应。
实现:
- 在 Voiceflow 画布中,添加一个 Run Javascript 节点。
- 在 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 步骤的 响应正文 选项。
实现:
- 在 Voiceflow 画布中,选择 API 步骤 。
- 在 高级选项 下,启用 响应正文 复选框。
结论
通过使用 fetch
函数或启用 API 步骤的 响应正文 选项,你可以从 Voiceflow 的 API 步骤中访问 HTTP POST 请求处理程序的响应正文。这使你能够访问处理程序发送的状态、消息和数据项,从而扩展了 Voiceflow 自动化的功能。
常见问题解答
- 为什么默认情况下不返回响应正文?
为了提高性能和减少数据传输量。
fetch
函数和“响应正文”选项有什么区别?
fetch
函数提供更大的灵活性,因为它允许你处理和转换响应正文。响应正文 选项更简单,但它可能不适用于所有场景。
- 在使用
fetch
函数时,我需要注意什么?
确保处理对响应的 Promise,因为未经处理的 Promise 可能会导致错误。
- 我可以自定义响应正文的内容吗?
是的,你可以通过在处理程序中设置 Content-Type
头和响应正文来自定义响应正文的内容。
- 是否有其他方法来访问响应正文?
有一些第三方库和工具可以帮助你访问响应正文,但它们可能需要额外的配置和设置。