-
Notifications
You must be signed in to change notification settings - Fork 5
SMB_zh
您可以配置嵌入式注册,以允许业务客户使用现有的 WhatsApp Business 应用账户和电话号码接入。选择此选项后成功接入的客户将能够使用您的应用向其客户大规模发送消息,同时仍可通过 WhatsApp Business 应用一对一发送消息,且两个应用之间的消息记录保持同步。
- 个人号的历史联系人数据同步 smb_app_state_sync
- 个人号与联系人之间的历史聊天记录同步 history
- 个人号通过WhatsApp设备发送的消息,消息镜像同步 smb_message_echoes
描述业务客户的 WhatsApp Business 应用中的一个或多个 WhatsApp 联系人。
- 解决方案提供方同步某业务客户的 WhatsApp 联系人,该业务客户已通过 WhatsApp Business 应用电话号码完成接入
- 由解决方案提供方接入、使用 WhatsApp Business 应用电话号码的业务客户添加、编辑或移除 WhatsApp 联系人
| 参数名 | 类型 | 说明 |
|---|---|---|
| field | String | 事件固定值:smb_app_state_sync
|
| value | Object | 事件主体 |
| business_phone | String | 业务客户公司电话号码 |
| messaging_product | String | 消息产品类型,固定值 whatsapp
|
| metadata | Metadata Object | 号码元信息 |
| state_sync | array[State Sync Object] | 联系人同步列表 |
| wabaId | String | 业务客户的 WhatsApp Business 业务账户编号 |
- Metadata Object参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| display_phone_number | String | 展示的商家号码 |
| phone_number_id | String | 业务电话号码 ID |
- State Sync Object参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| type | String | 同步对象类型,当前为 contact
|
| contact | Contact Object | 联系人信息 |
| action | String | 联系人动作:add(新增/编辑),remove(移除) |
| metadata | State Metadata Object | 同步事件元信息 |
- Contact Object参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| full_name | String | 联系人全名 |
| phone_number | String | 联系人手机号;匿名化场景可能缺失 |
| user_id | String | 用户 BSUID |
| parent_user_id | String | 用户父 BSUID;未启用父 BSUID 时省略 |
| username | String | 匿名化场景下的用户账号;非匿名化时可能省略 |
- State Metadata Object参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| timestamp | String | Unix 时间戳,表示联系人变更发生时间 |
{
"field": "smb_app_state_sync",
"value": {
"business_phone": "xxx",
"messaging_product": "whatsapp",
"metadata": {
"display_phone_number": "xxx",
"phone_number_id": "xxx"
},
"state_sync": [
{
"type": "contact",
"contact": {
"full_name": "xxx",
"phone_number": "628786xxx78"
},
"action": "add",
"metadata": {
"timestamp": "1756977333478"
}
},
{
"type": "contact",
"contact": {
"full_name": "xxx",
"username": "@testusername",
"user_id": "US.13491208655302741918",
"parent_user_id": "US.ENT.506847293015824"
},
"action": "add",
"metadata": {
"timestamp": "1756977333478"
}
},
{
"type": "contact",
"contact": {
"full_name": "\u202a+852xxx3859\u202c",
"phone_number": "85238xxx859",
"user_id": "US.13491208655302741918"
},
"action": "add",
"metadata": {
"timestamp": "1756977333478"
}
},
{
"type": "contact",
"contact": {
"full_name": "\u202a+551xxx65\u202c",
"phone_number": "551xxxx2065",
"user_id": "US.13491208655302741918",
"parent_user_id": "US.ENT.506847293015824"
},
"action": "add",
"metadata": {
"timestamp": "1756977333478"
}
}
],
"wabaId": "xxx"
}
}描述已选择与解决方案提供方共享聊天记录的商家的 WhatsApp Business 应用聊天记录,或商家拒绝共享聊天记录的决定。
- 解决方案提供方同步某业务客户的 WhatsApp Business 应用聊天记录,该业务客户已通过 WhatsApp Business 应用电话号码完成接入,且已同意共享其聊天记录
- 解决方案提供方同步某业务客户的 WhatsApp Business 应用聊天记录,该业务客户已通过 WhatsApp Business 应用电话号码完成接入,但拒绝共享其聊天记录
如果在解决方案提供方请求商家聊天记录时,商家已批准共享聊天记录,则会触发一系列历史记录 Webhook,其中描述自商家接入云端 API 后 180 天内发送或接收的所有消息。
- 群聊中的消息不会包含在内
- 媒体消息将不包含素材编号;但是,将单独发送包含媒体消息素材编号的其他历史记录 Webhook,但仅限于接入后 14 天内发送的媒体消息
请注意,为提高效率,单个 Webhook 可能描述上千条消息,因此我们建议您先获取其内容,然后异步处理内容。
- 已共享消息记录 如果商家选择与您共享其消息记录,则会触发一系列历史记录 Webhook,其中描述在指定时间段内向 WhatsApp 用户发送或从 WhatsApp 用户接收的每一条消息。
- 未共享消息记录 如果商家选择不与您共享其消息记录,系统会触发包含错误代码 2593109 的 history Webhook。案例如下
Webhook 分为三个历史阶段,其中第 0 天表示商家接入云端 API 的时间:
- 阶段 0:第 0 天到第 1 天
- 第 1 阶段:第 1 天到第 90 天
- 第 2 阶段:第 90 天到第 180 天
对于每个阶段,聊天记录 Webhook 可能会拆分成多个独立的块发送,具体取决于对话中消息的总数。
- 您可以使用
chunk_order参数值按顺序排列这些块,因为它们可能并非按顺序送达。 - 您可以使用
phase参数值来监控阶段进度。值2表示当前阶段已完成。 - 您可以使用
progress参数值来监控整体进度。值100表示同步已完成。
如果某个阶段没有可用的聊天记录,则不会发送相应的 Webhook。
| 参数名 | 类型 | 说明 |
|---|---|---|
| field | String | 事件固定值:history
|
| value | Object | 事件主体 |
| business_phone | String | 业务客户公司电话号码 |
| messaging_product | String | 消息产品类型,固定值 whatsapp
|
| metadata | Metadata Object | 号码元信息 |
| history | array[History Object] | 历史同步块列表 |
| messages | array[Message Object] | 媒体占位补偿场景下的消息列表 |
| wabaId | String | 业务客户 WABA ID |
- Metadata Object参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| display_phone_number | String | 展示的商家号码 |
| phone_number_id | String | 业务电话号码 ID |
- History Object参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| metadata | History Metadata Object | 历史块元数据 |
| threads | array[Thread Object] | 会话线程列表 |
| errors | array[Error Object] | 历史同步失败信息(例如商家拒绝共享历史) |
- History Metadata Object参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| phase | Integer | 同步阶段:0(第0-1天)、1(第1-90天)、2(第90-180天) |
| chunk_order | Integer | 阶段内分块顺序号 |
| progress | Integer | 总体同步进度百分比(0-100) |
- Thread Object参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| id | String | 联系人手机号;匿名化场景可能缺失 |
| messages | array[Message Object] | 该对话下的消息列表 |
| context | array[Context Object] | 上下文对象 |
- Thread Message Object参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| id | String | WhatsApp 消息 ID |
| timestamp | String | Unix 时间戳 |
| type | String | 消息类型 1. text 文本 2. image 图片 3. video 视频 4. voice 语音 5. audio 音频 6. document 文件 7. location 位置 8. sticker 贴图表情 9. interactive 互动消息 10.context 引用消息 11.reaction 心情消息 12. button 按钮 |
| from | String | 发送方号码;匿名化场景可能缺失 |
| text/image/interactive/errors | Object/array | 与 type 对应的消息体 |
| history_context | History Context Object | 历史上下文信息(方向与状态) |
| context | Context Object | 引用消息上下文(存在时返回) |
| from_user_id | String | 发送方 BSUID |
| from_parent_user_id | String | 发送方父 BSUID |
- Thread Context Object 参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| wa_id | String | 联系人手机号;匿名化场景可能缺失 |
| user_id | String | 用户 BSUID |
| parent_user_id | String | 用户父 BSUID |
| username | String | 匿名化账号 |
- History Context Object参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| status | String | 消息状态:DELIVERED、ERROR、PENDING、PLAYED、READ、SENT
|
| from_me | boolean | 是否由商家侧发送 |
- Error Object参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | Integer | 错误码 |
| title | String | 错误标题 |
| message | String | 错误信息 |
| error_data | Object | 错误扩展信息(details) |
- 消息类型
- 文本消息参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| text | Object | 参照响应示例 文本消息内容,type=text时有值 |
- text object参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| body | String | 消息文本 |
- 图片消息参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| image | JsonObject | 参照响应示例 图片消息内容,type=image时有值 |
- image object参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| id | String | 媒体存储的id,可用于获取媒体链接,Webhook 中的影音内容编号会在 7 天后过期。 |
| caption | String | 图片的描述 |
| mime_type | String | 媒体文件的MiME类型 |
| sha256 | String | 媒体文件的校验签名 |
- 视频消息参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| video | JsonObject | 参照响应示例 视频消息内容,type=video时有值 |
- video object参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| id | String | 媒体存储的id,可用于获取媒体链接,Webhook 中的影音内容编号会在 7 天后过期。 |
| caption | String | 视频的描述 |
| mime_type | String | 媒体文件的MiME类型 |
| sha256 | String | 媒体文件的校验签名 |
- 语音消息参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| voice | JsonObject | 参照响应示例 语音消息内容,type=voice时有值 |
- voice object参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| id | String | 媒体存储的id,可用于获取媒体链接,Webhook 中的影音内容编号会在 7 天后过期。 |
| mime_type | String | 媒体文件的MiME类型 |
| sha256 | String | 媒体文件的校验签名 |
- 音频消息参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| audio | JsonObject | 参照响应示例 音频消息内容,type=audio时有值 |
- audio object参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| id | String | 媒体存储的id,可用于获取媒体链接,Webhook 中的影音内容编号会在 7 天后过期。 |
| mime_type | String | 媒体文件的MiME类型 |
| sha256 | String | 媒体文件的校验签名 |
| link | String | 媒体文件的url,有效期48小时 |
- 文档消息参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| document | JsonObject | 参照响应示例 文档消息内容,type=document时有值 |
- document object参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| id | String | 媒体存储的id,可用于获取媒体链接,Webhook 中的影音内容编号会在 7 天后过期。 |
| mime_type | String | 媒体文件的MiME类型 |
| sha256 | String | 媒体文件的校验签名 |
| filename | String | 文档文件名称 |
- 位置消息参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| location | JsonObject | 参照响应示例 位置消息内容,type=location时有值 |
- location object参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| longitude | String | 位置的经度信息 |
| latitude | String | 位置的维度信息 |
| name | String | 位置的名称 |
| address | String | 位置的详细地址信息 |
- 贴图表情消息参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| sticker | JsonObject | 参照响应示例 贴图表情消息内容,type=sticker时有值 |
- sticker object参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| id | String | 媒体存储的id,可用于获取媒体链接 |
| link | String | 媒体文件的url,有效期48小时 |
- 互动消息参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| interactive | Object |
参照响应示例1 参照响应示例2 type=interactive时有值 |
- interactive object参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| type | String | button_reply (按钮回复) list_reply(列表回复) nfm_reply(表单提交) |
| button_reply | Object | 当用户点击按钮时发送,具有该属性的对象。 |
| list_reply | Object | 当用户从列表中选择一个项目时发送,具有该属性的对象。 |
| nfm_reply | Object | 当用户表单提交,具有该属性的对象。 |
| call_permission_reply | Object | 当用户点击通话权限申请反馈,具有该属性的对象。 |
- button_reply 或者 list_reply object参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| id | String | 按钮id |
| title | String | 标题 |
| description | String | 选项描述,list_reply才有 |
- nfm_reply object参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| name | String | 固定为 flow |
| body | String | 消息提交后的文案 |
| response_json | String | flow的json数据. The structure is either defined in flow JSON ([see Complete action] |
- call_permission_reply object参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| expiration_timestamp | Long | 通话权限过期时间戳 |
| response | String | accept/reject 接受/拒绝 |
| response_source | String | user_action/automatic 用户反馈/系统反馈 |
- 引用消息参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| context | Object |
商品消息响应示例 引用消息响应示例 仅在用户回复或与您的消息之一互动时存在 |
- context object参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| from | String | 被引用消息来源号码 |
| id | String | 消息id |
| meta_message_id | String | meta消息id(不一定存在) |
| forwarded | Boolean | 如果商家收到的该消息已被转发,则设置为true |
| frequently_forwarded | Boolean | 如果商家收到的该消息已被转发超过5次,则设置为true。 |
| referred_product | Object | 引用回复商品消息时含有该对象 |
- referred_product object参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| catalog_id | String | 目录id |
| product_retailer_id | String | 目录中产品的唯一标识符 |
- reaction消息参数:
| 参数名 | 类型 | 必选 | 示例值 | 说明 |
|---|---|---|---|---|
| reaction | Object | 否 | 参照请求示例 | 心情消息内容,type=reaction必填 |
- reaction object参数:
| 参数名 | 类型 | 必选 | 示例值 | 说明 |
|---|---|---|---|---|
| meta_message_id | String | 是 | - | meta消息id |
| message_id | String | 是 | - | 消息回复id,例如:wamid.HBgNODYxMzE2MzczMTQ2NxUCABIYEkVCQkE4NjdGRUE5RDgyQzg0RAA= |
| emoji | String | 是 | - | 表情 例如:"❤️" |
- button object 参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| text | String | 按钮预设文本 |
| payload | String | 不可见特殊字符串 |
{
"field": "history",
"value": {
"business_phone": "xxx",
"history": [
{
"metadata": {
"phase": 0,
"chunk_order": 1,
"progress": 100
},
"threads": [
{
"id": "447xxx736",
"messages": [
{
"from": "447xxx736",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.HBgMNDQ3NzEwMTczNzM2FQIAEhgSRDExQTYyMjc0RjVDNTlBOENBAA==",
"timestamp": "1756977261",
"errors": [
{
"code": 131051,
"title": "Message type unknown",
"message": "Message type unknown",
"error_data": {
"details": "Unsupported message received"
}
}
],
"type": "errors",
"history_context": {
"status": "pending"
}
},
{
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.HBgMNDQ3NzEwMTczNzM2FQIAEhgSMDMyNTU5RTlGQjY5NEIxQUI2AA==",
"timestamp": "1756956364",
"errors": [
{
"code": 131051,
"title": "Message type unknown",
"message": "Message type unknown",
"error_data": {
"details": "Unsupported message received"
}
}
],
"type": "errors",
"history_context": {
"status": "pending"
}
},
{
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.HBgMNDQ3NzEwMTczNzM2FQIAEhgSQTE4QTg0MTU2MkQ1QzlDQThEAA==",
"timestamp": "1756889400",
"errors": [
{
"code": 131051,
"title": "Message type unknown",
"message": "Message type unknown",
"error_data": {
"details": "Unsupported message received"
}
}
],
"type": "errors",
"history_context": {
"status": "pending"
}
},
{
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.HBgMNDQ3NzEwMTczNzM2FQIAEhgSNDY2MUE2RjdGQTYzMTAyMDI4AA==",
"timestamp": "1756709184",
"errors": [
{
"code": 131051,
"title": "Message type unknown",
"message": "Message type unknown",
"error_data": {
"details": "Unsupported message received"
}
}
],
"type": "errors",
"history_context": {
"status": "pending"
}
},
{
"from": "447xxx736",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.HBgMNDQ3NzEwMTczNzM2FQIAEhgSRjk1QkJFREU4OURBMzlFMEFBAA==",
"timestamp": "1756709077",
"errors": [
{
"code": 131051,
"title": "Message type unknown",
"message": "Message type unknown",
"error_data": {
"details": "Unsupported message received"
}
}
],
"type": "errors",
"history_context": {
"status": "pending"
}
},
{
"from": "447xxx736",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.HBgMNDQ3NzEwMTczNzM2FQIAEhgSNTQyMzRDNUZCMTNFNkQyM0Q1AA==",
"timestamp": "1754298556",
"errors": [
{
"code": 131051,
"title": "Message type unknown",
"message": "Message type unknown",
"error_data": {
"details": "Unsupported message received"
}
}
],
"type": "errors",
"history_context": {
"status": "pending"
}
},
{
"from": "447xxx736",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.HBgMNDQ3NzEwMTczNzM2FQIAEhgSMjczNzMyM0ZEOUVFQkZDREE4AA==",
"timestamp": "1754298423",
"errors": [
{
"code": 131051,
"title": "Message type unknown",
"message": "Message type unknown",
"error_data": {
"details": "Unsupported message received"
}
}
],
"type": "errors",
"history_context": {
"status": "pending"
}
}
]
},
{
"messages": [
{
"from": "86133xxx446",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.HBgNODYxMzMyMDIzNzQ0NhUCABIYFDNBNkIwNDdFRDNCRTNGODQyM0JDAA==",
"timestamp": "1756958075",
"text": {
"body": "364"
},
"type": "text",
"history_context": {
"status": "pending"
}
},
{
"from": "551xxx066",
"from_user_id": "US.13491208655302741918",
"id": "wamid.HBgNNTUxMjkyMDAyMjA2NhUCABEYEjlDQkQyMDgyNDRDM0VDQ0RGMgA=",
"timestamp": "1756718044",
"errors": [
{
"code": 131051,
"title": "Message type unknown",
"message": "Message type unknown",
"error_data": {
"details": "Unsupported message received"
}
}
],
"type": "errors",
"history_context": {
"status": "read",
"from_me": true
}
},
{
"from": "551xxx066",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.HBgNNTUxMjkyMDAyMjA2NhUCABEYFjNFQjBBMEMwMDc3MDY2MTE3OTZBM0EA",
"timestamp": "1756717440",
"text": {
"body": "1234567890"
},
"type": "text",
"history_context": {
"status": "read",
"from_me": true
}
},
{
"from": "8613xxx446",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.HBgNODYxMzMyMDIzNzQ0NhUCABIYFDNBRTM4NDU0RDZFNDVERENFM0Y4AA==",
"timestamp": "1756717325",
"text": {
"body": "3q"
},
"type": "text",
"history_context": {
"status": "pending"
}
},
{
"from": "5512xxx66",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.HBgNNTUxMjkyMDAyMjA2NhUCABEYFDNBOUMyQURGMDk3Q0I1RTBFNzBDAA==",
"timestamp": "1756716515",
"text": {
"body": "Hello hi"
},
"type": "text",
"history_context": {
"status": "read",
"from_me": true
}
},
{
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.HBgNODYxMzMyMDIzNzQ0NhUCABIYFDNBMThEOUZEQjFBOTkwMUE3MzhDAA==",
"timestamp": "1756714179",
"text": {
"body": "Happy beginning"
},
"type": "text",
"history_context": {
"status": "pending"
}
},
{
"from": "5512xxx066",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.HBgNNTUxMjkyMDAyMjA2NhUCABEYEjI1NUNFQTRBNkIwMkE4QkY3RQA=",
"timestamp": "1756710767",
"errors": [
{
"code": 131051,
"title": "Message type unknown",
"message": "Message type unknown",
"error_data": {
"details": "Unsupported message received"
}
}
],
"type": "errors",
"history_context": {
"status": "read",
"from_me": true
}
},
{
"from": "5512xxx066",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.HBgNNTUxMjkyMDAyMjA2NhUCABEYFDNBQjAwNzI3QkVCOTFEOTUyMTVDAA==",
"timestamp": "1756709332",
"text": {
"body": "苍龙"
},
"type": "text",
"history_context": {
"status": "read",
"from_me": true
}
},
{
"from": "5512xxx066",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.HBgNNTUxMjkyMDAyMjA2NhUCABEYFDNBREI5MjY5RTgwNkQ1QTI2RThFAA==",
"timestamp": "1752719536",
"text": {
"body": "123456789"
},
"type": "text",
"history_context": {
"status": "delivered",
"from_me": true
}
}
]
},
{
"id": "628xxx678",
"messages": [
{
"from": "5512xxx066",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.HBgNNTUxMjkyMDAyMjA2NhUCABEYIEI2RDgyNUVENTcxMTExMjUyRUJDOUQ1NURFNjgzRjgxAA==",
"timestamp": "1755764541",
"errors": [
{
"code": 131051,
"title": "Message type unknown",
"message": "Message type unknown",
"error_data": {
"details": "Unsupported message received"
}
}
],
"type": "errors",
"history_context": {
"status": "pending",
"from_me": true
}
}
]
},
{
"id": "5512xxx065",
"messages": [
{
"from": "5512xxx066",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.HBgNNTUxMjkyMDAyMjA2NhUCABEYFDNBRTMxMTdBOTRFQTFERkEwNTE0AA==",
"timestamp": "1752853979",
"errors": [
{
"code": 131051,
"title": "Message type unknown",
"message": "Message type unknown",
"error_data": {
"details": "Unsupported message received"
}
}
],
"type": "errors",
"history_context": {
"status": "delivered",
"from_me": true
}
}
]
},
{
"id": "852xxx859",
"messages": [
{
"from": "852xxx859",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.HBgLODUyMzg1MzM4NTkVAgASGBIxNjQ4MUZFODZEMzhEMTcwRDkA",
"timestamp": "1752719539",
"text": {
"body": "simon123"
},
"type": "text",
"history_context": {
"status": "pending"
}
}
]
}
]
}
],
"messaging_product": "whatsapp",
"metadata": {
"display_phone_number": "xxx",
"phone_number_id": "xxx"
},
"wabaId": "xxx"
}
}{
"field": "history",
"value": {
"business_phone": "xxx",
"history": [
{
"metadata": {
"phase": 1,
"chunk_order": 1,
"progress": 100
},
"threads": [
{
"id": "6287xxx678",
"messages": [
{
"from": "5512xxx066",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.HBgNNTUxMjkyMDAyMjA2NhUCABEYIEJDM0RGMzQyMUU1NkE4Q0FEMEExNEU5OTU3NEIzRURCAA==",
"timestamp": "1755764476",
"errors": [
{
"code": 131051,
"title": "Message type unknown",
"message": "Message type unknown",
"error_data": {
"details": "Unsupported message received"
}
}
],
"type": "errors",
"history_context": {
"status": "pending",
"from_me": true
}
},
{
"from": "5512xxx066",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.HBgNNTUxMjkyMDAyMjA2NhUCABEYIDNCQUQ4RDZFNzFCM0JGRTk2NEQ2NDgyQkNGN0MwRkIwAA==",
"timestamp": "1755754947",
"errors": [
{
"code": 131051,
"title": "Message type unknown",
"message": "Message type unknown",
"error_data": {
"details": "Unsupported message received"
}
}
],
"type": "errors",
"history_context": {
"status": "pending",
"from_me": true
}
},
{
"context": {
"from": "6287xxx678",
"id": "wamid.HBgNNTUxMjkyMDAyMjA2NhUCABIYEjBCMEExMjExMDY1MzQ3NkM0MgA="
},
"from": "5512xxx066",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.HBgNNTUxMjkyMDAyMjA2NhUCABEYFDNBNDAyRjg2MzE0ODQ0QTY5MDA5AA==",
"timestamp": "1755748593",
"type": "interactive",
"interactive": {
"type": "call_permission_reply",
"call_permission_reply": {
"response": "accept",
"expiration_timestamp": 1756353390,
"response_source": "user_action"
}
},
"history_context": {
"status": "delivered",
"from_me": true
}
},
{
"from": "6287xxx678",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.HBgNNjI4Nzg2ODU3MjY3OBUCABIYEjBCMEExMjExMDY1MzQ3NkM0MgA=",
"timestamp": "1755748586",
"errors": [
{
"code": 131051,
"title": "Message type unknown",
"message": "Message type unknown",
"error_data": {
"details": "Unsupported message received"
}
}
],
"type": "errors",
"history_context": {
"status": "pending"
}
},
{
"from": "5512xxx066",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.HBgNNTUxMjkyMDAyMjA2NhUCABEYFDNBQkU4NERGN0EwQTBERTVEQzc5AA==",
"timestamp": "1755748580",
"text": {
"body": "1"
},
"type": "text",
"history_context": {
"status": "delivered",
"from_me": true
}
}
]
},
{
"id": "5512xxx065",
"messages": [
{
"from": "5512xxx065",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.HBgNNTUxMjkyMDAyMjA2NRUCABIYEjM2MTkzQ0MzRDMwMUI1NTJCNAA=",
"timestamp": "1752830864",
"errors": [
{
"code": 131051,
"title": "Message type unknown",
"message": "Message type unknown",
"error_data": {
"details": "Unsupported message received"
}
}
],
"type": "errors",
"history_context": {
"status": "pending"
}
},
{
"from": "551xxx066",
"id": "wamid.HBgNNTUxMjkyMDAyMjA2NhUCABEYFDNBQjk2RjdGNkVEMzBGMjZGRDcyAA==",
"timestamp": "1752809278",
"text": {
"body": "Hello"
},
"type": "text",
"history_context": {
"status": "delivered",
"from_me": true
}
}
]
},
{
"id": "852xxx59",
"messages": [
{
"from": "8523xxx59",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.HBgLODUyMzg1MzM4NTkVAgASGBJBMEU5NDlBQkE1NTJENjZGRDQA",
"timestamp": "1752719505",
"errors": [
{
"code": 131051,
"title": "Message type unknown",
"message": "Message type unknown",
"error_data": {
"details": "Unsupported message received"
}
}
],
"type": "errors",
"history_context": {
"status": "pending"
}
},
{
"from": "551xxx066",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.HBgNNTUxMjkyMDAyMjA2NhUCABEYFDNBNTVEQ0RBOTMwNDI5REYyRDIyAA==",
"timestamp": "1752719502",
"text": {
"body": "123456"
},
"type": "text",
"history_context": {
"status": "delivered",
"from_me": true
}
}
]
}
]
}
],
"messaging_product": "whatsapp",
"metadata": {
"display_phone_number": "xxx",
"phone_number_id": "xxx"
},
"wabaId": "xxx"
}
}{
"field": "history",
"value": {
"business_phone": "xxx",
"history": [
{
"metadata": {
"phase": 2,
"chunk_order": 1,
"progress": 100
}
}
],
"messaging_product": "whatsapp",
"metadata": {
"display_phone_number": "xxx",
"phone_number_id": "xxx"
},
"wabaId": "xxx"
}
}以下 Webhook 示例描述了两个消息对话:(1) 一个包含发送给 WhatsApp 用户的文本消息和视频消息以及 WhatsApp 用户回复的对话;(2) 一个包含发送给另一个 WhatsApp 用户的文本消息(感谢该用户下单)的对话。 请注意,第一条对话中的媒体消息内容未加以描述,而是触发第二个 Webhook,描述该媒体消息的内容。
{
"field": "history",
"value": {
"business_phone": "15557522905",
"history": [
{
"metadata": {
"phase": 0,
"chunk_order": 1,
"progress": 55
},
"threads": [
{
"id": "16505551234",
"messages": [
{
"from": "xxx",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.HBgLMTY0NjcwNDM1OTUVAgARGBIyNDlBOEI5QUQ4NDc0N0FCNjMA",
"timestamp": "1739230955",
"type": "text",
"text": {
"body": "Here's the info you requested!"
},
"history_context": {
"status": "READ"
}
},
{
"from": "xxx",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.QyNUEHBgLMTY0NjcwNDM1OTUVAgARGBI1Rj3NEYxMzAzMzQ5MkEA",
"timestamp": "1739230970",
"type": "media_placeholder",
"history_context": {
"status": "PLAYED"
}
},
{
"from": "xxx",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.N0FCNjMAHBgLMTY0NjcwNDM1OTUVAgARGBIyNDlBOEI5QUQ4NDc0",
"timestamp": "1739230970",
"type": "text",
"text": {
"body": "Thanks!"
},
"history_context": {
"status": "READ"
}
}
]
},
{
"id": "12125557890",
"messages": [
{
"from": "xxx",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.BIyNDlBOEI5N0FCNjMAHBgLMTY0NjcwNDM1OTUVAgARGQUQ4NDc0",
"timestamp": "1739230970",
"type": "text",
"text": {
"body": "Thanks for your order! As a thank you, use code THANKS30 to get 30% of your next order."
},
"history_context": {
"status": "DELIVERED"
}
}
]
}
]
}
],
"messaging_product": "whatsapp",
"metadata": {
"display_phone_number": "xxx",
"phone_number_id": "xxx"
},
"wabaId": "xxx"
}
}用于区分消息方向:
| 字段 | 方向 | 说明 |
|---|---|---|
| messages[] | 入站(用户 → 商家) | 用户发送给商家的消息 |
| message_echoes[] | 出站(商家 → 用户) | 商家通过 WA Business App 发送的消息 |
以下 Webhook 示例描述了messages[]和message_echoes[] 共存情况 。
{
"field": "history",
"value": {
"business_phone": "15557522905",
"history": [
{
"metadata": {
"phase": 0,
"chunk_order": 1,
"progress": 55
},
"threads": [
{
"id": "16505551234",
"messages": [
{
"from": "xxx",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.HBgLMTY0NjcwNDM1OTUVAgARGBIyNDlBOEI5QUQ4NDc0N0FCNjMA",
"timestamp": "1739230955",
"type": "text",
"text": {
"body": "Here's the info you requested!"
},
"history_context": {
"status": "READ"
}
},
{
"from": "xxx",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.QyNUEHBgLMTY0NjcwNDM1OTUVAgARGBI1Rj3NEYxMzAzMzQ5MkEA",
"timestamp": "1739230970",
"type": "media_placeholder",
"history_context": {
"status": "PLAYED"
}
},
{
"from": "xxx",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.N0FCNjMAHBgLMTY0NjcwNDM1OTUVAgARGBIyNDlBOEI5QUQ4NDc0",
"timestamp": "1739230970",
"type": "text",
"text": {
"body": "Thanks!"
},
"history_context": {
"status": "READ"
}
}
],
"message_echoes": [
{
"from": "xxx",
"to": "xxx",
"id": "wamid.HBgNODYxODk1NTQxMDc4NBUCABEYIEE1NzE3NTA2QTc1NTlFMTBCQUFDNDU3NThFRUU3QzQ5AA==",
"timestamp": "1775134736",
"type": "text",
"text": {
"body": "Here's the info you requested!"
}
}
]
},
{
"id": "12125557890",
"messages": [
{
"from": "xxx",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.BIyNDlBOEI5N0FCNjMAHBgLMTY0NjcwNDM1OTUVAgARGQUQ4NDc0",
"timestamp": "1739230970",
"type": "text",
"text": {
"body": "Thanks for your order! As a thank you, use code THANKS30 to get 30% of your next order."
},
"history_context": {
"status": "DELIVERED"
}
}
]
}
]
}
],
"messaging_product": "whatsapp",
"metadata": {
"display_phone_number": "xxx",
"phone_number_id": "xxx"
},
"wabaId": "xxx"
}
}以下 Webhook 示例描述了媒体消息的内容(用户发送给商家)。
{
"field": "history",
"value": {
"business_phone": "xxx",
"messages": [
{
"from": "xxx",
"from_user_id": "US.13491208655302741918",
"from_parent_user_id": "US.ENT.506847293015824",
"id": "wamid.QyNUEHBgLMTY0NjcwNDM1OTUVAgARGBI1Rj3NEYxMzAzMzQ5MkEA",
"image": {
"caption": "Black Prince echeveria",
"id": "24230790383178626",
"mime_type": "image/jpeg",
"sha256": "3f9d94d399fa61c191bc1d4ca71375a035cd9b9f5b1128e1f0963a415c16b0cc"
},
"timestamp": "1738796547",
"type": "image"
}
],
"messaging_product": "whatsapp",
"metadata": {
"display_phone_number": "xxx",
"phone_number_id": "xxx"
},
"wabaId": "xxx"
}
}以下 Webhook 示例描述了媒体消息的内容(商家发送给用户)。
{
"field": "history",
"value": {
"business_phone": "xxx",
"message_echoes": [
{
"from": "xxx",
"to": "xxx",
"id": "wamid.HBgNODYxODk1NTQxMDc4NBUCABEYIEE1NzE3NTA2QTc1NTlFMTBCQUFDNDU3NThFRUU3QzQ5AA==",
"timestamp": "1775134736",
"type": "image",
"image": {
"mime_type": "image/jpeg",
"sha256": "KGwn+TefxWcXlTzpvwAFZSKs0SBnUVabAhSw5H9Z4ao=",
"id": "1432671975257295"
}
}
],
"messaging_product": "whatsapp",
"metadata": {
"display_phone_number": "xxx",
"phone_number_id": "xxx"
},
"wabaId": "xxx"
}
}{
"field": "history",
"value": {
"business_phone": "xxx",
"history": [
{
"errors": [
{
"code": 2593109,
"title": "History sync is turned off by the business from the WhatsApp Business App",
"message": "History sync is turned off by the business from the WhatsApp Business App",
"error_data": {
"details": "History sharing is turned off by the business."
}
}
]
}
],
"messaging_product": "whatsapp",
"metadata": {
"display_phone_number": "xxx",
"phone_number_id": "xxx"
},
"wabaId": "xxx"
}
}描述业务客户通过 WhatsApp Business 应用或支持的配套设备向 WhatsApp 用户发送的消息。
- 业务客户使用 WhatsApp Business 应用或支持的配套设备向 WhatsApp 用户发送消息。
| 参数名 | 类型 | 说明 |
|---|---|---|
| field | String | 事件固定值:smb_message_echoes
|
| value | Object | 事件主体 |
| business_phone | String | 业务客户公司电话号码 |
| messaging_product | String | 消息产品类型,固定值 whatsapp
|
| metadata | Metadata Object | 号码元信息 |
| message_echoes | array[Message Echo Object] | 商家设备侧消息镜像列表 |
| contacts | array[Contact Object] | 联系人数据 |
| wabaId | String | 业务客户 WABA ID |
- Metadata Object参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| display_phone_number | String | 展示的商家号码 |
| phone_number_id | String | 业务电话号码 ID |
- Message Echo Object参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| from | String | 商家发送方号码 |
| to | String | 接收方号码;匿名化场景可能缺失 |
| to_user_id | String | 用户 BSUID |
| to_parent_user_id | String | 用户父 BSUID |
| id | String | WhatsApp 消息 ID |
| timestamp | String | Unix 时间戳 |
| type | String | 消息类型,如 text、interactive、image , revoke,edit 等 |
| text/image/interactive | Object | 与 type 对应的消息体 |
- Contact object参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| profile | Object | 配置文件对象 |
| wa_id | String | 接收方号码;匿名化场景可能缺失 |
| user_id | String | 用户 BSUID |
| parent_user_id | String | 用户父 BSUID |
- profile object参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| name | String | 值将设为 WhatsApp 用户的显示名。 |
| username | String | 如果用户已启用匿名化功能,将设置为 WhatsApp 用户的匿名账户。 |
{
"field": "smb_message_echoes",
"value": {
"business_phone": "xxx",
"message_echoes": [
{
"from": "xxx",
"to": "8613xxx446",
"to_user_id": "uUS.13491208655302741918",
"to_parent_user_id": "US.11815799212886844830",
"id": "wamid.HBgNODYxMzMyMDIzNzQ0NhUCABEYFDNBQ0Q5Qjg3OUZBQkZERTQ4NDIxAA==",
"timestamp": "1756977414",
"text": {
"body": "Testing test"
},
"type": "text"
}
],
"contacts": [
{
"profile": {
"name": "Jay",
"username": "@realsheenanelson"
},
"wa_id": "852xxxx705",
"user_id": "uUS.13491208655302741918",
"parent_user_id": "US.11815799212886844830"
}
],
"messaging_product": "whatsapp",
"metadata": {
"display_phone_number": "xxx",
"phone_number_id": "xxx"
},
"wabaId": "xxx"
}
}{
"field": "smb_message_echoes",
"value": {
"business_phone": "xxx",
"contacts": [
{
"user_id": "CN.1163458429160977",
"wa_id": "xxx"
}
],
"message_echoes": [
{
"from": "xxx",
"to": "xxx",
"id": "wamid.HBgNODYxNTgwNjA0NjI1NBUCABEYFDJBMTM5ODk5MzhDMTA4NzNCMDlBAA==",
"timestamp": "1776306632",
"type": "revoke",
"revoke": {
"original_message_id": "wamid.HBgNODYxNTgwNjA0NjI1NBUCABEYFDJBQUMyRERCQzcxNDg5QzYzQzhGAA=="
}
}
],
"messaging_product": "whatsapp",
"metadata": {
"display_phone_number": "xxx",
"phone_number_id": "xxx"
},
"wabaId": "xxx"
}
}{
"field": "smb_message_echoes",
"value": {
"business_phone": "xxx",
"contacts": [
{
"user_id": "CN.1163458429160977",
"wa_id": "xxx"
}
],
"message_echoes": [
{
"from": "xxx",
"to": "xxx",
"id": "wamid.HBgNODYxNTgwNjA0NjI1NBUCABEYFDJBQjMyN0JBNTVCRTI5QUU1NURBAA==",
"timestamp": "1776307126",
"type": "edit",
"edit": {
"original_message_id": "wamid.HBgNODYxNTgwNjA0NjI1NBUCABEYFDJBODQzOEREMjI5MDk1RjFGRThFAA==",
"message": {
"type": "text",
"text": {
"body": "Happy beginning"
}
}
}
}
],
"messaging_product": "whatsapp",
"metadata": {
"display_phone_number": "xxx",
"phone_number_id": "xxx"
},
"wabaId": "xxx"
}
}{
"field": "smb_message_echoes",
"value": {
"business_phone": "xxx",
"contacts": [
{
"user_id": "CN.1163458429160977",
"wa_id": "xxx"
}
],
"message_echoes": [
{
"from": "xxx",
"to": "xxx",
"id": "wamid.HBgNODYxNTgwNjA0NjI1NBUCABEYFDJBODQzOEREMjI5MDk1RjFGRThFAA==",
"timestamp": "1776307114",
"text": {
"body": "Happy"
},
"type": "text"
}
],
"messaging_product": "whatsapp",
"metadata": {
"display_phone_number": "xxx",
"phone_number_id": "xxx"
},
"wabaId": "xxx"
}
}{
"app_id": "6761",
"business_phone": "xxx",
"channel": 2,
"merchant_phone": "xxx",
"messaging_product": "whatsapp",
"metadata": {
"display_phone_number": "xxx",
"phone_number_id": "xxx"
},
"statuses": [
{
"id": "wamid.HBgNODYxMzMyMDIzNzQ0NhUCABEYFDNBQ0Q5Qjg3OUZBQkZERTQ4NDIxAA==",
"meta_message_id": "wamid.HBgNODYxMzMyMDIzNzQ0NhUCABEYFDNBQ0Q5Qjg3OUZBQkZERTQ4NDIxAA==",
"recipient_id": "8613xxx446",
"recipient_user_id": "US.13491208655302741918",
"parent_recipient_user_id": "US.ENT.506847293015824",
"status": "delivered",
"timestamp": "1756977415"
}
],
"wabaId": "xxx"
}{
"app_id": "6761",
"business_phone": "xxx",
"channel": 2,
"merchant_phone": "xxx",
"messaging_product": "whatsapp",
"metadata": {
"display_phone_number": "xxx",
"phone_number_id": "xxx"
},
"statuses": [
{
"id": "wamid.HBgNODYxMzMyMDIzNzQ0NhUCABEYFDNBQ0Q5Qjg3OUZBQkZERTQ4NDIxAA==",
"meta_message_id": "wamid.HBgNODYxMzMyMDIzNzQ0NhUCABEYFDNBQ0Q5Qjg3OUZBQkZERTQ4NDIxAA==",
"recipient_id": "861xxx446",
"recipient_user_id": "US.13491208655302741918",
"parent_recipient_user_id": "US.ENT.506847293015824",
"status": "read",
"timestamp": "1756978757"
}
],
"wabaId": "xxx"
}如果在历史同步过程中遇到错误码 131051,这是预期行为,表示历史同步 payload 中存在不支持的消息类型。
建议:
- 对该错误进行容错处理(记录日志并跳过),而不是作为失败处理。
- 基于 wamid 去重:在所有 webhook payload 中使用 wamid 作为唯一标识。
- 不要依赖 webhook 顺序:使用时间戳排序。
- 媒体匹配:通过 wamid 关联媒体与消息。
- 联系人幂等处理:使用手机号去重。
- 处理 131051 错误:记录并跳过不支持的消息类型。
答案:可以同时出现。
两者的区别基于消息方向(direction),而不是是否为多媒体内容。
定义:
-
messages[]:入站消息(消费者 → 商家) -
message_echoes[]:出站消息(商家 → 消费者,通过 WhatsApp Business App 发送)
关键点:
- 无论是多媒体还是非多媒体,任意 history webhook payload 中都可能同时包含这两个字段。
- 如果会话中既有入站消息也有出站消息,同一个 history chunk 中可能同时包含
messages[]和message_echoes[]。 - 多媒体消息在这两个字段中都会以
media_placeholder的形式出现,真实媒体内容会通过独立的 media webhook 发送。
建议:
- 在解析 history webhook 时,同时处理
messages[]和message_echoes[]。 - 通过字段名称判断消息方向。
- 使用
wamid将media_placeholder与后续媒体 webhook 进行关联。
没有保证的推送顺序。
关键点:
-
smb_message_echoes、history、smb_app_state_sync三类 webhook 是独立处理和投递的。 -
不同 webhook 类型之间的到达顺序是非确定性的。
-
在 history webhook 内部,可以通过以下字段还原顺序:
-
phase(阶段) -
chunk_order(分片顺序)
-
建议:
- 使用
timestamp和wamid进行全局时间排序。 - 在 history 内部使用
phase+chunk_order重建顺序。
简介
短信
语音
- 上传语音录音文件
- 上传语音录音文件_v1
- 已上传录音文件查询
- 发送语音群呼
- 发送语音通知
- 发送语音验证码
- 发送语音群呼_v1
- 发送语音通知_v1
- 发送语音验证码_v1
- 语音验证码回填上报
- 语音回执回调
- 语音记录查询
- 上传语音录音文件-旧版本已废弃
- 发送语音群呼‐旧版已废弃
- 发送语音通知‐旧版已废弃
- 发送语音验证码‐旧版已废弃
- 语音回执回调‐旧版已废弃
云呼叫中心(NXLink)
- Web SDK
- Iframe集成
- 手动拨号通话记录查询
- 通过orderId查询
- 手动拨号记录回调
- 坐席信息查询
- 坐席状态查询
- 坐席状态信息查询
- 坐席组查询
- 坐席可用主叫查询
- 坐席组成员查询
- 坐席组更新成员
- 坐席效率统计
- 创建AICC外呼任务
- Webhook-手动外呼
云呼叫中心(AI自动外呼)
- Callbot API概述
- Callbot API鉴权
- Callbot 接口探活
- 创建自动拨号任务
- 批量添加拨打名单
- 创建自动拨号任务并添加拨打名单
- 任务控制(启动/暂停)
- 更新任务
- 获取通话列表
- 获取任务列表
- 获取拨打订单列表
- 停止订单拨打
- 查询订单维度拨打详情
- 通话维度回调
- 订单维度拨打回调
- 任务状态回调
- 批次-导出最新批次数据
- 批次-导入最新批次数据
Flash Call
短链
邮件验证码
DID号码
- DID号码进行短信下行V2
- DID短信结果回调(加签)
- DID短信结果回调(无加签)
- DID号码短信记录查询(新接口,未启用)
- DID号码通话记录查询
- DID呼出并转接到Amazon坐席
- DID呼出前与Connect号码绑定
通用
号码检测
- 发送消息
- 发送otp消息
- webhook
- 标记入站消息已读
- 上传媒体文件
- 获取媒体文件
- 删除媒体文件
- 查询号码信息
- 查询消息模板
- 创建消息模板
- 异步创建消息模板
- 编辑消息模板
- 删除消息模板
- 上传模板示例文件
- 嵌入式页面登录
- 创建客户应用
- 客户应用的号码列表
- 获取验证码
- 核验验证码
- flows-创建流
- flows-更新流
- flows-根据流ID查询流信息
- flows-根据whatsapp号码查询流列表
- flows-根据流ID查询流预览地址
- flows-查询流JSON
- flows-发布流
- flows-删除流草稿
- flows-废弃已发布的流
- flows-更新流JSON
- flows-上传业务公钥
- ads-根据公共主页ID查询绑定的数据集列表
- ads-根据数据集ID上报CAPI广告数据
- 封锁用户
- 业务主页
- 查询消息记录
- 查询calling配置
- 查询calling通话记录
- 禁用calling配置
- 启用calling配置
- 二维码管理
Viber
Zalo ZNS
Super Message API
隐私号(旧)
PNS
坐席(旧版)
- NXphone PC 使用说明
- NXphone Android 使用说明
- NXphone Android SDK 接入文档
- 呼叫挂断原因解释
- 话单CDR查询接口
- 话单CDR回调接口说明(V1.0)
- 坐席API调用接口说明(V1.0)
- 根据orderid查询话单CDR接口
- 坐席系统sip链接调用方式(推荐)
- 号码脱敏处理
- 修改话机密码接口
- 查询审批单
- 查询话机
- WebRTC SDK使用说明
NXLINK(HKG)
- 发送WhatsApp消息
- webhook
- 发送Viber消息
- webhook-viber
- 发送Line消息
- webhook-Line
- 批量创建客户
- 批量创建客户sea
- 查询客户字段接口
- 查询、创建模板相关接口
- 查询对话分析相关接口
- 查询通知分析相关接口
- 查询聊天记录接口
- 查询客户列表
NXLINK(IDN)
- 发送WhatsApp消息
- webhook
- 发送Viber消息
- webhook-viber
- 发送Line消息
- webhook-Line
- 批量创建客户
- 批量创建客户sea
- 查询客户字段接口
- 查询、创建模板相关接口
- 查询对话分析相关接口
- 查询通知分析相关接口
- 查询聊天记录接口
- 查询客户列表
NXLINK(CHL)
- 发送WhatsApp消息
- webhook
- 发送Viber消息
- webhook-viber
- 发送Line消息
- webhook-Line
- 批量创建客户
- 批量创建客户sea
- 查询客户字段接口
- 查询、创建模板相关接口
- 查询对话分析相关接口
- 查询通知分析相关接口
- 查询聊天记录接口
- 查询客户列表
AI Agent
RCS