客服号管理
客服号管理
唤醒好友联系人聊天对话接口
URI
/wscrm-bus-api/open/action/batchAdd
请求方式
POST、Content-Type: application/json
说明
打开的动作必须保证已登录该账号和客服号,未登录一分钟后自动失败。
同时打开相同账号和客服号的不同好友会话,依次间隔 10s 打开。
请求参数说明
| 参数名 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| tenantId | Long | 是 | 公司 id |
| data | List | 是 | 详情数据 |
data 参数说明
| 参数名 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| agentAccount | String | 是 | 坐席账号 |
| whatsId | String | 否 | 客服号(如果不填,会列出来当前客户端已登录的客服号,选择一个作为客服号) |
| friendWhatsId | String | 是 | 好友 whatsapp |
| platformType | int | 是 | 设备类型 1、pc 2、android |
| content | String | 否 | 发送内容 |
| type | int | 是 | 业务类型 1 打开好友会话窗口 |
- 请求示例
{
"tenantId": 500766,
"data": [
{
"agentAccount": "test",
"whatsId": "13633802288",
"friendWhatsId": "8613633800088",
"platformType": 1,
"content": "hello",
"type": "1"
}
]
}
- 响应参数说明
| 参数名 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| code | int | 是 | 响应码 |
| message | String | 是 | 响应信息 |
| data | String | 是 | 数据回调唯一标识(与添加顺序保持一致) |
- 响应示例
{
"code": 200,
"message": "Success",
"data": ["20c7c02bf11b494286dd165da47388c9"]
}
查询唤醒好友联系人执行详情接口
URI
/wscrm-bus-api/open/action/callbackResult
请求方式
POST、Content-Type: application/json
请求参数说明
| 参数名 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| tenantId | Long | 是 | 公司 id |
| data | List | 是 | 查询的 ids |
- 请求示例
{
"tenantId": 500766,
"data": ["ad518a4271fa43c8937612c5f60396f8"]
}
- 响应参数说明
| 参数名 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| id | String | 是 | 数据唯一标识 |
| tenantId | Long | 是 | 公司 id |
| agentAccount | String | 是 | 坐席账号 |
| whatsId | String | 是 | 客服号 |
| friendWhatsId | String | 是 | 好友 whatsapp |
| type | int | 是 | 动作类型 1 打开客户端坐席聊天窗口 |
| executeStatus | String | 是 | 执行结果 0 未执行 1 成功 2 失败 |
| executeTime | String | 是 | 执行时间(默认‘1970-01-01 08:00:01’) |
- 响应示例
{
"code": 200,
"message": "Success",
"data": [
{
"id": "ad518a4271fa43c8937612c5f60396f8",
"tenantId": 500766,
"agentAccount": "ykts02",
"whatsId": "8172727272727",
"friendWhatsId": "8261626162626",
"type": 1,
"executeStatus": 2,
"executeTime": "1970-01-01 08:00:01"
}
]
}
客服号上下线异步通知接口
注: 接口加密规则使用 header 头的方式!!!
配置 ID <WA_SYNC_ON_OR_OFF_LINE_STATUS>
WebHook
URI
/api/callback/whatsapp/onlineStatus
请求方式
POST、Content-Type: application/json
请求参数说明
| 字段 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| whatsAppList | List | 是 | 格式[{},{}],详细如下(数量 0-50 条 |
- whatsAppList 参数说明
| 字段 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| whatsId | String | 是 | whatsapp 手机号 |
| status | int | 是 | 状态 10、在线 20、掉线 30、离线 40、封号 |
| detailStatus | int | 是 | 详细状态 (具体请查看下面注释) |
| account | String | 是 | 坐席账号 |
| platformType | int | 是 | 平台类型 1、pc 2、android |
| time | String | 是 | 时间 2024-06-27 19:52:12 |
详细状态介绍: 11、PC 扫码登录 12、PC 上线 21、PC 掉线 31、PC 关闭客户号离线 32、PC 关闭客户端离线 33、PC 触发监控下线 41、封号
- 请求示例
[
{
"whatsId": "8617633819542",
"status": 1,
"detailStatus": 11,
"account":"",
"time":"2024-07-03 15:27:00",
"platformType":1
},
{
"whatsId": "8617633819542",
"status": 1,
"detailStatus": 11,
"account":"",
"time":"2024-07-03 15:27:00",
"platformType":1
}
]
}
- 响应示例
{
"code": 200,
"message": "Success",
"data": ""
}
客服号操作
批量导入客服号
- 类型
API
URI
/group-dispatch-api/whatsapp/batchInsert
请求方式
POST、Content-Type: application/json
接口说明
批量导入客服号
请求参数说明
| 字段 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| whatsAppList | List | 是 | 客服号列表 |
data 参数说明
| 参数名 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| String | 是 | ||
| avatar | String | 否 | 头像 |
| name | String | 否 | 名称 |
| publicKey | String | 是 | 账号公钥 |
| privateKey | String | 是 | 账号私钥 |
| msgPublicKey | String | 是 | 消息公钥 |
| msgPrivateKey | String | 是 | 消息私钥 |
| accountId | String | 是 | 账号 Id |
| nextKeyId | String | 否 | nextKeyId |
| registrationId | String | 否 | 注册 id |
| deviceParams | String | 否 | 设备参数 |
| whatsappType | Integer | 否 | whatsapp 账户类型 1 个人 2 商业,默认个人 |
- 请求示例:
{
"whatsAppList": [
{
"whatsApp": "861821726232",
"whatsappType": 1,
"name": "lee",
"avatar": "wwww.baiux.com/1.img",
"publicKey": "",
"privateKey": "",
"msgPublicKey": "",
"msgPrivateKey": "",
"accountId": "",
"nextKeyId": "",
"registrationId": "",
"deviceParams": ""
}
]
}
响应参数说明
参数名 类型 是否必填 备注 code int 是 状态码 message String 是 描述 data String 是 数据 响应示例
{
"data": "",
"code": 200,
"message": "success"
}
查询客服号信息
类型
API
URI
/group-dispatch-api/whatsapp/queryWhatsAppStatus
请求方式
GET、Content-Type: application/json
接口说明
查询所有的客服号信息
请求参数说明
无
响应参数说明
参数名 类型 是否必填 备注 code int 是 状态码 message String 是 描述 data List 是 数据
- data 响应参数说明
| 参数名 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| String | 是 | ||
| status | int | 是 | 状态 1、正常 2、封号 |
| onlineStatus | int | 是 | 在线状态状态 1、上线中 2、在线 3、下线中 4、离线 |
- 响应示例
{
"data": [
{
"whatsApp": "861821371272",
"status": 1,
"onlineStatus": 1
}
],
"code": 200,
"message": "success"
}
批量上线客服号
类型
API
URI
/group-dispatch-api/whatsapp/batchOnline
请求方式
POST、Content-Type: application/json
接口说明
批量上线客服号
请求参数说明
| 字段 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| whatsAppList | List | 是 | 客服号列表 |
- whatsAppList 参数说明
| 参数名 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| override | boolean | 是 | 是否覆盖 |
| String | 是 | ||
| avatar | String | 否 | 头像 |
| name | String | 否 | 名称 |
| publicKey | String | 是 | 账号公钥 |
| privateKey | String | 是 | 账号私钥 |
| msgPublicKey | String | 是 | 消息公钥 |
| msgPrivateKey | String | 是 | 消息私钥 |
| nextKeyId | String | 否 | nextKeyId |
| registrationId | String | 否 | 注册 id |
| accountId | String | 否 | 账号 id |
| deviceParams | String | 否 | 设备参数 |
| whatsappType | Integer | 否 | whatsapp 账户类型 1 个人 2 商业,默认个人 |
- 请求示例:
{
"whatsAppList": [
{
"whatsApp": "861821726232",
"whatsappType": 1,
"override": false,
"name": "lee",
"avatar": "wwww.baiux.com/1.img",
"publicKey": "",
"privateKey": "",
"msgPublicKey": "",
"msgPrivateKey": "",
"accountId": "",
"nextKeyId": "",
"registrationId": "",
"deviceParams": ""
}
]
}
响应参数说明
参数名 类型 是否必填 备注 code int 是 状态码 message String 是 描述 data String 是 数据 响应示例
{
"data": "",
"code": 200,
"message": "success"
}
批量回收客服号
类型
API
URI
/group-dispatch-api/whatsapp/batchRecycle
请求方式
POST、Content-Type: application/json
接口说明
批量回收客服号
请求参数说明
| 字段 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| whatsAppList | List | 否 | 客服号 |
请求示例:
{
"whatsAppList": ["861821726232", "861821726231"]
}
响应参数说明
参数名 类型 是否必填 备注 code int 是 状态码 message String 是 描述 data String 是 数据 响应示例
{
"data": "",
"code": 200,
"message": "success"
}
同步客服号状态
配置 ID <CHANNEL_SYNC_STATUS>
类型
WebHook
URI
/callback/gsTask/syncWhatsAppStatus
请求方式
POST、Content-Type: application/json
接口说明
同步客服号状态
请求参数说明
| 字段 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| String | 是 | 客服号 | |
| status | int | 是 | 状态 1、正常 2、封号 |
| onlineStatus | int | 是 | 在线状态状态 1、上线中 2、在线 3、下线中 4、离线 |
| reason | String | 否 | 失败原因 |
| instanceCode | String | 否 | 扫码ID |
- 请求示例:
{
"whatsApp": "8218132718231",
"status": 1,
"onlineStatus": 1,
"reason": "",
"instanceCode": ""
}
响应参数说明
参数名 类型 是否必填 备注 code int 是 状态码 message String 是 描述 data String 是 数据 响应示例
{
"data": "",
"code": 200,
"message": "success"
}
reason(异常原因) 说明
code 描述 1001 配对失败.需要重新扫码 1002 网络异常,需要更换IP
客服号注册
客服号注册(提交手机号)
- 类型
API
URI
/group-dispatch-api/register/submitPhone
请求方式
POST、Content-Type: application/json
接口说明
客服号注册
请求参数说明
| 字段 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| phone | String | 是 | 客服号(手机号) |
| verifyType | int | 是 | 验证码类型 0、短信 1、语音 2、未接来电 3、内部验证码 |
| accountType | int | 是 | 账号类型 1、个人 2、商业 |
| areaCode | String | 是 | 地区码 |
| countryCode | String | 是 | 国家码 |
- 请求示例:
{
"phone": "182172623211",
"verifyType": 1,
"accountType": 2,
"areaCode": "+86",
"countryCode": "CN"
}
响应参数说明
参数名 类型 是否必填 备注 code int 是 状态码 message String 是 描述 data int 是 任务 id 响应示例
{
"data": 12,
"code": 200,
"message": "success"
}
客服号注册(提交验证码)
- 类型
API
URI
/group-dispatch-api/register/submitVerifyCode
请求方式
POST、Content-Type: application/json
接口说明
客服号注册(验证码)
请求参数说明
| 字段 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| phone | String | 是 | 客服号(手机号) |
| areaCode | String | 是 | 地区码 |
| verifyCode | String | 是 | 验证码 |
- 请求示例:
{
"phone": "1821726232",
"verifyCode": "123456",
"areaCode": "+86"
}
响应参数说明
参数名 类型 是否必填 备注 code int 是 状态码 message String 是 描述 data String 是 数据 响应示例
{
"data": "",
"code": 200,
"message": "success"
}
同步客服号注册状态
配置 Id <CHANNEL_REGISTER_STATUS>
类型
WebHook
URI
/group-dispatch-api/register/syncStatus
请求方式
POST、Content-Type: application/json
接口说明
客服号注册状态同步
请求参数说明
| 字段 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| phone | String | 是 | 客服号(手机号) |
| status | int | 是 | 1、成功 0、失败 |
- 请求示例:
{
"phone": "861821726232",
"status": "1"
}
响应参数说明
参数名 类型 是否必填 备注 code int 是 状态码 message String 是 描述 data String 是 数据 响应示例
{
"data": "",
"code": 200,
"message": "success"
}
客服号扫码
获取配对客户
URI
group-dispatch-api/qrCode/selectPairTarget
请求方式
GET、Content-Type: application/json
请求参数说明
请求示例
- 响应示例
{
"code": 200,
"message": "Success",
"data": [
{
"createTime": "2025-11-05 16:22:07",
"targetTenantName": "xxxx",
"targetTenantId": 10085
},
{
"createTime": "2025-11-21 10:50:37",
"targetTenantName": "yyyy",
"targetTenantId": 10086
}
]
}
- 响应参数说明
| 参数名 | 类型 | 备注 |
|---|---|---|
| targetTenantId | int | 配对客户id |
| targetTenantName | String | 配对客户账号 |
| createTime | String | 创建时间 |
获取二维码窗口 ID 接口
URI
/group-dispatch-api/qrCode/preGenerate
请求方式
POST、Content-Type: application/json
请求参数说明
| 参数名 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| type | int | 是 | 类型 1、pc 端 2、云电脑 |
| target | int | 否 | 配对客户id |
- 请求示例
{
"type": 1,
"target":10085
}
- 响应示例
{
"code": 200,
"message": "Success",
"data": "ad518a4271fa43c8937612c5f60396f8"
}
注:每次请求此接口会预占用一个端口,10分钟之内锁定端口,超过时间未使用或者上线未成功,销毁此端口
获取二维码接口
URI
/group-dispatch-api/qrCode/getQrCode
请求方式
POST、Content-Type: application/json
请求参数说明
| 参数名 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| id | String | 否 | 唯一标识 |
| ipConfig | String | 否 | IP配置.目前只支持SOCKS5 |
- 请求示例
{
"id": "ad518a4271fa43c8937612c5f60396f8",
"ipConfig":"ip:port:user:pass"
}
- 响应示例
{
"code": 200,
"message": "Success",
"data": "2@BBisWIG5D2RkAqYI5NhFXG+Mrw/EZGU70YTyammI/3Q/nx4O3e6QNIn4PXYMWfgoO/Hb4CIi7y9G2JXeRAiVloK/QgEM9unZVX8=,1b1JxI522MIxZxMLjhOuE/A5ys2I/hvj7iMWK7ZPSm0=,iSMi+zxKjva1DMVogyRZ/TTOlx1UaLed4fQllsILvDw=,xDt9ykte3QQmklrdLQqgtH6V1NhYM14NhxXfb2UZE3Y=,1"
}
获取二维码或者配对码接口
URI
/group-dispatch-api/qrCode/getQrCodeV2
请求方式
POST、Content-Type: application/json
请求参数说明
| 参数名 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| id | String | 是 | 唯一标识 |
| phone | String | 是 | 手机whatsapp账号 |
| ipConfig | String | 否 | IP配置.目前只支持SOCKS5,传过来默认IP可用 |
- 请求示例
{
"id": "ad518a4271fa43c8937612c5f60396f8",
"phone": "8618733334444",
"ipConfig":"ip:port:user:pass"
}
- 响应示例
{
"code": 200,
"message": "Success",
"data":{
"qrcode":"2@BBisWIG5D2RkAqYI5NhFXG+Mrw/EZGU70YTyammI/3Q/nx4O3e6QNIn4PXYMWfgoO/Hb4CIi7y9G2JXeRAiVloK/QgEM9unZVX8=,1b1JxI522MIxZxMLjhOuE/A5ys2I/hvj7iMWK7ZPSm0=,iSMi+z=,1",
"pireCode":"IVEA_IPON"
}
}
二维码状态同步接口
WebHook
配置 ID <WA_SYNC_QR_LOGIN_STATUS>
URI
/wscrm-bus-api/open/qrCode/syncLoginStatus
请求方式
POST、Content-Type: application/json
请求参数说明
| 参数名 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| id | String | 是 | 唯一标识 |
| String | 否 | whatsapp 账号 | |
| status | int | 是 | 状态 0、失败 1、成功 |
- 请求示例
{
"id": "ad518a4271fa43c8937612c5f60396f8",
"whatsapp": "817272727272",
"status": 1
}
- 响应示例
{
"code": 200,
"message": "Success",
"data": ""
}
获取二维码信息接口
URI
/group-dispatch-api/qrCode/getQrCodeInfo
请求方式
POST、Content-Type: application/json
请求参数说明
| 参数名 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| id | String | 否 | 唯一标识 |
| String | 否 | whatsapp 账号 |
- 请求示例
{
"id": "ad518a4271fa43c8937612c5f60396f8"
}
- 响应参数说明
| 参数名 | 类型 | 备注 |
|---|---|---|
| status | int | 状态 0、未登录(未扫码成功) 1、登录成功(扫码成功) |
| String | whatsapp 账号 | |
| userName | String | 坐席名称 |
- 响应示例
{
"code": 200,
"message": "Success",
"data": [
{
"status": 1,
"userName": "test",
"whatsApp": "812282828221"
}
]
}
客服号上线接口
URI
/group-dispatch-api/qrCode/onLine
请求方式
POST、Content-Type: application/json
请求参数说明
| 参数名 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| id | String | 是 | 唯一标识 |
| ipConfig | String | 否 | IP配置.目前只支持SOCKS5 |
- 请求示例
{
"id": "ad518a4271fa43c8937612c5f60396f8",
"ipConfig":"ip:port:user:pass"
}
- 响应示例
{
"code": 200,
"message": "Success",
"data": []
}
客服号下线接口
URI
/group-dispatch-api/qrCode/offline
请求方式
POST、Content-Type: application/json
请求参数说明
| 参数名 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| id | String | 是 | 唯一标识 |
- 请求示例
{
"id": "ad518a4271fa43c8937612c5f60396f8"
}
- 响应示例
{
"code": 200,
"message": "Success",
"data": []
}
客服号登出接口
URI
/group-dispatch-api/qrCode/logOut
请求方式
POST、Content-Type: application/json
请求参数说明
| 参数名 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| id | String | 是 | 唯一标识 |
- 请求示例
{
"id": "ad518a4271fa43c8937612c5f60396f8"
}
- 响应示例
{
"code": 200,
"message": "Success",
"data": []
}
获取当前用户的总端口数以及当前使用端口数
URI
/group-dispatch-api/qrCode/selectCloudPort
请求方式
GET、Content-Type: application/json
响应示例
{
"code": 200,
"message": "Success",
"data": {
"currentPort": 3,
"maxPort": 2
}
}
- 响应参数说明
| 参数名 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| currentPort | int | 是 | 当前占用端口数量 |
| maxPort | int | 是 | 最大端口可用额度 |
注:当最大端口数小于当前占用端口数量时,会把后面申请的端口上的号码进行下线处理
查询当前占用端口数详细信息
URI
/group-dispatch-api/qrCode/selectCloudPortDetail
请求方式
GET、Content-Type: application/json
响应示例
{
"code": 200,
"message": "Success",
"data": [
{
"phone": "8618730334344",
"createTime": "2025-07-31 15:40:19",
"id": 8639164839053938688,
"status": 10
},
{
"phone": "8618730334345",
"createTime": "2025-09-10 16:07:25",
"id": 8654029561952415744,
"status": 20
},
{
"phone": null,
"createTime": "2025-09-10 16:07:42",
"id": 8654029632861319168,
"status": null
}
]
}
- 响应参数说明
| 参数名 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| phone | String | 否 | wa号码 |
| createTime | string | 是 | 端口申请时间 |
| id | String | 是 | 端口申请id |
| status | int | 否 | 号码状态 10 在线 20 掉线 |
注:申请后请及时使用所占用端口,否则会占用端口额度
查询当前云端口的通讯录信息
注: 此操作会存在风控
URI
/group-dispatch-api/qrCode/selectContact?id=xxx
请求方式
GET、Content-Type: application/json
请求参数说明
| 参数名 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| id | String | 否 | 唯一标识 |
- 响应示例
{
"code": 200,
"message": "Success",
"data": [
{
"whatsapp": "8618733334444",
"pushName": "Ryan yu",
"isFriend": false,
"firstName": "",
"fullName": ""
},
{
"whatsapp": "8618733334444",
"pushName": "Ryan yu",
"isFriend": false,
"firstName": "",
"fullName": ""
}
]
}
- 响应参数说明
| 参数名 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| String | 是 | wa号码 | |
| pushName | string | 否 | wa的昵称 |
| isFriend | String | 是 | 是否是联系人 |
| firstName | String | 否 | 联系人 姓氏 |
| fullName | String | 否 | 联系人 名字 |
查询当前云端口的联系人信息
注: 此操作会存在风控,且不区分是否是真的联系人
URI
/group-dispatch-api/qrCode/contact/info
请求方式
POST、Content-Type: application/json
请求参数说明
| 参数名 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| id | String | 是 | 唯一标识 |
| phone | String | 是 | 预想的联系人号码 |
- 请求示例
{
"id": "ad518a4271fa43c8937612c5f60396f8",
"phone":"8618733334444"
}
- 响应示例
{
"code": 200,
"message": "Success",
"data":
{
"whatsapp": "8618733334444",
"pushName": "Ryan yu",
"isFriend": false,
"firstName": "",
"fullName": ""
}
}
- 响应参数说明
| 参数名 | 类型 | 是否必填 | 备注 |
|---|---|---|---|
| String | 是 | wa号码 | |
| pushName | string | 否 | wa的昵称 |
| isFriend | String | 是 | 是否是联系人 |
| firstName | String | 否 | 联系人 姓氏 |
| fullName | String | 否 | 联系人 名字 |
扫码异常信息说明
| code | message |
|---|---|
| 1001 | 当前用户云端口额度不足 |
| 1002 | 当前端口不存在或者已被释放 |
| 1003 | 不支持的类型 |
| 1004 | 未设置配对客户 |
