Правильное выполнение сообщений в формате для DialogFlow Google Assistant - PullRequest
0 голосов
/ 15 мая 2019

Я пытаюсь использовать Java DialogFlow API для создания ответа веб-крючка для Google Assistant.Мои ответы работают нормально в функции «Попробуй сейчас» в DialogFlow, но Google Assistant продолжает говорить «не отвечает прямо сейчас. Повторите попытку позже».

В качестве эксперимента мне удалось заставить работать Google Assistant с помощьюответ, не связанный с webhook (то есть с помощью обычного пользовательского интерфейса DialogFlow Intent).Когда я посмотрел в своей истории, я увидел, что рабочий ответ выглядел следующим образом:

"queryText": "GOOGLE_ASSISTANT_WELCOME",
  "action": "input.welcome",
  "fulfillmentMessages": [
    {
      "text": {
    "text": [
      "[{\"type\":\"simple_response\",\"platform\":\"google\",\"textToSpeech\":\"Hello\"}]"
    ]
      }
    }

Это кажется мне очень странным, поскольку текстовое тело на самом деле является еще одним объектом в кодировке JSON (содержащим textToSpeech среди других полей),Когда я использую Java DialogFlow API следующим образом:

List<String> texts = new ArrayList<>();
texts.add( "Foo" );
message.setText( new GoogleCloudDialogflowV2IntentMessageText().setText( texts ));

, я получаю другой формат:

  "fulfillmentMessages": [
    {
      "text": {
    "text": [ "Foo" ]
      }
    }

Этот помощник Google говорит:

MalformedResponse: Failed to parse Dialogflow response into AppResponse because of empty speech response"

Даже еслиЯ пытаюсь использовать закодированную строку JSON в качестве моего текстового тела, но оно все равно не работает.

Как правильно вернуть формат сообщения по умолчанию, чтобы помощник Google мог его прочитать?Я попытался simpleResponse, и это тоже не сработало

1 Ответ

1 голос
/ 15 мая 2019

Ниже приведен минимальный ответ, необходимый для ответа

{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "Welcome! Do you want me to change color or pause spinning? You can also tell me to ask you later."
            }
          }
        ]
      }
    }
  }
}

Естественно, с Java вы можете использовать API для генерации необходимых выходных ответов. Плюс, если вы используете базовые карты или изображения для интеллектуальных дисплеев, то это определенно поможет намного больше, чтобы использовать API вместо этого. Вы также можете проверить ответ от симулятора.

...