2

要让 Google Assistant 向用户显示丰富的响应,必须为其提供响应,例如 Google 文档上的 Actions 示例。但是,由于我使用 Dialogflow 作为我的服务器和 Google 之间的中介方,我需要在我的 webhook 中提供某种对 Dialogflow 的响应,以表明应该有一个丰富的响应。正如您从该链接中看到的那样,文档提到了如何向 FB Messenger、Kik、LINE 等发送丰富的响应,但没有提到 Google Assistant。

我在这里想念什么?我在 Dialogflow Web 控制台中看到了丰富响应的选项,但在那里我似乎只能输入硬编码的响应,而没有来自服务器的动态数据。这样做的正确方法是什么?

在此处输入图像描述

4

2 回答 2

6

使用 Dialogflow 集成,您的 webhook 应为丰富响应返回的响应 JSON 将如下所示:

{
    "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 集成提供的方法来构建您的丰富响应

于 2018-02-06T10:04:23.777 回答
2

如果您使用的是 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#rich-responses查看如何添加轮播、列表和建议筹码

于 2018-02-06T12:47:50.073 回答