Хотите сохранить постоянные ценности - PullRequest
0 голосов
/ 12 октября 2018

Мы хотим сохранить постоянные значения.Мы попробовали это с помощью следующего простого кода, но значение не сохранилось.В чем мы допустили ошибку?

index.js

'use strict';

const functions = require('firebase-functions');
const { dialogflow } = require('actions-on-google');

const app = dialogflow();

app.intent('FirstIntent', conv => {
    conv.user.storage.value = 'A';
    conv.followup('SecondEvent');
});

app.intent('SecondIntent', conv => {
    conv.close('value is ' + conv.user.storage.value);
});

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": "8"
  },
  "scripts": {
    "start": "firebase serve --only functions:dialogflowFirebaseFulfillment",
    "deploy": "firebase deploy --only functions:dialogflowFirebaseFulfillment"
  },
  "dependencies": {
    "actions-on-google": "^2.2.0",
    "firebase-admin": "^5.13.1",
    "firebase-functions": "^2.0.2",
    "dialogflow": "^0.6.0",
    "dialogflow-fulfillment": "^0.6.1"
  }
}

FirstIntent вызывается при запуске.Сохраните постоянное значение в FirstIntent и создайте SecondEvent.SecondIntent называется.Прочитайте постоянное значение в SecondIntent, чтобы создать ответ.Отображается «Значение не определено».

Мы нашли следующий журнал.

Billing account not configured. 
External network is not accessible and quotas are severely limited. 
Configure billing account to remove these restrictions

Мы обновились до пламени и подтвердили, что журнал не отображается, но постоянное значение не было сохраненоеще.Можем ли мы решить эту проблему без зарядки?

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

Это поведение (то есть значение, установленное в user.storage, не передается через функцию followup()) является спецификацией actions-on-google-nodejs SDK.

На самом деле это не тактолько спецификация SDK, но это также вызвано несовместимостью между функцией user.storage и функцией последующих событий Dialogflow, используемой функцией followup().При вызове функции followup() ответ «followupEventInput» возвращается из выполнения в Dialogflow.После получения ответа Dialogflow определяет намерение, которое может обработать указанное событие, и запускает намерение напрямую, не возвращая никакого ответа на Действия в Google.user.storage - это функция Действия в Google, поэтому Dialogflow должен возвращать новые значения в Действия в Google, чтобы обновить значения user.storage, чтобы Действия в Google отправляли новые значения в следующий запрос.Однако Dialogflow не передает управление действиям в Google при вызове followup().В результате, даже если установить значения user.storage, к сожалению, эти значения игнорируются.

Вместо этого SDK может временно сохранять новые значения user.storage, чтобы возвращать значения в Действия в Google по адресуследующий веб-крючок.Однако намерение, вызванное последующим событием, не всегда вызывает веб-крючок.Следовательно, эта идея не может охватывать все случаи.В результате обсуждения текущий SDK не поддерживает эту идею.

Эта спецификация описана в следующей справке API.

https://actions -on-google.github.io / actions-on-google-nodejs / classes / dialogflow.dialogflowconversation.html # followup

Кроме того, обсуждение этой спецификации можно прочитать по следующему адресу:

https://github.com/actions-on-google/actions-on-google-nodejs/pull/211#issuecomment-412942410

0 голосов
/ 13 октября 2018

Проблема в вашем случае заключается в том, что вызов conv.followup() сводит на нет большинство вещей, которые вы делаете в исходном обработчике намерений, вместо этого заменяя их тем, что вы делаете в следующем намерении.

user.storage следуетсохранить значения между Intents, которые запускаются действиями пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...