如何配置Dialogflow Webhook按用户平台返回对应响应?
实现Dialogflow跨平台响应区分:Assistant富消息+其他平台纯文本
我来给你搞定这个需求——其实Dialogflow的Webhook响应天生就支持按平台定制内容,核心就是利用platform字段指定消息对应的平台,同时保留一个无平台限制的纯文本响应作为 fallback。
核心思路
Dialogflow的fulfillmentMessages数组可以包含多条消息,每条消息可以通过platform字段指定它适配的平台:
- 给Google Assistant的富消息,指定
platform: "ACTIONS_ON_GOOGLE",并按照Actions on Google的规范构造富消息结构(比如卡片、列表、轮播等) - 添加一条不指定platform的纯文本消息,作为所有其他平台(网页、Alexa等)的默认响应
具体示例(Webhook响应JSON)
下面是一个完整的响应结构示例,你可以直接参考:
{ "fulfillmentMessages": [ // Google Assistant专属富消息(这里用基础卡片举例) { "platform": "ACTIONS_ON_GOOGLE", "basicCard": { "title": "Assistant专属内容", "subtitle": "仅在Google Assistant中可见", "formattedText": "这里是卡片的详细内容,支持换行和简单格式~", "image": { "imageUri": "https://your-image-url.com/photo.jpg", "accessibilityText": "示例图片描述" }, "buttons": [ { "title": "查看详情", "openUrlAction": { "url": "https://your-link-url.com" } } ] } }, // 其他平台的默认纯文本响应 { "text": { "text": [ "这是给网页、Alexa等平台的纯文本回复内容" ] } } ] }
关键细节说明
- 平台匹配逻辑:Dialogflow会优先返回与当前用户平台匹配的消息;如果没有匹配到对应平台的消息,就会使用不带
platform字段的默认消息 - 富消息类型选择:除了
basicCard,你还可以用listSelect(列表)、carouselSelect(轮播)、simpleResponses(语音+文本组合)等Actions on Google支持的富消息类型,只要结构符合规范就行 - 多消息处理:如果同一个平台有多条消息,Dialogflow会按数组顺序依次返回给用户
这样配置后,Google Assistant用户会看到你精心设计的富消息,其他平台的用户则会收到简洁的纯文本响应,完美满足你的需求~
内容的提问来源于stack exchange,提问作者Shaikat Haque
相关产品推荐
相关产品推荐

