互动消息是携带可点击选项而不仅仅是文本的 WhatsApp 消息。它们存在的原因是自由文本回复的解析成本很高:点击 "Change" 的接收者已经准确表达了意图,而输入 "cant make it sorry" 的接收者则没有。
互动消息有几种类型,且不能互换使用。选错类型通常会以触及限制的方式暴露出来,而非仅仅是偏好问题。
我应该使用哪种?
两个问题决定选择:有多少选项,以及回复是否发生在聊天内部。
回复按钮在消息下方放置最多三个可点击选项,让接收者通过点击而非自由文本来回复。它们适合快速决策,例如确认或取消预订。限制是一到三个,且不可突破。
列表菜单用于选项超过三个的场景。当你需要第四个回复按钮时,就该切换到列表菜单。
链接按钮在消息下方放置一个可点击按钮,在接收者的浏览器中打开一个 URL。当下一步在网页上完成时使用它,例如结账页面或日期选择页面,而不是在聊天中完成。
前两种与第三种之间的区别值得明确说明,因为它决定了对话在哪里继续。回复按钮将交互保持在 WhatsApp 内部,这会保持客服窗口的有效性并为你提供结构化的回复。链接按钮则结束对话部分,将用户交给浏览器。
除了这三种之外,WhatsApp 还支持用于滚动浏览多张卡片的轮播消息、位置请求和联系信息请求。每种都是独立的消息类型,有自己的数据结构。
有人点击后会返回什么?
一个带标识的选项值,这正是使用互动消息的意义。
每个回复按钮都携带一个你在发送时设置的 slug,以及接收者看到的 text。当他们点击时,回复会返回该 slug。因此你的处理程序基于你选定的值、在你控制的词汇表中进行分支,而不是去解析别人输入的内容。之后修改可见标签不会影响分支逻辑,因为标签和标识符是独立的字段。
这也是在任何驱动逻辑的流程中选择按钮而非自由文本的实际理由:解释问题直接消失了,而不是靠更好的解析来解决。
互动消息仍然需要模板吗?
是的,只要普通消息需要模板的场景都需要。
互动消息与其他消息没有区别,因此 24 小时客服窗口同样适用。在开放的窗口内,你可以自由发送互动内容。在窗口之外,要联系到对方就必须使用已审批的模板,互动消息也不例外。
有些人认为按钮是一种更轻量的消息,但事实并非如此。它们是同一种消息,只是包含了更多结构。
如何发送互动消息?
将 interactive.type 设置为你需要的类型,然后填写该类型对应的字段。
对于回复按钮,类型为 button,包含一个 body_text 和一到三个 buttons,每个是一个 quick_reply,携带自己的 slug 和 text。对于链接按钮,类型为 cta_url,包含一个 body_text 和一个 cta_url 对象,携带按钮的 text 和 url。
每种类型都有自己的指南,并在每个 SDK 中提供完整示例:回复按钮、列表菜单、链接按钮、轮播消息、位置请求和联系信息请求。
读取回复是另一部分,互动回复介绍了有人点击后返回的内容。
简而言之
三个或更少的选项用回复按钮;更多则用列表菜单。
回复按钮支持一到三个选项。数量限制是决定因素,而非样式偏好。
链接按钮将用户引导至聊天之外。
当下一步是打开网页时使用链接按钮。当回复属于对话内部时使用回复按钮。
回复以标识值返回,而非自由文本。
每个选项都携带你设置的 slug,因此你的处理程序基于你选定的值进行分支,而不是基于接收者输入的内容。
互动消息不能让你免受会话窗口的限制。
这些消息与其他消息没有区别,因此在开放的会话窗口之外仍需要使用已审批的模板。