Неверно сформированный ответ: не удалось проанализировать ответ Dialogflow в AppResponse из-за пустого речевого ответа

#dialogflow-es #actions-on-google

#dialogflow-es #действия в Google

Вопрос:

Я использую функцию firebase для выполнения webhook в Dialogflow. Я получаю webhook успешным, fulfillment status но он не работает. Я использую версию 1. Когда я тестирую его на симуляторе Google Assistant, он говорит: «Приложение не отвечает».

функция firebase

 const functions = require('firebase-functions');

exports.webhook = functions.https.onRequest((request, response) => {
    response.send({
        "google":{
           "richResponse":{
              "items":[
                 {
                    "simpleResponse":{
                       "textToSpeech":"Hey! Good to see you."
                    }
                 },
                 {
                    "mediaResponse":{
                       "mediaType":"AUDIO",
                       "mediaObjects":[
                          {
                             "name":"Exercises",
                             "description":"ex",
                             "largeImage":{
                                "url":"http://res.freestockphotos.biz/pictures/17/17903-balloons-pv.jpg",
                                "accessibilityText":"..."
                             },
                             "contentUrl":"https://theislam360.me:8080/hbd.mp3"
                          }
                       ]
                    }
                 }
              ],
              "suggestions":[
                 {
                    "title":"chips"
                 }
              ]
           }
        }
      }
   )
});`
  

Когда я копирую вставляю ответ с {google... конца в пользовательскую полезную нагрузку вручную через графический интерфейс, это работает. В то время как для webhook он не работает.

НЕОБРАБОТАННЫЙ ОТВЕТ API

  {
  "id": "eaf627ed-26b5-4965-b0b0-bc77144e144b",
  "timestamp": "2019-04-15T11:54:18.948Z",
  "lang": "en",
  "result": {
    "source": "agent",
    "resolvedQuery": "play hbd",
    "action": "",
    "actionIncomplete": false,
    "parameters": {
      "any": "hbd"
    },
    "contexts": [],
    "metadata": {
      "isFallbackIntent": "false",
      "webhookResponseTime": 34,
      "intentName": "play",
      "intentId": "e60071cd-ce31-4ef9-ae9b-cc370c3362b3",
      "webhookUsed": "true",
      "webhookForSlotFillingUsed": "false"
    },
    "fulfillment": {
      "messages": []
    },
    "score": 1
  },
  "status": {
    "code": 200,
    "errorType": "success"
  },
  "sessionId": "e91bd62f-766b-b19d-d37b-2917ac20caa6"
}
  

ЗАПРОС НА ВЫПОЛНЕНИЕ

 {
  "id": "eaf627ed-26b5-4965-b0b0-bc77144e144b",
  "timestamp": "2019-04-15T11:54:18.948Z",
  "lang": "en",
  "result": {
    "source": "agent",
    "resolvedQuery": "play hbd",
    "speech": "",
    "action": "",
    "actionIncomplete": false,
    "parameters": {
      "any": "hbd"
    },
    "contexts": [],
    "metadata": {
      "intentId": "e60071cd-ce31-4ef9-ae9b-cc370c3362b3",
      "webhookUsed": "true",
      "webhookForSlotFillingUsed": "false",
      "isFallbackIntent": "false",
      "intentName": "play"
    },
    "fulfillment": {
      "speech": "",
      "messages": []
    },
    "score": 1
  },
  "status": {
    "code": 200,
    "errorType": "success"
  },
  "sessionId": "e91bd62f-766b-b19d-d37b-2917ac20caa6"
}
  

ОТВЕТ НА ВЫПОЛНЕНИЕ

 {
  "google": {
    "richResponse": {
      "items": [
        {
          "simpleResponse": {
            "textToSpeech": "Hey! Good to see you."
          }
        },
        {
          "mediaResponse": {
            "mediaType": "AUDIO",
            "mediaObjects": [
              {
                "name": "Exercises",
                "description": "ex",
                "largeImage": {
                  "url": "http://res.freestockphotos.biz/pictures/17/17903-balloons-pv.jpg",
                  "accessibilityText": "..."
                },
                "contentUrl": "https://theislam360.me:8080/hbd.mp3"
              }
            ]
          }
        }
      ],
      "suggestions": [
        {
          "title": "chips"
        }
      ]
    }
  }
}
  

СТАТУС ВЫПОЛНЕНИЯ

 Webhook execution successful
  

введите описание изображения здесь

Журналы Firebase
введите описание изображения здесь

Журналы симулятора Google Assistant
введите описание изображения здесь

Ответ №1:

Вы не используете правильный JSON в ответе. Помещая его в графический интерфейс в разделе «пользовательская полезная нагрузка», он создает для вас больший ответ JSON. google Объект должен находиться под data объектом для Dialogflow v1 или payload для Dialogflow v2. (И если вы не переключились на v2 — вы должны сделать это немедленно, поскольку v1 будет отключен примерно через месяц.)

Итак, то, что вы возвращаете, должно выглядеть больше как

 {
  "payload": {
    "google": {
      ...
    }
  }
}