如何在Voiceflow聊天机器人中获取并存储网站URL变量?
解决Voiceflow聊天机器人无法获取网站URL作为流程变量的问题
问题原因分析
云端沙箱限制导致
window未定义
Voiceflow内置的JavaScript模块运行在云端沙箱环境,而非用户的浏览器环境,因此无法直接访问浏览器专属的window对象,直接执行websiteURL = window.location.href必然报错。启动代码未生效的可能诱因
通过启动脚本的variables字段传递URL的思路是正确的,但未生效通常是以下原因:
- 流程内变量引用语法错误:必须使用双大括号
{{变量名}}的格式引用外部传入的变量,直接写变量名无法识别; - 代码转义字符问题:原代码中的
"是HTML转义后的引号,嵌入网页时需替换为正常双引号; - 项目ID未正确替换:启动代码中的
XXXXCURRENT_IDXXXX需要替换为你的Voiceflow项目真实ID。
修正方案
1. 正确的启动脚本
替换为以下修正后的代码(确保替换真实项目ID):
<script type="text/javascript"> (function(d, t) { var v = d.createElement(t), s = d.getElementsByTagName(t)[0]; v.onload = function() { window.voiceflow.chat.load({ verify: { projectID: '你的Voiceflow项目ID' }, url: 'https://general-runtime.voiceflow.com', versionID: 'production', variables: { websiteURL: window.location.href } }).then(() => { setTimeout(function() { window.voiceflow.chat.open(); }, 200); }); } v.src = "https://cdn.voiceflow.com/widget/bundle.mjs"; v.type = "text/javascript"; s.parentNode.insertBefore(v, s); })(document, 'script'); </script>
2. 流程内正确引用变量
在Voiceflow流程的任意节点(如“回复”“设置变量”节点)中,使用{{websiteURL}}来调用传入的URL变量。例如在回复节点中设置内容为当前页面URL:{{websiteURL}},即可向用户展示获取到的URL。
3. 验证方法
添加一个“调试”节点,将{{websiteURL}}作为输出内容,发布流程后在网页端测试聊天机器人,确认是否能正确显示当前页面的URL。
内容的提问来源于stack exchange,提问作者Level5 Automate
相关产品推荐
相关产品推荐

