Отправить богатые ответы на действия в Google через выполнение веб-крюка Dialogflow

Чтобы Google Assistant отображал расширенные ответы для пользователя, необходимо предоставить ему ответ, подобный примеру в Действиях в Документах Google. Тем не менее, поскольку я использую Dialogflow в качестве посредника между моим сервером и Google, мне нужно предоставить своего рода ответ на Dialogflow в моих веб- крюках, чтобы указать, что должен быть богатый ответ. Как видно из этой ссылки, в документах упоминается, как отправлять расширенные ответы в FB Messenger, Kik, LINE и т. Д., Но не в Google Assistant.

Что мне здесь не хватает? Я вижу опцию для расширенных ответов в веб-консоли Dialogflow, но там я могу только вводить жестко закодированные ответы без динамических данных с сервера. Какой правильный способ сделать это?

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

2 ответа

Решение

Используя интеграцию Dialogflow, ответ JSON, который должен вернуть ваш webhook для расширенного ответа, будет выглядеть так:

{
    "data":{
        "google":{
            "expectUserResponse":true,
            "noInputPrompts":[

            ],
            "richResponse":{
                "items":[
                    {
                        "simpleResponse":{
                            "textToSpeech":"Welcome to this Basic Card",
                            "displayText":"Welcome to this Basic Card"
                        }
                    },
                    {
                        "basicCard":{
                            "buttons":[
                                {
                                    "title":"Button Title",
                                    "openUrlAction":{
                                        "url":"https://some.url"
                                    }
                                }
                            ],
                            "formattedText":"Some text",
                            "image":{
                                "url":"http://some_image.jpg",
                                "accessibilityText":"Accessibility text describing the image"
                            },
                            "title":"Card Title"
                        }
                    }
                ],
                "suggestions":[
                    {
                        "title":"Aléatoire"
                    },
                    {
                        "title":"Top"
                    }
                ]
            }
        }
    }
}

Если вы используете библиотеку Node.js, вы также можете использовать предоставленные методы для интеграции Dialogflow для создания вашего расширенного ответа.

Если вы используете Node.js, вы должны вызвать метод buildRichResponse() и затем добавьте элементы как дочерние элементы этого объекта, например так:

app.ask(app.buildRichResponse()
.addSimpleResponse('A text to be spoken')
.addBasicCard(app.buildBasicCard('Some text to be displayed')
  .setTitle('A title')
  .addButton('Read more', 'https://example.google.com/something')
  .setImage('https://example.google.com/image.png', 'Image alternate text')
  .setImageDisplay('CROPPED')
  )
);

Это был пример для добавления BasicCard, вы можете увидеть, как добавить карусели, списки и фишки предложений на https://developers.google.com/actions/assistant/responses

Другие вопросы по тегам