Как создать собственное намерение и вызывающее вспомогательное намерение, используя Actionsdk? - PullRequest
0 голосов
/ 29 мая 2018

Пожалуйста, найдите мое содержимое файла action.json

{
  "actions": [
    {
      "description": "Default Welcome Intent",
      "name": "MAIN",
      "fulfillment": {
        "conversationName": "testapp"
      },
      "intent": {
        "name": "actions.intent.MAIN",
        "trigger": {
          "queryPatterns": [
            "talk to Developer"
          ]
        }
      }
    },
    {
      "name": "BUY",
      "intent": {
        "name": "com.example.sekai.BUY",
        "parameters": [{
          "name": "color",
          "type": "SchemaOrg_Color"
        }],
        "trigger": {
          "queryPatterns": [
            "find some $SchemaOrg_Color:color sneakers",
            "buy some blue suede shoes",
            "get running shoes"
          ]
        }
        },
        "fulfillment": {
          "conversationName": "testapp"
      }
    }
  ],
  "conversations": {
    "testapp": {
      "name": "testapp",
      "url": "https://us-central1-samplejs2-id.cloudfunctions.net/testApp",
      "fulfillmentApiVersion": 2,
      "inDialogIntents": [
        {
          "name": "actions.intent.CANCEL"
        }
      ]
    }
  },
  "locale": "en"
}

Пожалуйста, найдите мое содержимое файла index.js

'use strict';
const functions = require('firebase-functions');
const admin     = require('firebase-admin');
const {actionssdk} = require('actions-on-google');
const app = actionssdk({debug: true});

// // Create and Deploy Your First Cloud Functions
// // https://firebase.google.com/docs/functions/write-firebase-functions
//
app.intent('com.example.sekai.BUY', (conv, input) => {
  console.log("Inside custom intent");
    conv.ask('<speak>Hi! <break time="1"/> ' +
   ' The color you typed is' +
   `<say-as >${input}</say-as>.</speak>`);
 });
 app.intent('actions.intent.MAIN', (conv, input) => {
    conv.ask('<speak>Hi! <break time="1"/> ' +
    'You are entering into samplejs application by typing ' +
     `<say-as >${input}</say-as>.</speak>`);
});
app.intent('actions.intent.CANCEL', (conv) => {
    conv.close(`Okay, let's try this again later.`);
  });
app.intent('actions.intent.TEXT', (conv, input) => {
    if (input === 'bye') {
    return conv.close('Goodbye!');
  }
   conv.ask('<speak>You said, ' +
    `<say-as >${input}</say-as>.</speak>`);
});
//exports.app  = app;
console.log("global----------->",global);
 exports.testApp = functions.https.onRequest(app);

Всякий раз, когда я вызываю пользовательское намерение "КУПИТЬ", используя любой цвет,вместо того, чтобы вызывать мои собственные намерения, он вызывает "intent.Text".Как решить эту проблему?

При создании облачной функции я выбрал опцию JavaScript.

Для создания настраиваемого намерения нужны ли эти обновления в action.json?Есть ли возможность создания собственного намерения?

Как вызвать этот вспомогательный контент в файле js?

app.intent('ask_for_place', (conv) => {

     conv.ask(new Place(options));

});

1 Ответ

0 голосов
/ 29 мая 2018

Пользовательские намерения запускаются только как приветственные намерения для "глубоких связей".Как только разговор начнется, все разговорные намерения будут сообщены как TEXT.

Так что для намерения com.example.sekai.BUY, которое вы определили в вашем файле actions.json, и если ваше действие было названо как-то вроде "super store"", тогда следующий вызов вызовет это намерение:

Эй, Google, попроси супермаркет найти несколько синих кроссовок

, но как только разговор начался, спроси" найти "некоторые синие кроссовки "вызовут намерение TEXT.

SDK Actions с actions.json в первую очередь предназначен для использования системами, которые обеспечивают обработку на естественном языке и просто хотят получить текст после его преобразованияиз речи.

Если вы хотите более сложную обработку естественного языка, когда каждая фраза в разговоре будет вызывать пользовательское намерение, взгляните на Dialogflow.

...