Приложение не отвечает прямо сейчас.MalformedResponse - не удалось найти RichResponse или SystemIntent в ответе платформы - PullRequest
0 голосов
/ 17 июня 2019

Я пытаюсь пройти учебник по кодовым меткам для Google Actions и столкнулся с некоторыми проблемами. Я нахожусь на "Построить Действия для Помощника (Уровень 2)".

Когда я пытаюсь протестировать действие в симуляторе, я получаю сообщение «Мое тестовое приложение не отвечает прямо сейчас. Попытайтесь еще раз в ближайшее время».

На вкладках запроса или ответа ничего нет. Вот вывод на вкладке отладки:

{
  "response": "My test app isn't responding right now. Try again soon.",
  "expectUserResponse": false,
  "conversationToken": "EvwCS2o5Wk...",
  "audioResponse": "//NExAASeH...",
  "ssmlMarkList": [],
  "debugInfo": {
    "sharedDebugInfoList": []
  },
  "visualResponse": {
    "visualElementsList": [
      {
        "displayText": {
          "content": "My test app isn't responding right now. Try again soon."
        }
      }
    ],
    "suggestionsList": [],
    "agentLogoUrl": ""
  },
  "clientError": 0,
  "is3pResponse": true,
  "clientOperationList": [],
  "projectName": ""
}

Мой код:

'use strict';

// Import the Dialogflow module from the Actions on Google client library.
const {
    dialogflow,
    Permission,
    Suggestions,
} = require('actions-on-google');

// Import the firebase-functions package for deployment.
const functions = require('firebase-functions');

// Instantiate the Dialogflow client.
const app = dialogflow({debug: true});

// Handle the Dialogflow intent named 'favorite color'.
// The intent collects a parameter named 'color'.
app.intent('favorite color', (conv, {color}) => {
  const luckyNumber = color.length;
  // Respond with the user's lucky number and end the conversation.
  if (conv.data.userName) {
    conv.close(`${conv.data.userName}, your lucky number is ${luckyNumber}.`);
  } else {
    conv.close(`Your lucky number is ${luckyNumber}.`);
  };
});

app.intent('Default Welcome Intent', (conv) => {
  const options = {
    context: 'Hi there, to get to know you better',
    permissions: ['NAME'],
  };
  conv.ask(new Permission(options));
});

// Handle the Dialogflow intent named 'actions_intent_PERMISSION'. If user
// agreed to PERMISSION prompt, then boolean value 'permissionGranted' is true.
app.intent('ask permission', (conv, params, permissionGranted) => {
  // If they didn't give me permission to use their name...
  const options = ['Blue', 'Red', 'Green'];
  if (!permissionGranted) {
    conv.ask("Ok, no worries. What\'s your favorite color?");
    conv.ask(new Suggestions(options));
  } else {
    // Otherwise, they gave me permission to use it
    conv.data.userName = conv.user.name.display;
    conv.ask(`Thanks, ${conv.data.userName}. What's your favorite color?`);
    conv.ask(new Suggestions(options));
  };
});

// Set the DialogflowApp object to handle the HTTPS POST request.
exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);

На вкладке "Ошибка" также ничего нет. Я попытался найти значение clientError: 0, чтобы понять, помогает ли это безрезультатно. Я также пытался найти ошибку MalformedResponse, но не получаю много полезной информации.

Я пробовал все виды перемещения кода или переписывания его, и ничего не менялось в сообщении об ошибке. Я понятия не имею, почему он ломается.

Журналы здесь (https://console.cloud.google.com) для этого действия говорят:

MalformedResponse: ErrorId: a5421d80-def5-42ef-ba55-8ac95a879e14. Failed to parse Dialogflow response into AppResponse because of invalid platform response. : Could not find a RichResponse or SystemIntent in the platform response for agentId: 6edfe023-05da-4726-9ee7-6469f0a5fb3d and intentId: 8ad48133-dd71-496c-b5af-d4ec19e88309

Я пытался найти это и не могу найти много полезной информации об этом.

Еще одна вещь, которую я заметил, - журналы для этой функции в https://console.firebase.google.com, похоже, не обновляются. Последний журнал у меня на 6/2, когда функция впервые сломалась. Я понятия не имею, почему это не будет обновляться. Если я запусту firebase functions:log, у меня появятся более свежие записи, которые выглядят так:

2019-06-16T22:20:20.246Z I : 
2019-06-16T22:20:21.895Z N dialogflowFirebaseFulfillment: 
2019-06-16T22:21:01.674Z N dialogflowFirebaseFulfillment: 
2019-06-16T22:27:45.629Z I : 
2019-06-16T22:27:47.249Z N dialogflowFirebaseFulfillment: 
2019-06-16T22:28:15.351Z N dialogflowFirebaseFulfillment: 
2019-06-16T22:59:06.793Z I : 
2019-06-16T22:59:08.488Z N dialogflowFirebaseFulfillment: 
2019-06-16T22:59:49Z N dialogflowFirebaseFulfillment: 

В какой-то момент в этих журналах появилось сообщение "Undefined" рядом с dialogflowFirebaseFulfillment:, но что-то изменилось, и я не знаю, что.

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

1 Ответ

0 голосов
/ 04 июля 2019

Хорошо, я наконец понял это.Я не уверен, что изменилось, но я думаю, что это переход с V1 на V2 в диалоге (так что учебник не был действительно правильным), и я искал в справочных документах не тот Github.

Этоline ...

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

Требуется изменить на ...

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

У меня было ощущение, что это связано с моим развертыванием в Firebase, но что заставило меняПравильный путь проверял эту страницу: https://github.com/actions-on-google/actions-on-google-nodejs

В частности, в этом разделе говорится о фреймворках и экспорте в соответствующие.

Надеюсь, это поможет кому-то еще в подобной ситуации :)

...