对Google Assistant使用Actions SDK

时间:2018-11-19 12:36:59

标签: javascript node.js express actions-on-google

我正在尝试在自己的服务器中使用Actions SDK,我执行的操作会显示在Google助手中,但无法正常工作,该助手只会关闭而不会显示任何错误。这是我的代码:

'use strict';

const express = require('express');
const bodyParser = require('body-parser');
var exps = express();
exps.use(bodyParser.json());

const {actionssdk} = require('actions-on-google');

  const app = actionssdk({debug: true});

  const asyncTask = () => new Promise(
    resolve => setTimeout(resolve, 1000)
  );

  exps.post('/', function(request, response) {
    app.intent('actions.intent.MAIN', (conv) => {
      return asyncTask()
      .then(() =>  conv.ask('Hi, this is a test!'));
    });
   
  });
express().use(bodyParser.json(), app).listen(3000);

请求和调试标签 错误和响应均为空。

2 个答案:

答案 0 :(得分:0)

查看文档(https://developers.google.com/actions/assistant/responses)可能表明您尝试错误地调用conv.ask()。我想您会需要这样的东西:

conv.ask(new SimpleResponse({speech: 'Hi, this is a test!', text: 'Hi, this is a test!'}));

答案 1 :(得分:0)

我认为问题在于您正在创建两个不同表达对象。一个安装在“ /”路径上,但未设置为在任何端口上侦听。另一个侦听端口,但没有设置要处理的任何路径。

将您的听众行更改为

exps.use(bodyParser.json(), app).listen(3000);

将使它成为您在其中设置了“ /”路径的Express对象也将是在端口上侦听的对象。

似乎您的Webhook正在侦听“ /”路径,但您已在action.json文件中将Webhook指定为使用“ / node /”路径。 (阅读屏幕截图有点困难-这就是我们要求您发布文本而不是屏幕截图的原因。)如果您将webhook更改为侦听'/ node /'或将actions.json文件更改为使用“ /”,它应该可以工作。