WhatsApp API(旧版)
# WhatsApp API
# 接口声明
在调用接口时必须在 https 请求的 header 中携带 "token" 参数。
Token 是智齿客服接口开放平台全局唯一的接口调用凭据。 开发者在调用各业务接口时都需使用 Token,开发者需要进行妥善保存。 Token 的存储至少要保留 32 个字符空间。Token 的有效期目前为 24 个小时,需定时刷新,或根据接口返回的 Token 失效提示,进行重新获取。请求 Token 接口,无论 Token 是否存在,都会返回新的 Token,并重置 Token 的过期时间(目前 24 小时)。
Token 使用方式说明: 1、开发者需要统一获取和管理 Token,在调用智齿客服各个业务开放接口时都应该使用同一个的 Token,不应该每个业务都刷新获取新的 Token,否则容易导致 Token 失效,影响接口的正常调用; 2、目前 Token 的有效期通过返回的 expire_in 来传达,目前是 86,400 秒之内的值。开发者需要根据这个有效时间提前去刷新新 Token。 3、开发者需要根据接口返回的 Token 失效提示,进行重新获取 Token。
# 接口调用
# ● 获取访问 Token 编码
接口说明:
获取 API 开放接口 Token,此 Token 仅适用于智齿开放平台 5.0 版本全部 API 接口 。API 接口中的参数 appid 、 app_key 请联系智齿售后人员获取。
请求方式:
GET
请求地址:
https://sg.sobot.com/api/get_token
请求参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
appid | String | 是 | 接口凭证 Id,第三方用户接口调用唯一凭证 id |
create_time | String | 是 | 10位数时间戳 |
sign | String | 是 | 签名 md5(appid+create_time+app_key) |
返回参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
ret_code | String | 是 | 返回编码 |
ret_msg | String | 是 | 返回信息 |
item | Object | 否 | 返回对象 |
item 对象:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
token | String | 是 | token 编码 |
expires_in | String | 是 | 凭证有效时间,单位:秒 |
时间戳转换参考工具:
http://tool.chinaz.com/Tools/unixtime.aspx
sign 签名生成示例:
例如,appid = "1"; create_time="1569397773"; app_key="2"
sign = Md5("115693977732") 为 258eec3118705112b2c53dc8043d4d34。
请求示例:
curl https://sg.sobot.com/api/get_token?appid=1&create_time=1569397773&sign=258eec3118705112b2c53dc8043d4d34
返回示例:
{
"item": {
"token": "4ac37cb2e9c740dba4b75a34d5358802",
"expires_in": "86400"
},
"ret_code": "000000",
"ret_msg": "操作成功"
}
2
3
4
5
6
7
8
# ● 通过手机号获取手机号编码
请求方式:
GET
请求地址:
https://sg.sobot.com/chat-whatsapp/whatsapp/getPhoneNumberId
请求参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
phone | String | 是 | 在手机号前拼接当前手机号所在地区,形如:86184xxxx3511 |
curl https://sg.sobot.com/chat-whatsapp/whatsapp/getPhoneNumberId?phone=86184xxxx3511
-H 'token: 4ac37cb2e9c740dba4b75a34d5358802'
2
返回示例:
{
"item": {
"phone": "86184xxxx3511",
"phoneNumberId": "1234567890",
"wabaId": "1234567890"
},
"items": [],
"retCode": "000000",
"retMsg": "操作成功"
}
2
3
4
5
6
7
8
9
10
返回参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
retCode | String | 是 | 返回编码 |
retMsg | String | 是 | 返回信息 |
items | Object | 否 | 返回对象 |
items 对象:
参数 | 类型 | 描述 |
---|---|---|
phone | String | 手机号 |
phoneNumberId | String | 手机号对应的编码 |
wabaId | String | WhatsApp商业账户唯一标识 |
# 出站消息
# ● 发送文本类型消息
请求方式:
POST
请求地址:
https://sg.sobot.com/chat-whatsapp/whatsapp/forword
请求参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
from | String | 是 | 发送方 |
to | String | 是 | 接收方 |
type | String | 是 | text (固定值) |
content | Object | 是 | 消息内容 |
content参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
text | String | 是 | 内容 |
请求示例:
curl https://sg.sobot.com/chat-whatsapp/whatsapp/forword
-X POST
-H 'content-type:application/json'
-H 'token: 4ac37cb2e9c740dba4b75a34d5358802'
-d ' {
"content": {
"text": "this is text"
},
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"type": "text"
} '
2
3
4
5
6
7
8
9
10
11
12
返回示例:
{
"items": [],
"retCode": "000000",
"retMsg": "操作成功"
}
2
3
4
5
# ● 发送图片类型消息
请求方式:
POST
请求地址:
https://sg.sobot.com/chat-whatsapp/whatsapp/forword
请求参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
from | String | 是 | 发送方 |
to | String | 是 | 接收方 |
type | String | 是 | image (固定值) |
content | Object | 是 | 消息内容 |
content参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
mediaUrl | String | 是 | 资源链接 |
请求示例:
curl https://sg.sobot.com/chat-whatsapp/whatsapp/forword
-X POST
-H 'content-type:application/json'
-H 'token: 4ac37cb2e9c740dba4b75a34d5358802'
-d ' {
"content": {
"mediaUrl": "https://img.sobot.com/console/common/face/robot.png"
},
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"type": "image"
} '
2
3
4
5
6
7
8
9
10
11
12
返回示例:
{
"items": [],
"retCode": "000000",
"retMsg": "操作成功"
}
2
3
4
5
# ● 发送文件类型消息
请求方式:
POST
请求地址:
https://sg.sobot.com/chat-whatsapp/whatsapp/forword
请求参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
from | String | 是 | 发送方 |
to | String | 是 | 接收方 |
type | String | 是 | document (固定值) |
content | Object | 是 | 消息内容 |
content参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
mediaUrl | String | 是 | 资源链接 |
filename | String | 否 | 文件名称 |
请求示例:
curl https://sg.sobot.com/chat-whatsapp/whatsapp/forword
-X POST
-H 'content-type:application/json'
-H 'token: 4ac37cb2e9c740dba4b75a34d5358802'
-d ' {
"content": {
"mediaUrl": "https://img.sobot.com/console/common/face/robot.png",
"filename": "example.txt"
},
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"type": "document"
} '
2
3
4
5
6
7
8
9
10
11
12
13
返回示例:
{
"items": [],
"retCode": "000000",
"retMsg": "操作成功"
}
2
3
4
5
# ● 发送视频类型消息
请求方式:
POST
请求地址:
https://sg.sobot.com/chat-whatsapp/whatsapp/forword
请求参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
from | String | 是 | 发送方 |
to | String | 是 | 接收方 |
type | String | 是 | video (固定值) |
content | Object | 是 | 消息内容 |
content参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
mediaUrl | String | 是 | 资源链接 |
请求示例:
curl https://sg.sobot.com/chat-whatsapp/whatsapp/forword
-X POST
-H 'content-type:application/json'
-H 'token: 4ac37cb2e9c740dba4b75a34d5358802'
-d ' {
"content": {
"mediaUrl": "https://img.sobot.com/console/common/face/robot.png"
},
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"type": "video"
} '
2
3
4
5
6
7
8
9
10
11
12
返回示例:
{
"items": [],
"retCode": "000000",
"retMsg": "操作成功"
}
2
3
4
5
# ● 发送音频类型消息
请求方式:
POST
请求地址:
https://sg.sobot.com/chat-whatsapp/whatsapp/forword
请求参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
from | String | 是 | 发送方 |
to | String | 是 | 接收方 |
type | String | 是 | audio(固定值) |
content | Object | 是 | 消息内容 |
content参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
mediaUrl | String | 是 | 资源链接 |
请求示例:
curl https://sg.sobot.com/chat-whatsapp/whatsapp/forword
-X POST
-H 'content-type:application/json'
-H 'token: 4ac37cb2e9c740dba4b75a34d5358802'
-d ' {
"content": {
"mediaUrl": "https://img.sobot.com/console/common/face/robot.png"
},
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"type": "audio"
} '
2
3
4
5
6
7
8
9
10
11
12
返回示例:
{
"items": [],
"retCode": "000000",
"retMsg": "操作成功"
}
2
3
4
5
# ● 发送贴图类型消息
请求方式:
POST
请求地址:
https://sg.sobot.com/chat-whatsapp/whatsapp/forword
请求参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
from | String | 是 | 发送方 |
to | String | 是 | 接收方 |
type | String | 是 | sticker (固定值) |
content | Object | 是 | 消息内容 |
content参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
mediaUrl | String | 是 | 资源链接 |
请求示例:
curl https://sg.sobot.com/chat-whatsapp/whatsapp/forword
-X POST
-H 'content-type:application/json'
-H 'token: 4ac37cb2e9c740dba4b75a34d5358802'
-d ' {
"content": {
"mediaUrl": "https://img.sobot.com/console/common/face/robot.png"
},
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"type": "sticker"
} '
2
3
4
5
6
7
8
9
10
11
12
返回示例:
{
"items": [],
"retCode": "000000",
"retMsg": "操作成功"
}
2
3
4
5
# ● 发送位置类型消息
请求方式:
POST
请求地址:
https://sg.sobot.com/chat-whatsapp/whatsapp/forword
请求参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
from | String | 是 | 发送方 |
to | String | 是 | 接收方 |
type | String | 是 | location (固定值) |
content | Object | 是 | 消息内容 |
content参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
latitude | String | 是 | 纬度 |
longitude | String | 是 | 经度 |
请求示例:
curl https://sg.sobot.com/chat-whatsapp/whatsapp/forword
-X POST
-H 'content-type:application/json'
-H 'token: 4ac37cb2e9c740dba4b75a34d5358802'
-d ' {
"content": {
"latitude": "LAT_NUMBER",
"longitude": "LONG_NUMBER"
},
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"type": "location"
} '
2
3
4
5
6
7
8
9
10
11
12
13
返回示例:
{
"items": [],
"retCode": "000000",
"retMsg": "操作成功"
}
2
3
4
5
# ● 发送联系人类型消息
请求方式:
POST
请求地址:
https://sg.sobot.com/chat-whatsapp/whatsapp/forword
请求参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
from | String | 是 | 发送方 |
to | String | 是 | 接收方 |
type | String | 是 | contacts (固定值) |
content | Object | 是 | 消息内容 |
content参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
contacts | List | 是 | 联系人 |
contacts参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
name | Object | 是 | 联系人姓名 |
phones | List | 否 | 联系电话号码 |
name参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
formatted_name | String | 是 | 显示的全名 |
first_name | String | 否 | 姓名 |
phones参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
phone | String | 否 | 电话号码 |
type | String | 否 | 可选CELL、MAIN、IPHONE、HOME和WORK |
请求示例:
curl https://sg.sobot.com/chat-whatsapp/whatsapp/forword
-X POST
-H 'content-type:application/json'
-H 'token: 4ac37cb2e9c740dba4b75a34d5358802'
-d ' {
"content": {
"contacts": [{
"name": {
"formatted_name": "NAME",
"first_name": "NAME"
},
"phones": [{
"phone": "PHONE_NUMBER",
"type": "CELL"
}]
}]
},
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"type": "contacts"
}'
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
返回示例:
{
"items": [],
"retCode": "000000",
"retMsg": "操作成功"
}
2
3
4
5
# ● 发送按钮类型消息
请求方式:
POST
请求地址:
https://sg.sobot.com/chat-whatsapp/whatsapp/forword
请求参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
from | String | 是 | 发送方 |
to | String | 是 | 接收方 |
type | String | 是 | button (固定值) |
content | Object | 是 | 消息内容 |
content参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
button | Object | 是 | 按钮内容 |
button参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
payload | String | 是 | 有效负载 |
text | String | 是 | 内容 |
请求示例:
curl https://sg.sobot.com/chat-whatsapp/whatsapp/forword
-X POST
-H 'content-type:application/json'
-H 'token: 4ac37cb2e9c740dba4b75a34d5358802'
-d ' {
"content": {
"button": {
"payload": "No-Button-Payload",
"text": "No"
}
},
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"type": "button"
}'
2
3
4
5
6
7
8
9
10
11
12
13
14
15
返回示例:
{
"items": [],
"retCode": "000000",
"retMsg": "操作成功"
}
2
3
4
5
# ● 发送订单类型消息
请求方式:
POST
请求地址:
https://sg.sobot.com/chat-whatsapp/whatsapp/forword
请求参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
from | String | 是 | 发送方 |
to | String | 是 | 接收方 |
type | String | 是 | order (固定值) |
content | Object | 是 | 消息内容 |
content参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
order | Object | 是 | 订单内容 |
order参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
catalog_id | String | 是 | 与您的 WhatsApp 企业帐户相关联的 Facebook 目录的唯一标识符 |
text | String | 是 | 订单内容 |
product_items | List | 否 | 多产品列表是必传 |
product_items参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
quantity | String | 是 | 数量 |
product_ret ailer_id | String | 是 | 目录中产品的唯一标识符 |
item_price | String | 是 | 价格 |
currency | String | 是 | 币种 |
请求示例:
curl https://sg.sobot.com/chat-whatsapp/whatsapp/forword
-X POST
-H 'content-type:application/json'
-H 'token: 4ac37cb2e9c740dba4b75a34d5358802'
-d '{
"content": {
"order": {
"catalog_id": "the-catalog_id",
"text": "text-message-sent-along-with-the-order",
"product_items": [{
"quantity": "number-of-item",
"product_retailer_id": "the-product-SKU-identifier",
"item_price": "unitary-price-of-item",
"currency": "price-currency"
}]
}
},
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"type": "order"
}'
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
返回示例:
{
"items": [],
"retCode": "000000",
"retMsg": "操作成功"
}
2
3
4
5
# ● 发送互动类型消息
请求方式:
POST
请求地址:
https://sg.sobot.com/chat-whatsapp/whatsapp/forword
请求参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
from | String | 是 | 发送方 |
to | String | 是 | 接收方 |
type | String | 是 | interactive (固定值) |
content | Object | 是 | 消息内容 |
content参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
interactive | Object | 是 | 交互消息内容 |
interactive参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
type | String | 是 | 按钮类型,支持的值: button:将其用于回复按钮 list:将其用于列表消息 product:用于单一产品消息 product_list:用于多产品消息 |
button_reply | Object | 是 | 订单内容 |
button_reply参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
id | String | 是 | 按钮id |
title | String | 是 | 按钮标题 |
请求示例:
curl https://sg.sobot.com/chat-whatsapp/whatsapp/forword
-X POST
-H 'content-type:application/json'
-H 'token: 4ac37cb2e9c740dba4b75a34d5358802'
-d '{
"content": {
"interactive": {
"type": "button_reply",
"button_reply": {
"id": "unique-button-identifier-here",
"title": "button-text"
}
}
},
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"type": "interactive"
}'
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
返回示例:
{
"items": [],
"retCode": "000000",
"retMsg": "操作成功"
}
2
3
4
5
# ● 发送模板类型消息
请求方式:
POST
请求地址:
https://sg.sobot.com/chat-whatsapp/whatsapp/forword
请求参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
from | String | 是 | 发送方 |
to | String | 是 | 接收方 |
type | String | 是 | template (固定值) |
content | Object | 是 | 消息内容 |
content参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
template | Object | 是 | 模板内容 |
template参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
name | String | 是 | 模板名称 |
language | Object | 是 | 模板语言 |
components | List | 是 | 模板创建变量 |
language参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
code | String | 是 | 模板语言编码 |
components参数:
注:
如果在whatsApp后台没有创建变量, 则components为空数组
如果存在变量,变量内容不能为空内容或者空字符串
请求示例:头部变量为文本
curl https://sg.sobot.com/chat-whatsapp/whatsapp/forword
-X POST
-H 'content-type:application/json'
-H 'token: 4ac37cb2e9c740dba4b75a34d5358802'
-d '{
"content": {
"template": {
"components": [{
"type": "header",
"parameters": [{
"text": "CONTENT",
"type": "text"
}]
}],
"language": {
"code": "TEMPLATE_LANGUAGE_CODE"
},
"name": "TEMPLATE_NAME"
}
},
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"type": "template"
}'
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
请求示例:头部变量为素材
image = 图片 | video = 视频 | document = 文档 (可传filename参数,与link同级)
curl https://sg.sobot.com/chat-whatsapp/whatsapp/forword
-X POST
-H 'content-type:application/json'
-H 'token: 4ac37cb2e9c740dba4b75a34d5358802'
-d '{
"content": {
"template": {
"components": [{
"type": "header",
"parameters": [{
"image": {
"link": "https://img.sobot.com/console/common/face/robot.png"
},
"type": "image"
}]
}],
"language": {
"code": "TEMPLATE_LANGUAGE_CODE"
},
"name": "TEMPLATE_NAME"
}
},
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"type": "template"
}'
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
请求示例:头部变量为位置
curl https://sg.sobot.com/chat-whatsapp/whatsapp/forword
-X POST
-H 'content-type:application/json'
-H 'token: 4ac37cb2e9c740dba4b75a34d5358802'
-d '{
"content": {
"template": {
"components": [{
"type": "header",
"parameters": [{
"location": {
"address": "your address",
"latitude": "-12.283171",
"name": "your location name",
"longitude": "130.501951"
},
"type": "LOCATION"
}]
}],
"language": {
"code": "TEMPLATE_LANGUAGE_CODE"
},
"name": "TEMPLATE NAME"
}
},
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"type": "template"
}'
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
请求示例:新版OTP模板消息
curl https://sg.sobot.com/chat-whatsapp/whatsapp/forword
-X POST
-H 'content-type:application/json'
-H 'token: 4ac37cb2e9c740dba4b75a34d5358802'
-d '{
"content": {
"template": {
"components": [{
"type": "body",
"parameters": [{
"type": "text",
"text": "<ONE-TIME PASSWORD>"
}]
},
{
"type": "button",
"sub_type": "url",
"index": "0",
"parameters": [{
"type": "text",
"text": "<ONE-TIME PASSWORD>"
}]
}
],
"language": {
"code": "TEMPLATE_LANGUAGE_CODE"
},
"name": "TEMPLATE NAME"
}
},
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"type": "template"
}'
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
请求示例:正文变量
curl https://sg.sobot.com/chat-whatsapp/whatsapp/forword
-X POST
-H 'content-type:application/json'
-H 'token: 4ac37cb2e9c740dba4b75a34d5358802'
-d '{
"content": {
"template": {
"components": [{
"type": "body",
"parameters": [
{
"text": "CONTENT1",
"type": "text"
},
{
"text": "CONTENT2",
"type": "text"
}
]
}],
"language": {
"code": "TEMPLATE_LANGUAGE_CODE"
},
"name": "TEMPLATE NAME"
},
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"type": "template"
}
}'
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
请求示例:按钮变量
如果当前按钮变量在模板中第一个,index=0,第二个,index=1
如果当前按钮变量有中文,需要将中文进行encode转换
curl https://sg.sobot.com/chat-whatsapp/whatsapp/forword
-X POST
-H 'content-type:application/json'
-H 'token: 4ac37cb2e9c740dba4b75a34d5358802'
-d '{
"content": {
"template": {
"components": [{
"sub_type": "URL",
"index": 0,
"type": "button",
"parameters": [
{
"payload": "BUTTON CONTENT",
"type": "payload"
}
]
}],
"language": {
"code": "TEMPLATE_LANGUAGE_CODE"
},
"name": "TEMPLATE_NAME"
}
},
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"type": "template"
}'
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
完整的请求示例:
curl https://sg.sobot.com/chat-whatsapp/whatsapp/forword
-X POST
-H 'content-type:application/json'
-H 'token: 4ac37cb2e9c740dba4b75a34d5358802'
-d '{
"content": {
"template": {
"components": [{
"type": "header",
"parameters": [
{
"document": {
"filename": "xxx.txt",
"link": "https://example/xxx.txt"
},
"type": "document"
}
]
},
{
"type": "body",
"parameters": [
{
"text": "CONTENT",
"type": "text"
}
]
},
{
"sub_type": "URL",
"index": 0,
"type": "button",
"parameters": [
{
"payload": "BUTTON CONTENT",
"type": "payload"
}
]
}],
"language": {
"code": "TEMPLATE_LANGUAGE_CODE"
},
"name": "TEMPLATE_NAME"
}
},
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"type": "template"
}'
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
返回示例:
{
"items": [],
"retCode": "000000",
"retMsg": "操作成功"
}
2
3
4
5
# ● WhatsApp 群发模板消息API
接口说明:批量发送模板消息API
请求方式:
post
请求地址:
https://sg.sobot.com/chat-whatsapp/whatsapp/batchSendTmpMsg
请求参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
templateId | String | 是 | 模板id |
sender | String | 是 | 对应后台的WhatsApp号码 |
senderList | Array | 是 | 消息内容集合 |
senderList对象:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
to | String | 是 | 消息接收方 |
headerUrl | String | 否 | 页眉参数url (图片,视频,文件) |
headerVariable | Array | 否 | 页眉变量集合(如果是位置模板,参数依次放进这个集合中) |
bodyVariable | Array | 否 | 正文变量集合 |
buttonVariable | Array | 否 | 按钮变量集合 |
businessId | String | 否 | 业务id,消息回传会带有此参数 |
请求示例:
curl https://sg.sobot.com/chat-whatsapp/whatsapp/batchSendTmpMsg
-H 'token: 4ac37cb2e9c740dba4b75a34d5358802'
2
发送页眉是图片模板消息
{
"templateId": "1761306057557050",
"sender": "8613383587202",
"senderList": [
{
"to": "8612345678900",
"headerUrl": "图片链接1"
},
{
"to": "8612345678901",
"headerUrl": "图片链接2"
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
发送页眉是mp4模板消息
{
"templateId": "1761306057557050",
"sender": "8613383587202",
"senderList": [
{
"to": "8612345678901",
"headerUrl": "mp4链接1"
},
{
"to": "8612345678902",
"headerUrl": "mp4链接2"
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
发送页眉是文件模板消息
{
"templateId": "1761306057557050",
"sender": "8613383587202",
"senderList": [
{
"to": "8612345678900",
"headerUrl": "文件链接"
},
{
"to": "8612345678901",
"headerUrl": "文件链接2"
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
发送body变量模板消息
{
"templateId":"983624169307812",
"sender":"8618435117413",
"senderList":[
{
"to": "8612345678900",
"headerUrl":"页眉链接",
"bodyVariable":["变量1","变量2"]
},
{
"to": "8612345678901",
"headerUrl":"页眉链接1",
"bodyVariable":["变量1","变量2"]
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
发送位置模板消息(headerVariable 依次添加,经度,纬度,地点,位置)
{
"templateId":"6348283855267982",
"sender":"8618435117413",
"senderList":[
{
"to": "8612345678900",
"headerVariable":["116.397128","116.397128","北京","智齿科技"]
},{
"to": "8612345678901",
"headerVariable":["116.397128","116.397128","北京","智齿科技"]
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
发送验证码模板消息
{
"templateId": "299637692718546",
"sender": "8613383587202",
"senderList": [
{
"to": "8612345678901",
"bodyVariable": ["参数1"],
"buttonVariable":["按钮参数--如果是链接放入链接地址"]
},{
"to": "8612345678902",
"bodyVariable": ["参数2"],
"buttonVariable":["按钮参数--如果是链接放入链接地址"]
}]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
返回示例:
{
"item": [
{
"messaging_product": "whatsapp",
"contacts": [{
"input": "8618210335234",
"wa_id": "8618210335234"
}],
"messages": [{
"id": "wamid.HBgNODYxODIxMDMzNTIzNBUCABEYEjk3QTI0Q0U1RjZENUQ0MzlGRgA="
}]
}
],
"businessId":"11111111",
"templateId":"11111111",
"ret_code": "000000",
"ret_msg": "操作成功"
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
返回参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
ret_code | String | 是 | 返回编码 |
ret_msg | String | 是 | 返回信息 |
item | Array | 否 | 返回对象 |
item 对象:
参数 | 类型 | 描述 |
---|---|---|
obj | Object | whatsApp 返回参数 |
# 入站消息
请求地址:
webhook通知消息返回示例, 在智齿管理中心后台配置
# ● 文本类型消息
返回示例:
{
"content": {
"text": "this is text"
},
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"type": "text",
"name": "NAME"
}
2
3
4
5
6
7
8
9
# ● 图片类型消息
返回示例:
{
"content": {
"mediaUrl": "https://img.sobot.com/console/common/face/robot.png"
},
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"type": "image",
"name": "NAME"
}
2
3
4
5
6
7
8
9
# ● 文件类型消息
返回示例:
{
"content": {
"mediaUrl": "https://img.sobot.com/console/common/face/robot.png",
"filename": "example.txt"
},
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"type": "document",
"name": "NAME"
}
2
3
4
5
6
7
8
9
10
# ● 视频类型消息
返回示例:
{
"content": {
"mediaUrl": "https://img.sobot.com/console/common/face/robot.png"
},
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"type": "video",
"name": "NAME"
}
2
3
4
5
6
7
8
9
# ● 音频类型消息
返回示例:
{
"content": {
"mediaUrl": "https://img.sobot.com/console/common/face/robot.png"
},
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"type": "audio",
"name": "NAME"
}
2
3
4
5
6
7
8
9
# ● 贴图类型消息
返回示例:
{
"content": {
"mediaUrl": "https://img.sobot.com/console/common/face/robot.png"
},
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"type": "sticker",
"name": "NAME"
}
2
3
4
5
6
7
8
9
# ● 位置类型消息
返回示例:
{
"content": {
"latitude": "LAT_NUMBER",
"longitude": "LONG_NUMBER"
},
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"type": "location",
"name": "NAME"
}
2
3
4
5
6
7
8
9
10
# ● 联系人类型消息
返回示例:
{
"content": {
"contacts": [
{
"name": {
"formatted_name": "NAME",
"first_name": "NAME"
},
"phones": [
{
"phone": "PHONE_NUMBER",
"wa_id": "8617343038250",
"type": "CELL"
}
]
}
]
},
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"type": "contacts",
"name": "NAME"
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# ● 按钮类型消息
返回示例:
{
"content": {
"button": {
"payload": "No-Button-Payload",
"text": "No"
}
},
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"type": "button",
"name": "NAME"
}
2
3
4
5
6
7
8
9
10
11
12
# ● 订单类型消息
返回示例:
{
"content": {
"order": {
"catalog_id": "the-catalog_id",
"text": "text-message-sent-along-with-the-order",
"product_items": [
{
"quantity": "number-of-item",
"product_retailer_id": "the-product-SKU-identifier",
"item_price": "unitary-price-of-item",
"currency": "price-currency"
}
]
}
},
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"type": "order",
"name": "NAME"
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# ● 互动类型消息
返回示例:
{
"content": {
"interactive": {
"type": "button_reply",
"button_reply": {
"id": "unique-button-identifier-here",
"title": "button-text"
}
}
},
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"type": "interactive",
"name": "NAME"
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 消息状态通知
请求地址:
webhook通知消息返回示例, 在智齿管理中心后台配置
# ● 消息状态通知
状态属性 | 状态含义 |
---|---|
sent | 已发送 |
delivered | 已送达 |
read | 已阅读 |
返回示例:
{
"from": "FROM_PHONE_NUMBER_ID",
"to": "PHONE_NUMBER",
"timestamp": "1667453467",
"type": "status",
"status": "sent",
"messageId": "wamid.HBgNEUCABEYEkNGNTZDRkNCDMUIwRUM4QTIwQgA="
}
2
3
4
5
6
7
8
# 账单费用
# ● 获取账单费用详情
请求方式:
GET
请求地址:
https://sg.sobot.com/chat-whatsapp/cost/billDetailList
请求参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
month | String | 是 | 查询月份 (yyyy-MM) |
queryType | String | 是 | 查询对话类型 (user:代表用户,business:代表企业) |
sender | String | 否 | sender号码 |
language | String | 否 | 语言类型(zh:中文,en:英文) |
请求示例:
curl https://sg.sobot.com/chat-whatsapp/cost/billDetailList?month=2022-10&queryType=user
-H 'token: 4ac37cb2e9c740dba4b75a34d5358802'
2
返回示例:
{
"items": [
{
"areaCode": "971",
"totalPrice": 0.1440,
"countryCode": "AE",
"countryName": "United Arab Emirates",
"conversation": 6
},
{
"areaCode": "880",
"totalPrice": 0.0274,
"countryCode": "BD",
"countryName": "Bangladesh",
"conversation": 1
}
],
"retCode": "000000",
"retMsg": "操作成功"
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
返回参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
retCode | String | 是 | 返回编码 |
retMsg | String | 是 | 返回信息 |
items | Object | 否 | 返回对象 |
items 对象:
参数 | 类型 | 描述 |
---|---|---|
areaCode | String | 地区代码 |
totalPrice | double | 计费金额(美元) |
countryCode | String | 地区编码 |
countryName | String | 地区名称 |
conversation | int | 对话数量 |
# 模板消息管理
# ● 获取消息模板
接口说明:检索当前wabaId下所有的模板
请求方式:
GET
请求地址:
https://sg.sobot.com/chat-whatsapp/template/templateList
请求参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
wabaId | String | 是 | WhatsApp商业账户唯一标识 |
请求示例:
curl https://sg.sobot.com/chat-whatsapp/template/templateList?wabaId=12345
-H 'token: 4ac37cb2e9c740dba4b75a34d5358802'
2
返回示例:
{
"item": {
"data": [
{
"components": [
{
"format": "DOCUMENT",
"type": "HEADER",
"example": {
"header_handle": [
"https://scontent.whatsapp.net/v/t61.29466-34/224083690_601486205046207_3953929358019518287_n.pdf?ccb=1-7&_nc_sid=57045b&_nc_ohc=ANcodTypUrsAX_c3ME8&_nc_ht=scontent.whatsapp.net&edm=AH51TzQEAAAA&oh=01_AdRen_9v352EcZ7FFjoA6bVf0fUODwqoIfRjDa1PE0Uicw&oe=63931F4C"
]
}
},
{
"text": "This is {{1}} content, and also have {{2}} params.",
"type": "BODY",
"example": {
"body_text": [
[
"rick",
"2"
]
]
}
},
{
"text": "这里是页脚",
"type": "FOOTER"
},
{
"buttons": [
{
"phone_number": "+86184xxxx7413",
"text": "call me",
"type": "PHONE_NUMBER"
},
{
"text": "访问聊天页面",
"type": "URL",
"url": "https//xxx.html?name=text&partnerid={{1}}",
"example": [
"https//xxx.html?name=text&partnerid=1234"
]
}
],
"type": "BUTTONS"
}
],
"name": "templates_test",
"language": "zh_CN",
"id": "601486201712874",
"category": "TRANSACTIONAL",
"status": "APPROVED"
}
],
"namespace": "9eb0ceda_9fc9_42ad_ad5a_5dd9d905a15a"
},
"items": [],
"retCode": "000000",
"retMsg": "操作成功"
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
返回参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
retCode | String | 是 | 返回编码 |
retMsg | String | 是 | 返回信息 |
item | Object | 否 | 返回对象 |
item 对象:
参数 | 类型 | 描述 |
---|---|---|
namespace | String | 模板命名空间 |
id | String | 模板编码 |
name | String | 模板名称 |
language | String | 模板语言 |
status | String | 模板状态 |
category | String | 模板类别 |
components | List | 模板内容 |
# ● 创建消息模板
接口说明:创建消息模板
请求方式:
POST
请求地址:
https://sg.sobot.com/chat-whatsapp/template/createTemplateInfo
请求参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
wabaId | String | 是 | WhatsApp商业账户唯一标识 |
name | String | 是 | 模板名称 |
category | String | 是 | 模板类别(选项:UTILITY, MARKETING, AUTHENTICATION) |
language | String | 是 | 模板语言编码 |
components | List | 是 | 模板内容 |
更多模板参数信息,您可以在这里查看 WhatsApp Business API (opens new window)
模板支持的语言,您可以在这里查询 支持的语言-WhatsApp Business API (opens new window)
请求示例:
curl https://sg.sobot.com/chat-whatsapp/template/createTemplateInfo
-H 'token: 4ac37cb2e9c740dba4b75a34d5358802'
-d '{
"wabaId": "123456789",
"name": "template_name",
"category": "OTP",
"language": "en_US",
"components": [
{
"type": "BODY",
"text": "hello word"
},
{
"type": "HEADER",
"format": "IMAGE",
"example": {
"header_handle": [
"https://example.media.file"
]
}
},
{
"type": "FOOTER",
"text": "your-footer-text"
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "PHONE_NUMBER",
"text": "your-phone-button-text",
"phone_number": "+1(650) 555-1111"
},
{
"type": "URL",
"text": "your-url-button-text",
"url": "https://www.xxx.com/{{1}}",
"example": [
"https://www.xxx.com/example"
]
}
]
}
]
}'
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
返回示例:
{
"item": {
"id": "431829025804988"
},
"items": [],
"retCode": "000000",
"retMsg": "操作成功"
}
2
3
4
5
6
7
8
# ● 删除消息模版
接口说明:如果此名称的消息模板有多种语言版本,则所有语言的版本均会被删除。
请求方式:
GET
请求地址:
https://sg.sobot.com/chat-whatsapp/template/deleteTemplate
请求参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
wabaId | String | 是 | WhatsApp商业账户唯一标识 |
templateName | String | 是 | 模板名称 |
请求示例:
curl https://sg.sobot.com/chat-whatsapp/template/deleteTemplate?wabaId=12345&templateName=test
-H 'token: 4ac37cb2e9c740dba4b75a34d5358802'
2
返回示例:
{
"item": {
"success": true
},
"items": [],
"retCode": "000000",
"retMsg": "操作成功"
}
2
3
4
5
6
7
8
返回参数:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
retCode | String | 是 | 返回编码 |
retMsg | String | 是 | 返回信息 |
item | Object | 否 | 返回对象 |
item 对象:
参数 | 类型 | 描述 |
---|---|---|
success | boolean | true 代表删除成功 |