- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
由于Dialogflow是封闭源代码并托管在Googles Server上,因此可以将交互式Canvas与例如RASA或其他替代方案?我正在阅读交互式画布的教程,并且始终必须在firebase或google cloud上进行部署,因为那是该教程所说的,并且因为在Dialogflow中可以访问本地运行的服务。
我想自己在家中部署fullfillment和webapp,而不要在云系统上运行。
最佳答案
您在这里有很多相关问题,但是如果我们将它们分解成较小的问题,可能会更容易理解。
我是否需要使用Dialogflow为助手编写动作?
否。Google上的Actions定义了Actions SDK,您可以使用它定义将语音对文本(STT)处理结果发送到何处的操作,该操作将根据用户所说的内容以及应该在何处发送所需的响应给用户。如何处理文本取决于您,但是强烈建议您使用自然语言理解/处理系统(NLP / NLU),例如RASA。
是否需要在Firebase或Google Cloud上运行?
不需要。它确实需要在某个地方运行,但是唯一的要求是
您必须具有一个公共HTTPS URL端点(一个Webhook),Google会使用该端点发送STT消息。
您必须能够以Actions SDK定义的格式使用JSON在该URL上接受POST。您应返回符合Actions SDK定义的响应格式的JSON。
尽管Firebase Cloud Functions或其他Google Cloud解决方案运行良好,但您可以在满足这些要求的任何地方运行它。例如,AWS也可以工作。
我可以在自己的网络上运行它吗?
这取决于。
如果您的网络是具有公共IP地址(甚至没有公共DNS条目)的公共网络,则可以。
如果您在专用网络上-那么...也许,但是您需要做更多的工作。如果有可用的公共IP地址,则可以为您的计算机创建代理,以进行入站连接。或者,您可以使用ngrok之类的工具或其他方法来创建通过隧道传输到本地计算机的安全公共URL端点。 (ngrok的一个优点是它们还满足HTTPS要求。)
一旦完成此操作,我是否可以自己采取行动?
并不是的。
您当然可以在“开发模式”下运行操作,但是您需要在测试控制台中定期刷新它。同样,您可以为alpha release添加用户。但是,在两种情况下,经验都表明您正在测试它。
如果您希望它“像其他操作一样”起作用,则需要将其提交审核以使其公开。为防止其他人使用它,您需要添加Google Sign-In来限制谁可以访问您的操作。
交互式画布部分呢?
交互式画布在上述所有内容上都添加了其他要求。您仍然需要让Google处理用户所说的内容,然后将其传递给您的操作,然后您可以将其与答复一起传递给Interactive Canvas。
但是,优点之一是,无论“动作”在做什么,“交互式画布”部件也可以独立运行。因此,可能会有在Android或Smart Display上运行的本地代码可以执行某些操作,包括直接对触摸或计时事件做出反应。
当您说“本地代码”时,您是什么意思?
您的操作的代码必须在Webhook上运行。但是,交互式画布的代码可以在设备本身上运行。
交互式画布的代码从哪里加载?我需要安装一个应用程序吗?
否。InteractiveCanvas是一个网页,并且是从URL加载的。
当您的操作启动交互式画布时,它会将要加载的URL发送到您的设备。然后,您的设备从该URL加载它,然后将其像大多数其他网页一样对待(有一些限制)。建议您使用单页Webapp,但这不是必需的。
作为单页Web应用程序,它可以使API调用返回到Web服务器吗?还是其他Web服务器?
是的,但是请记住,CORS restrictions可能会限制这一点。交互式画布在iframe中运行,并设置CORS
原点为null。如果您正在加载的资源不允许这样做-通话可能会被拒绝。
但是,如果您具有运行Interactive Canvas部件的设备可以本地访问的API,那么您应该能够从Interactive Canvas脚本访问它。
这听起来像是您提到的限制之一。还有其他吗?
是的,也有一个few others。最大的问题是您无权访问本地存储或Cookie,也无权访问摄像头和地理位置等硬件。您也没有访问Web Speech API SpeechRecognition界面的权限。
等一下,如果我无权访问存储或cookie,该如何处理两次调用之间的事务?
您需要使用“操作”功能来save data across conversations。
我没有语音识别功能?对于智能显示操作来说,这不是很傻吗?
我没那么说您仍然可以使用操作中提供的功能来进行语音识别。麦克风打开时所讲的任何内容都会发送到Google进行STT,然后发送到您的操作。
如果将其发送到Action,如何将其发送到Interactive Canvas?
作为响应的一部分,您可以将数据从操作发送到交互式画布。您的Interactive Canvas脚本可以注册以处理onUpdate()
回调。
更新:如果我不想通过Interactive Canvas运行任何操作,而只显示某些内容怎么办?
您有几种选择。
如果您只需要显示一些文本,则根本不需要执行任何操作-只需从Action发送一个文本响应,它就会显示在屏幕上。
如果您需要稍微复杂一些的内容(例如文本和静态图像),则可以发送回card。如果只需要一个表,则还有一个table card。
但是,如果您想控制整个屏幕,则可以使用Interactive Canvas仅发送回HTML。您可以根据需要设置此HTML的格式-作为完全静态的页面,在网站上生成的页面或从客户端JavaScript生成的页面。您甚至可以使用CSS对其进行格式化-这是一个完全正常的HTML页面。
更新:那么为什么我不使用交互式画布?
有很多很好的理由使您可能不想遇到交互式画布的麻烦,但是这里有一些基本的原因:
如果现在这是一个游戏,您只能获得您的Interactive Canvas Action的批准。 (当然,如果您只是私下进行此操作,则不必担心。)其他类型可能很快就会被允许使用-但现在只是游戏。
您无需使用全屏显示。只是呈现一些数据?文字或卡片可能就足够了。
您要确保它也可以在智能扬声器或“免眼”上使用。即使对于确实使用屏幕的用户,也可能要确保用户可以在不使用屏幕的情况下使用它。
关于canvas - 带有rasa的Google Interactive Canvas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58924214/
我刚刚将我的 Ember 插件从 3.0 版升级到了 3.8 版,现在我收到了这个警告: Interaction added to non-interactive element no-invalid
我正在尝试使用git add --interactive有选择地向我的索引添加一些更改,但我不断收到“您编辑的大块不适用。再次编辑...”消息。即使我选择 e 选项,我也会收到此消息,并立即保存/关闭
我正在尝试将 SelectedDateChanged 绑定(bind)到一个命令,这样我就可以将它放在我的 ViewModel 中,但无论如何它都不会接受此代码 http://pastebin.com
有时我的应用程序 UI 中有两个共享按钮(取决于状态)。它们可以共享相同的数据,但位于 UI 的不同部分。我们想要分析从哪个按钮(UI 的一部分)执行了共享。我希望使用 fieldsObject这部分
我发现了一些这样的代码, 1 (require 'cl-lib) 2 (require 'company) 3 4 (defun company-sample-backend (command
背景 gbm 包 的引用手册指出,interact.gbm 函数计算 Friedman 的 H 统计量以评估变量相互作用的强度。 H 统计量的范围为 [0-1]。 dismo 包的引用手册没有引用任何
免责声明:我知道它不是有效的 HTML。我想了解为什么不允许这样做? W3C 建议使用像 button 这样的交互元素。或 a不得包含其他交互元素。 我可以找到很多提到这条规则和一些变通办法的资源,还
在我的网络应用程序中, map 最初设置为非交互式(用户无法在 map 上移动): var map = new mapboxgl.Map({ container: 'map', sty
我正在尝试设置它,以便当我使用 applescript 打开我的插画文件时没有用户交互,但标准是: tell application id "com.adobe.Illustrator" activa
我已经在几个项目中使用了 System.Windows.Interactivity DLL,没有任何问题。现在在我最新的项目中我无法让它工作。我总是收到以下错误: 命名空间“http://schema
Presto 网站(和其他文档)讨论了 Presto 上的“交互式查询”。什么是“交互式查询”?来自 Presto 网站:“Facebook 使用 Presto 对多个内部数据存储进行交互式查询,包括
当我尝试执行 mvn release: Perform 时,出现此错误 [ERROR] Provider message: [ERROR] The svn command failed. [ERROR
我正在尝试使用 C# Interactive 尝试一些 mongodb 驱动程序,但是一旦我尝试创建一个 MongoClient我收到以下异常: > var client = new MongoCli
我想使用IB Api,但无法弄清楚我们如何请求完整的符号列表和信息。 在我找到的文档中:reqScannerParameters()-但不清楚如何获取例如纳斯达克股票的 list ? 有没有更好的办法
我已经开始将 IB 与 IBridgePy 结合使用,我想知道是否有可能以某种方式执行任何回溯测试,有没有人如何做到这一点? 最佳答案 IB 没有现成的回测/重放工具。基本上,您必须下载历史数据并通过
我是否编译 Racket 程序似乎对运行时性能没有影响。 通过编译改进的只是最初加载文件吗?换句话说,是否正在运行 racket src.rkt即时进行 jit 编译,这就是为什么我认为编译与交互式没
在解决一些练习时,我发现了 2 个重复出现的 IO 模式。第一个模式已经被方便的interact覆盖了。第二种模式类似,但按行处理输入。 如何编写 interactLinewise 方法? 最佳答案
我正在尝试使用来自 Fsi 的 F# 程序集,但似乎无法找到一种方法来获取模块中定义的方法列表以便调用它们。 这是我尝试使用的示例文件。在关注 "exposing methods that are c
我正在开发一个基本的 Haskell 程序,其中包含这行代码: interact (unwords . (map pigLatin . words) ) 但是,在将字符串数组传递给我的 pigLati
我不确定我的措辞是否正确。当一个元素被放入放置区时,我需要知道该元素相对于它所在的放置区的 x/y 位置。 非常感谢任何见解。谢谢! 最佳答案 这绝对应该由图书馆提供,但既然不是,我就是这样完成的:
我是一名优秀的程序员,十分优秀!