将快速路线与 Google 助理意图相匹配

Matching Express Routes to Google Assistant intents

我有一个 Express 应用程序,我正尝试将其与 Google Assistant 集成。

我已经安装了 https://www.npmjs.com/package/actions-on-google and have followed https://codelabs.developers.google.com/codelabs/actions-1/#0,它可以将功能部署到 Firebase - 但是我想 运行 从自托管的 Express 服务器上部署它们。

在我的app.js中设置如下:

const {
  dialogflow,
  Image,
} = require('actions-on-google')

// Create an app instance

const gapp = dialogflow();
});

但是我不确定如何创建我在 Dialogflow 控制台中添加的路由作为 webhook - 我是否使用以下格式?

app.post('/webhook', function(req, res){
    gapp.intent('favorite color', (conv, {color}) => {
        const luckyNumber = color.length;
        // Respond with the user's lucky number and end the conversation.
        conv.close('Your lucky number is ' + luckyNumber);
    });
});

如果是这样,那么我的所有意图都在这条路线内吗?

编辑 更新响应回答:

const express = require('express');
const bodyParser = require('body-parser');
const app = express();

const {
  dialogflow,
  Image,
} = require('actions-on-google')

// Create a  google app instance

const gapp = dialogflow()

// Register handlers for Dialogflow intents

gapp.intent('Default Welcome Intent', conv => {
  conv.ask('Hi, how is it going?')
  conv.ask(`Here's a picture of a cat`)
  conv.ask(new Image({
    url: 'https://developers.google.com/web/fundamentals/accessibility/semantics-builtin/imgs/160204193356-01-cat-500.jpg',
    alt: 'A cat',
  }))
})

// Intent in Dialogflow called `Goodbye`
gapp.intent('Goodbye', conv => {
  conv.close('See you later!')
})

gapp.intent('Default Fallback Intent', conv => {
  conv.ask(`I didn't understand. Can you tell me something else?`)
})

app.post('/ga/webhook', gapp)

您可以在 Express 服务器启动时定义所有 gapp 意图,然后您可以将 gapp 对象传入您定义的 webhook:

const express = require('express')
const bodyParser = require('body-parser')

// ... gapp code here

const expressApp = express().use(bodyParser.json())
expressApp.post('/webhook', gapp)
expressApp.listen(3000)