создание настольной карты в гугл ассистенте - PullRequest
0 голосов
/ 06 февраля 2019

Ниже приведен полный код, который я запускаю, чтобы показать таблицу в помощнике Google.

'use strict';
const {Table} = require('actions-on-google');
process.env.DEBUG = 'dialogflow:debug'; 

exports.dialogflowFirebaseFulfillment = 
          functions.https.onRequest((request, response) => {
const agent = new WebhookClient({ request, response });

function showTable(){
   const conv = agent.conv();
   agent.add("this is sample table");
   agent.add(new Table({
   dividers: true,
   columns: ['header 1', 'header 2', 'header 3'],
   rows: [
      ['row 1 item 1', 'row 1 item 2', 'row 1 item 3'],
      ['row 2 item 1', 'row 2 item 2', 'row 2 item 3'],
   ],
   }));
 }
 let intentMap = new Map();
 intentMap.set('TableView',showTable); //TableView is my intent name
 agent.handleRequest(intentMap);
});

Во время выполнения приведенного выше кода отображается ошибка ниже

TypeError: Table is not a constructor
    at showTable (/user_code/index.js:74:15)
    at WebhookClient.handleRequest (/user_code/node_modules/dialogflow-fulfillment/src/dialogflow-fulfillment.js:303:44)
    at exports.dialogflowFirebaseFulfillment.functions.https.onRequest (/user_code/index.js:102:9)
    at cloudFunction (/user_code/node_modules/firebase-functions/lib/providers/https.js:57:9)
    at /var/tmp/worker/worker.js:735:7
    at /var/tmp/worker/worker.js:718:11
    at _combinedTickCallback (internal/process/next_tick.js:73:7)
    at process._tickDomainCallback (internal/process/next_tick.js:128:9)

Ответы [ 2 ]

0 голосов
/ 26 марта 2019

Я столкнулся с этой проблемой, и одной из возможных причин может быть неправильная версия actions-on-google в файле package.json. Обычно мы использовали для копирования package.json из существующих образцов в наш новый проект. У старых есть версия2.0.0-alpha.4.Поскольку таблицы добавляются после этой версии, диалоговое окно выдает ошибку. Вы можете использовать версию - 2.6.0. Это сработало для меня.

Ниже приведен мой файл index.js.

'use strict';
const {dialogflow,Table} = require('actions-on-google');
const functions = require('firebase-functions');
const {WebhookClient} = require('dialogflow-fulfillment');
const {Card, Suggestion,List,Image} = require('dialogflow-fulfillment');

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

app.intent('Table View Sample',(conv) =>{
  
  conv.ask('This is a simple table example.');
conv.ask(new Table({
  dividers: true,
  columns: ['header 1', 'header 2', 'header 3'],
  rows: [
    ['row 1 item 1', 'row 1 item 2', 'row 1 item 3'],
    ['row 2 item 1', 'row 2 item 2', 'row 2 item 3'],
  ],
}));
});

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

Ниже приведен мой package.json файл.

{
  "name": "dialogflowFirebaseFulfillment",
  "description": "This is the default fulfillment for a Dialogflow agents using Cloud Functions for Firebase",
  "version": "0.0.1",
  "private": true,
  "license": "Apache Version 2.0",
  "author": "Google Inc.",
  "engines": {
    "node": "~6.0"
  },
  "scripts": {
    "start": "firebase serve --only functions:dialogflowFirebaseFulfillment",
    "deploy": "firebase deploy --only functions:dialogflowFirebaseFulfillment"
  },
  "dependencies": {
    "actions-on-google": "2.6.0",
    "firebase-admin": "^4.2.1",
    "firebase-functions": "^0.5.7",
    "dialogflow": "^0.1.0",
    "dialogflow-fulfillment": "0.3.0-beta.3"
  }
}

Надеюсь, это кому-нибудь поможет!

Спасибо.

0 голосов
/ 06 февраля 2019

Наиболее вероятной причиной этого является то, что вы не импортировали объект Table с такой строкой, как

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