接收 WhatsApp 文本消息
联系人在聊天中输入内容后会产生一条携带 text 的入站消息。这是最常见的入站分支,也是打开或重置客户服务窗口的分支。
入站文本携带的内容
text.body 保存联系人输入的内容,该分支上不携带其他任何字段:
代码示例
{
"id": "wam_01kya19eknftrs2s6p82asmvnh",
"direction": "inbound",
"from": { "phone_number": "+14155550100", "display_name": "Alex Rivera" },
"to": { "phone_number": "+13124495569" },
"status": "received",
"text": { "body": "Is my order out for delivery yet?" },
"created_at": "2026-08-25T09:04:11Z"
}preview_url 是一个发送端字段。入站文本不携带链接预览标志,无论联系人自己的客户端渲染了什么,因此 body 中的 URL 会作为文本的一部分被读取。
读取 schema 未对入站 body 声明最大长度。4096 字符的上限属于发送端,因此请将存储设计为无限制文本,而不是依赖入站分支未承诺的限制。
以引用回复方式发送的文本
当联系人通过引用你的某条消息来回复时,分支不变,in_reply_to_message_id 标识他们回复的那条消息:
代码示例
{
"id": "wam_01kyb2m4xq7whs0d8n3prv6tez",
"direction": "inbound",
"from": { "phone_number": "+14155550100" },
"to": { "phone_number": "+13124495569" },
"status": "received",
"in_reply_to_message_id": "wam_01kya19eknftrs2s6p82asmvnh",
"text": { "body": "Yes, that one" },
"created_at": "2026-08-25T09:06:02Z"
}WhatsApp 并非标记每一条回复,未标记的回复不携带任何 ID。请参阅中心页面的引用回复,了解解析可能遗漏的情况以及如何在没有 ID 时进行关联。
Webhook 载荷
whatsapp.received 在事件信封上携带相同的分支,因此端点可以直接处理文本,无需再读取消息:
代码示例
{
"type": "whatsapp.received",
"timestamp": "2026-08-25T09:04:11.118Z",
"data": {
"whatsapp_id": "wam_01kya19eknftrs2s6p82asmvnh",
"workspace_id": "ws_01ky7m235keycbnwyajabe1a6b",
"direction": "inbound",
"from": { "phone_number": "+14155550100", "display_name": "Alex Rivera" },
"to": { "phone_number": "+13124495569" },
"text": { "body": "Is my order out for delivery yet?" },
"tags": null,
"metadata": null
}
}注意事项
- 文本是联系人重新打开窗口的最低成本方式。 任何入站消息都会将服务窗口重置为 24 小时,而文本是大多数联系人发送的内容;从那一刻起,你可以发送自由格式的回复。
- from 可能不携带电话号码。 已启用 WhatsApp 用户名的联系人通过业务范围用户 ID联系你,因此请从 from 读取身份信息,而不要假定 from.phone_number 已设置。
- 正文是联系人自己输入的内容。 点击你发送的某个元素会以互动回复的形式到达其独立的分支。
后续步骤
- 接收工作原理:入站信封、媒体获取以及 whatsapp.received webhook
- WhatsApp 纯文本消息:同一分支的发送端
- 接收互动回复:点击按钮或列表行后到达的内容
- 发送 WhatsApp 消息:在服务窗口内回复以及引用消息