Google 的 dialogflow 集成“dialogflow messenger”(测试版)
Posted
技术标签:
【中文标题】Google 的 dialogflow 集成“dialogflow messenger”(测试版)【英文标题】:Google's dialogflow integration "dialogflow messenger" (beta) 【发布时间】:2020-09-28 00:37:39 【问题描述】:我正在尝试使用名为“Dialogflow messenger”的 dialogflow 集成(这不是 microsoft messenger 的接口)。集成处于测试阶段,但我希望它能够在这个基本级别上工作。当我配置它时,如果我在对话框流控制台中单击“在此处尝试”,一切都很好。
我将 dialogflow messenger 集成复制并粘贴到笔记本电脑上的 html 页面中,但是当我打开该页面时出现 CORS 错误。
这是我粘贴的内容 - 从集成项复制 我将 dialogflow messenger 集成复制并粘贴到笔记本电脑上的 html 页面中,但是当我打开该页面时出现 CORS 错误。
这是我粘贴的内容 - 从集成项复制
<script src="https://www.gstatic.com/dialogflow-console/fast/messenger/bootstrap.js?v=1"></script>
<df-messenger
chat-icon="417a4c06-c7a0-4fb4-8b42-8d4ba853f941_x.png"
intent="WELCOME"
chat-title="SupaMoov"
agent-id="xxx"
language-code="en"
></df-messenger>
这是错误:
SupaChat%20-%20google-1.html:1 从源“null”访问“https://dialogflow.cloud.google.com/v1/integrations/messenger/webhook/xxx/sessions/dfMessenger-20080482”的 XMLHttpRequest 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:否请求的资源上存在 Access-Control-Allow-Origin' 标头。
我该如何解决这个问题?
【问题讨论】:
有关信息 - 这是在 chrome 浏览器上。它适用于边缘和 IE。 【参考方案1】:问题是您无法插入 html 并直接从文件系统打开它。您需要从可以使用 NodeJs、Java、php 或任何您想要的任何东西的 Web 服务器打开。然后把这个脚本放在正文的末尾。
如果它对您有用,我正在对此进行深入研究,并且我在 Youtube 中准备了三个视频,可以帮助您
-
为 dialoflow messenger 创建聊天机器人,
使用 NodeJs 启动 Web 服务器并个性化聊天机器人的图像
如何在您的 Web 中捕获生成与聊天机器人交互的 javascript 事件。
我已经准备了一个包含这些视频的 Youtube 列表(西班牙语,但代码很容易理解)https://www.youtube.com/playlist?list=PLnNbmcjjevxs_Uj-hAeekSbb4Yb7FZERe
我希望这会有所帮助。
【讨论】:
感谢大卫。我去看看。【参考方案2】:我与 Google 支持人员取得了联系。他们的回答是: “要工作,你必须在网络服务器中运行它,你可以试试 xampp”
不好!我希望从 IBM watson 转换为 dialogflow,但 watson 集成要复杂得多,所以我将留在 IBM。
【讨论】:
【参考方案3】:我也有这个问题。
我决定将它发布在亚马逊的 S3(静态站点) 上。 只需将 html 和其他文件放入 Bucket 即可。
这里的完整信息: https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html
【讨论】:
【参考方案4】:您可以将嵌入代码粘贴到 Google Site 中的嵌入代码块中,这样您就不需要网络服务器了。 Here is the embed button 点击嵌入后,点击嵌入代码并粘贴来自 Dialogflow 的代码。
【讨论】:
【参考方案5】:您也可以使用简单的 Flask 脚本在本地主机上处理它。
from flask import Flask, request, send_from_directory,render_template
app = Flask(__name__, static_url_path='/static',template_folder='./')
@app.route("/")
def shadow():
return render_template("shadow.html")#assuming this is the name of your html file
if __name__ == "__main__":
app.run(host='localhost' , port=5000 , debug=True)
然后在浏览器中的 http://localhost:5000/ 打开它。
假设您已在系统中安装了 Python3 和 Flask,因此存在依赖关系。
使用 Python 3.x 安装 Flask
点安装烧瓶
或者如果你默认有 Python2,你需要这样做
pip3 安装烧瓶
当然,如果您在本地工作的话。
【讨论】:
【参考方案6】:CORS 是一种限制来自不同来源(域)的请求的机制。 这在本地测试时通常很常见,因此当您部署时,错误就会消失。
通常,来自不同来源的请求称为跨域请求。当您的站点需要从其他服务加载数据时,跨域请求至关重要。本质上,CORS 允许服务器指定谁可以访问他们的资源以及如何访问。
-- 在 Safari 中使用 CORS 最简单、最可靠的方法是在开发菜单中禁用 CORS。
-
转到“首选项”>“高级”来启用开发菜单。
然后从开发菜单中选择“禁用跨域限制”。
确保在完成测试后将其切换回来。
-- 我相信 Firefox 也有一个插件可以安装。
-- 还有其他技术性更强的方法可以通过中间件解决此问题,但这是一种简单的解决方法。
https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
【讨论】:
以上是关于Google 的 dialogflow 集成“dialogflow messenger”(测试版)的主要内容,如果未能解决你的问题,请参考以下文章
在dialogflow webhooks中设置http url
无法将 Dialogflow 中的意图添加到 Google Assistant
如何在 C# 中调用 google.apis.dialogflow.v2