Firebase eHow如何在google上的操作上从内联编辑器过渡

Firebase eHow如何在google上的操作上从内联编辑器过渡,firebase,google-cloud-functions,actions-on-google,Firebase,Google Cloud Functions,Actions On Google,在一个例子中,我回避在Google上的操作上使用外部webhook 所以我需要回到内联编辑器。我已经解决了,但现在我又感到勇敢了 我已经超越了内联编辑器,希望能够在我的笔记本电脑上开发代码,在Firebase中测试代码,并发布到我的webhook网站,大概内联代码编辑器发布到的网站。事实上,我已经编写了require函数并从Firebase部署了它们。所以完整的功能已经准备好了,我只需要将它正确地连接到Google上的操作 我现在在谷歌上的动作,内联编辑器,更像是一个存根。我想将这个存根合并到我

在一个例子中,我回避在Google上的操作上使用外部webhook 所以我需要回到内联编辑器。我已经解决了,但现在我又感到勇敢了

我已经超越了内联编辑器,希望能够在我的笔记本电脑上开发代码,在Firebase中测试代码,并发布到我的webhook网站,大概内联代码编辑器发布到的网站。事实上,我已经编写了require函数并从Firebase部署了它们。所以完整的功能已经准备好了,我只需要将它正确地连接到Google上的操作

我现在在谷歌上的动作,内联编辑器,更像是一个存根。我想将这个存根合并到我在Firebase中拥有的更完整的逻辑中。以下是内联编辑器中的内容:

const { conversation } = require('@assistant/conversation');
const functions = require('firebase-functions');

const app = conversation(); 

app.handle('intent_a_handler', conv => {
    // Implement your code here
    conv.add("Here I am in intent A");
});

app.handle('intent_b_handler', conv => {
    // Implement your code here
    conv.add("Here I am in intent B");
});

exports.ActionsOnGoogleFulfillment = functions.https.onRequest(app);

当我在互联网上搜索时,我从Dialogflow的角度看到讨论,但正如我所说,我在“谷歌行动”中。我想从内联编辑器过渡,以我已有的为基础。有人能解释一下我是如何设置的吗?我很高兴在谷歌生态系统的环境中这样做。

要在自己的系统上本地测试自己的webhook,我建议合并一个web应用程序框架,例如。使用express,您可以在本地计算机上托管代码,并使其响应Google上Actions的请求。在您的情况下,您将替换与Firebase functions包相关的所有代码。下面是一个简单的谷歌操作webhook的示例:

const express = require('express');
const bodyParser = require('body-parser')
const { conversation } = require('@assistant/conversation');

const exprs = express();
exprs.use(bodyParser.json()) // allows Express to work with JSON requests

const app = conversation();

app.handle('example intent', () => {
  // Do something
})

// More app.handle() setups

exprs.post('/', app);
exprs.listen(3000);
使用此设置,您应该能够在本地运行自己的应用程序。您只需要安装所需的依赖项,并为您的操作添加自己的意图处理程序。此时,您已经在自己的计算机上运行了一个webhook,但这还不足以在Google上的操作中将其用作webhook,因为它在本地运行,并且不能通过internet公开

因此,我们将使用一个名为的工具。使用ngrok,您可以创建一个公共https地址,将所有消息运行到本地计算机。通过这种方式,您可以使用ngrok地址作为webhook URL。现在,您可以根据需要对代码进行任意多的更改,而Google上的操作将在您开发时自动使用最新的更改。无需上传并等待Firebase执行此操作


需要明确的是:Ngrok应该只用于发展。当你完成开发你的动作时,你应该把你所有的代码上传到一个云服务上,或者把它放在你自己的服务器上(如果你有)。(免费计划)ngrok URL通常每6小时过期一次。因此,除了开发之外,这不是一个合适的解决方案。

要在您自己的系统上本地测试您自己的webhook,我建议合并一个web应用程序框架,例如。使用express,您可以在本地计算机上托管代码,并使其响应Google上Actions的请求。在您的情况下,您将替换与Firebase functions包相关的所有代码。下面是一个简单的谷歌操作webhook的示例:

const express = require('express');
const bodyParser = require('body-parser')
const { conversation } = require('@assistant/conversation');

const exprs = express();
exprs.use(bodyParser.json()) // allows Express to work with JSON requests

const app = conversation();

app.handle('example intent', () => {
  // Do something
})

// More app.handle() setups

exprs.post('/', app);
exprs.listen(3000);
使用此设置,您应该能够在本地运行自己的应用程序。您只需要安装所需的依赖项,并为您的操作添加自己的意图处理程序。此时,您已经在自己的计算机上运行了一个webhook,但这还不足以在Google上的操作中将其用作webhook,因为它在本地运行,并且不能通过internet公开

因此,我们将使用一个名为的工具。使用ngrok,您可以创建一个公共https地址,将所有消息运行到本地计算机。通过这种方式,您可以使用ngrok地址作为webhook URL。现在,您可以根据需要对代码进行任意多的更改,而Google上的操作将在您开发时自动使用最新的更改。无需上传并等待Firebase执行此操作


需要明确的是:Ngrok应该只用于发展。当你完成开发你的动作时,你应该把你所有的代码上传到一个云服务上,或者把它放在你自己的服务器上(如果你有)。(免费计划)ngrok URL通常每6小时过期一次。因此,除了开发之外,这不是一个合适的解决方案。

谢谢Jordi。作为后续,我想把它放在谷歌服务器上。有没有一个标准的地方可以这样做?这似乎是谷歌解决方案的一部分和端到端的行动。不过,我会按照上面概述的建议去做。我没有在谷歌云中运行Webhook的经验,但这里有一个关于在gcloud中托管节点应用程序的一般指南。这会帮助你得到你需要的东西。你好,乔迪。我想了想,我意识到你的答案与Firebase函数根本不相交。这对我来说似乎很奇怪,因为当我在Alexa生态系统中实现相同的系统时,后端使用的是云中的功能。我将把我的问题标记为未回答,同时我将仔细考虑这一切。这里似乎仍然缺少一些东西,不过作为权宜之计,我可能会按照你的建议来实施。啊,好吧,我想我误解了你需要保持在功能范围内。我的设置确实不适用于云函数,因为express创建了一个您应该托管的api。我必须研究一下如何使用FireBaseJordi实现这一点的细节。我开始觉得Dialogflow这几天在这类事情上比谷歌上的行动更受关注。不过,我非常感谢你的回答。谢谢乔迪。作为后续,我想把它放在谷歌服务器上。有没有一个标准的地方可以这样做?这似乎是谷歌解决方案的一部分和端到端的行动。不过,我会按照上面概述的建议去做。我没有在谷歌云中运行Webhook的经验,但这里有一个关于在gcloud中托管节点应用程序的一般指南。这会帮助你得到你需要的东西。你好,乔迪。我想了想,我意识到你的答案与火无关