Dialogflow Webhook的Facebook Messenger Quick Replies不显示问题
排查步骤与修复方案
- 第一优先级:修复JSON语法错误。当前完整配置的quickReplies对象结尾位置,多了一个尾随逗号——也就是数组最后一个元素后面额外加了
,。这类语法错误在Webhook透传的宽松解析逻辑里不会触发显式报错,只会静默丢弃整个带语法错误的消息块,直接导致QR按钮根本传不到FBM侧,删掉这个多余的逗号即可。 - 第二优先级:修正Quick Replies的结构逻辑。Quick Replies不是独立的消息类型,不能和text、card这类独立消息块平行放在fulfillmentMessages数组里。它是依附在某条文本消息上的交互组件,必须和配套的提示文本写在同一个fulfillmentMessage对象里,Dialogflow才会在透传的时候把它组装成FBM可识别的Quick Reply结构。
现有结构是把三个text消息块独立列完,单独把quickReplies拆成了第四个独立的数组元素,Dialogflow在解析时找不到QR对应的绑定载体,会直接把这个无依附的QR块过滤掉,不会透传到FBM。
修正后的结构示例(把最后一条提示文本和QR绑定为同一个消息):{ "text": { "text": ["Just type xxxxxx."] }, "quickReplies": { "title": "Alternative Names", "quickReplies": ["Maroon", "Rouge", "Rot", "Reed", "Fuscia", "Cyan"] }, "platform": "FACEBOOK" } - 第三优先级:校验FBM侧的字段规则。FBM对Quick Replies有明确的长度限制:QR按钮单条文本不能超过20个字符,顶部提示title不能超过60个字符,单组最多展示11个QR按钮。只要任意字段超出限制,FBM会静默丢弃整个QR组件,不返回任何错误日志,需要逐字段核对长度是否合规。
- 第四优先级:校验渠道配置匹配。现有配置里的text消息块没有标注平台属性,是全平台透传的;而QR块标注了
"platform": "FACEBOOK",如果对接的FBM渠道没有在Dialogflow后台正确完成授权绑定,这类带平台属性的富组件会被单独过滤,而基础文本消息不受影响。因为之前的带"platform": "FACEBOOK"的card消息可以正常显示,这条可以在前面的问题修复后再做兜底校验。
内容的提问来源于stack exchange,提问作者PerryS
相关产品推荐
相关产品推荐

