带有rasa的Google交互式画布

问题描述 投票:1回答:1

由于Dialogflow是封闭源并且托管在Googles Server上,因此可以将交互式Canvas与例如RASA或其他替代方案?我正在阅读交互式画布的教程,并且始终必须在firebase或google cloud上进行部署,因为那是该教程所说的,并且因为在Dialogflow中可以访问本地运行的服务。

我想自己在家中部署fullfillment和webapp,而不是在云系统上运行。

canvas dialogflow actions-on-google interactive rasa
1个回答
0
投票

您在这里有很多相关问题,但是如果我们将它们分解成较小的问题,可能会更容易理解。

我需要使用Dialogflow为助手编写动作吗?

没有Google上的操作定义了Actions SDK,您可以用它来定义将语音对文本(STT)处理结果发送给用户的内容,并根据用户所说的内容发送给您,用户。您如何处理文本取决于您,但是强烈建议您使用RASA之类的自然语言理解/处理系统(NLP / NLU)。

是否需要在Firebase或Google Cloud上运行?

没有它确实需要运行somewhere,但是唯一的要求是

  • 您必须具有一个公共的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以限制谁可以访问您的操作。

Interactive Canvas部分如何?

Interactive Canvas将additional需求添加到上面的所有内容中。您仍然需要让Google处理用户所说的内容,然后将其传递给您的操作,然后您可以将其与回复一起传递给Interactive Canvas。

但是,一个优点是,Interactive Canvas部件可以独立于Action进行的操作而独立运行。因此,可能会有在Android或Smart Display上运行的本地代码可以执行某些操作,包括直接对触摸或计时事件做出反应。

当您说“本地代码”时,您是什么意思?

您的操作代码必须在网络钩子上运行。但是交互式画布的代码可以在设备本身上运行。

交互式画布的代码从哪里加载?我需要安装一个应用程序吗?

没有交互式画布是一个网页,并且是从URL加载的。

[当您的操作启动交互式画布时,它会将要加载的URL发送到您的设备。然后,您的设备从该URL加载它,然后将其像大多数其他网页一样对待(有一些限制)。建议您使用单页Web应用程序,但这不是必需的。

作为单页Web应用程序,它可以对Web服务器进行API调用吗?还是其他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的批准。 (当然,如果您只是私下进行此操作,则不必担心。)其他类型可能很快就会被允许使用-但现在仅是游戏。
  • 您无需使用全屏显示。只是呈现一些数据?文字或卡片可能就足够了。
  • 您要确保此功能也适用于智能扬声器或“无眼”。即使对于确实使用屏幕的用户,您可能也要确保用户
  • can
  • 在没有屏幕的情况下使用它。
© www.soinside.com 2019 - 2024. All rights reserved.