Actions on google 只有两个意图有效';主要';和';文本';

Actions on google 只有两个意图有效';主要';和';文本';,actions-on-google,google-assistant-sdk,Actions On Google,Google Assistant Sdk,我正在尝试在google上使用操作构建我的第一个应用程序/google assistant sdk,我想开始使用3个意图,主意图、响应输入文本和帮助,用户可以随时调用: action.json是: { "actions": [ { "description": "Default Welcome Intent", "name": "MAIN", "fulfillment": { "conversationName": "convers

我正在尝试在google上使用
操作构建我的第一个应用程序
/
google assistant sdk
,我想开始使用3个意图,主意图、响应输入文本和
帮助
,用户可以随时调用:

action.json
是:

{
  "actions": [
    {
      "description": "Default Welcome Intent",
      "name": "MAIN",
      "fulfillment": {
        "conversationName": "conversation_1"
      },
      "intent": {
        "name": "actions.intent.MAIN"
      }
    },

    {
      "description": "Help Intent",
      "name": "Help",
      "fulfillment": {
        "conversationName": "conversation_1"
      },
      "intent": {
        "name": "app.StandardIntents.HELP",
        "trigger": {
           "queryPatterns": [
            "Help",
            "HELP",
            "help"
        ]
      }
    }
    }

  ],
  "conversations": {
    "conversation_1": {
      "name": "conversation_1",
      "url": "https://us-central1-sillytest-16570.cloudfunctions.net/sayNumber",
      "fulfillmentApiVersion": 2      
    }
  }
}
index.js

'use strict';

process.env.DEBUG = 'actions-on-google:*';

const ActionsSdkApp = require('actions-on-google').ActionsSdkApp;
const functions = require('firebase-functions');

const NO_INPUTS = [
  'I didn\'t hear that.',
  'If you\'re still there, say that again.',
  'We can stop here. See you soon.'
];

exports.sayNumber = functions.https.onRequest((request, response) => {
  const app = new ActionsSdkApp({request, response});

  function mainIntent (app) {
    console.log('mainIntent');
    let inputPrompt = app.buildInputPrompt(true, '<speak>Hi! <break time="1"/> ' +
      'I can read out an ordinal like ' +
      '<say-as interpret-as="ordinal">123</say-as>. Say a number.</speak>', NO_INPUTS);
    app.ask(inputPrompt);
  }

  function rawInput (app) {
    console.log('rawInput');
    if (app.getRawInput() === 'bye') {
      app.tell('Goodbye!');
    } else {
      let inputPrompt = app.buildInputPrompt(true, '<speak>You said, <say-as interpret-as="ordinal">' +
        app.getRawInput() + '</say-as></speak>', NO_INPUTS);
      app.ask(inputPrompt);
    }
  }

  function helpHandler (app) {
    console.log('rawInput');
    app.ask('<speak>What kind of help do you need?</speak>');
  }

  let actionMap = new Map();
  actionMap.set(app.StandardIntents.MAIN, mainIntent);
  actionMap.set(app.StandardIntents.TEXT, rawInput);
  actionMap.set(app.StandardIntents.HELP, helpHandler);

  app.handleRequest(actionMap);
});
并推动谷歌的行动如下:

gactions update --action_package action.json --project <YOUR_PROJECT_ID>
当我输入/说“帮助”时,我应该期望应用程序会“你需要什么样的帮助?”但所发生的只是重新编写它,就像它对任何其他号码所做的一样


您的actionMap正在查找
app.StandardIntents.HELP
,但它不存在。您可以在GitHub repo中查看所有的

app.StandardIntents.MAIN
返回另一个与“'actions.intent.MAIN'”相对应的字符串。它不会读取您的
action.json
并生成新的意图。因此,
app.standardentents.HELP
实际上返回
undefined
,并且永远不会被调用

地图应该使用字符串作为帮助意图,因为它在
应用程序
对象中不能作为常量使用

actionMap.set(“app.standardentents.HELP”,helpHandler)


这将解决您的问题。如果没有,请告诉我。

您的actionMap正在查找
app.StandardIntents.HELP
,但它不存在。您可以在GitHub repo中查看所有的

app.StandardIntents.MAIN
返回另一个与“'actions.intent.MAIN'”相对应的字符串。它不会读取您的
action.json
并生成新的意图。因此,
app.standardentents.HELP
实际上返回
undefined
,并且永远不会被调用

地图应该使用字符串作为帮助意图,因为它在
应用程序
对象中不能作为常量使用

actionMap.set(“app.standardentents.HELP”,helpHandler)


这将解决您的问题。如果没有,请告诉我。

非内置意图仅支持。之后,虽然您可以将它们用于,但您将只获得一个内置的,例如
文本
意图。

非内置意图仅支持。之后,虽然您可以将它们用于,但只会得到一个内置的,如
文本
意图。

为什么helpHandler是
常量
而不是像其他两个一样的
函数
?我使用的是ES6样式,应该是相同的meaning@NickFelker为避免混淆,,我用正常的方式重新编写了它。为什么helpHandler是一个
const
而不是像其他两个那样的
函数呢?我用的是ES6风格,应该是一样的meaning@NickFelker为了避免混淆,我以正常的方式重新编写了代码。不起作用,我将代码100%地更新为math,并提供打印屏幕,这与订购有关吗?如果
TEXT
HELP
之前,则它匹配所有文本案例,并且在当前案例中优先于HELP。如果行为尚未定义,将文本放在最后可能会让它成为一个包罗万象的东西(没有任何更改D不起作用,我100%更新了我的代码,并提供了打印屏幕。这与订购有关吗?如果
TEXT
HELP
之前,它将匹配所有文本案例,并且在当前案例中优先于HELP。如果出现以下情况,也许将文本放在最后可以让它成为一个包罗万象的例子:尚未定义avior:(未更改)
gactions update --action_package action.json --project <YOUR_PROJECT_ID>
actionMap.set("app.StandardIntents.HELP", helpHandler);