群发接口
创建群发
注意
- 若使用unionId方式创建群发,需确认秒回端客户已完成union ID打通,可通过回调或者通过接口获取到chatId进行打通确认
- 创建群发接口需要说明最大传入的
wxid
或者unionId
的总长度为1000,如果需要群发超过1000
人,则需要重复调用接口来传入数据。 创建群发任务,当人数过多时需要分页。通过hasMore
字段传入true
, 会将多组成员数据组合在一起。 - 多次调用接口创建群发时,非第一次调用接口时,需要带着
id
的参数,否则会创建出多个独立的群发。 - 多次调用接口创建任务时,后传入的
messages
字段会覆盖之前传入的值。当接收到hasMore
为false
或不存在时,为结束标志。 - 当群发任务全部成功时,会自动归档。当群发任务有失败的对象时,不会自动归档,需调用取消api接口或者在群发界面点击取消按钮。
- 每一次接收到
messages
,都会在公司话术的"api群发"
组中新建一个素材,便于界面显示以及后续对于群发详细信息进行复核。 - 分页创建群发时需要在10分钟内完成。
POST https://ex-api.botorange.com/broadcast/create
发送POST请求,请求数据为json格式,如下
{
"id": "5c69d33cac3d075a57657ed6",
"token": "abcd",
"messages": [{
"type": 0, // MessageType, check below
"payload": {
"text": "你好啊,我是商务", // message content
"mention": ["wxid_rr9ej1o8xv9h21"], // mention list, when send message to room, can set mention list, nullable
},
"isAnnouncement": false,
"isAtAll": false,
}],
"scheduledTimestamp": 1597903969925,
"members": [{
"botUserId": "5d0c86971150c017984cee66",
"wxids": ["788748399949943"],
"unionIds": ["ozynqsulJFCZ2z1aYeS8h-nuasdAAA"],
"externalUserIds": ["wmrRhyBgAAdGSL2peFY7R91imak0gTmg"],
}],
"hasMore": false,
"type": 5
}
名称 | 类型 | 是否必须 | 备注 |
---|---|---|---|
id | string | 否 | 群发id,分页后续必传 |
title | string | 否 | 自定义群发名称 |
token | string | 是 | 调用接口凭证, 获取方式 |
type | string | 是 | 5私聊 6群聊 |
hasMore | boolean | 否 | 当分页时为true,最后一个是false或者不传 |
scheduledTimestamp | number | 否 | (毫秒)当定时任务时必传,否则不传 |
messages | array | 否 | 当hseMore不传或者为false时,必须存在一组messages,多存在多组时,后面会覆盖前面的messages |
messages.type | number | 是 | 参考发送消息的messageType |
messages.payload | object | 是 | 参考发送消息的payload |
messages.isAnnouncement | boolean | 否 | 表示该条消息是群公告(需保证一次群发只允许有一条群公告消息),只在type是群聊且机器人为群主时生效 |
messages.isAtAll | boolean | 否 | 表示该条消息是@所有人(需保证一次群发只允许有一条群公告消息),只在type是群聊且机器人为群主时生效 |
members | array | 是 | 发送对象 |
members.botUserId | string | 是 | 机器人的userId, 详见wxUserId |
members.wxids | array | 否(和unionIds、externalUserIds三选一) | 该机器人发送对象的wxid列表,多组时会整合去重. 当wxids存在时, unionId无效, 详见contactWxid |
members.unionIds | array | 否(和wxids、externalUserIds三选一) | 该机器人发送对象的unionId列表,多组时会整合去重. 当wxids存在时, unionId无效, 详见unionId |
members.externalUserIds | array | 否(和wxids、unionIds三选一) | 该机器人发送对象的externalUserId列表,多组时会整合去重.详见externalUserId |
返回格式如下
{
"code": 0,
"data": {
"id": "5c69d33cac3d075a57657ed6",
"memberNumber": 1,
"scheduledTimestamp": 1597903969925,
"isCreated": false,
"messageNumber": 1,
"failedMembers": [{
"botUserId": "5d0c86971150c017984cee66",
"wxids": ["788748399949943"],
"unionIds": ["ozynqsulJFCZ2z1aYeS8h-nuasdAAA"],
"externalUserIds": ["wmrRhyBgAAdGSL2peFY7R91imak0gTmg"],
}],
"failedMemberCount": 0
}
}
名称 | 类型 | 是否必须 | 备注 |
---|---|---|---|
id | string | 否 | 群发id |
memberNumber | number | 是 | 群发对象人数 |
scheduledTimestamp | number | 否 | (毫秒)定时任务时存在 |
isCreated | boolean | 否 | 该群发是否创建成功 |
messageNumber | number | 是 | 发送消息数 |
failedMembers | array | 否 | 未创建成功的成员,参数参照请求的members字段 |
failedMemberCount | number | 否 | 未创建成功的成员数量 |
错误码说明:
错误码 | 说明 |
---|---|
-1 | 群发任务不存在 |
-2 | 群发任务已开始 |
-3 | wxid或者unionId长度超过限制 |
-4 | 未找到发送的消息 |
-5 | 未找到发送的对象 |
-6 | 指定群公告的消息数量超过1条 |
-7 | 指定群公告的消息消息类型不是文本 |
重发群发
该接口只允许对api创建且发送完成,未归档但是有失败的群发任务进行群发。
POST https://ex-api.botorange.com/broadcast/resend
发送POST请求,请求数据为json格式,如下
{
"id": "5c69d33cac3d075a57657ed6",
"token": "abcd"
}
名称 | 类型 | 是否必须 | 备注 |
---|---|---|---|
id | string | 是 | 群发id |
token | string | 是 | 调用接口凭证, 获取方式 |
返回格式如下
{
"code": 0
}
错误码说明:
错误码 | 说明 |
---|---|
-1 | 群发任务不存在 |
-2 | 群发任务的状态不可以重发 |
取消群发
该接口只允许取消发送中的群发,会自动取消群发并归档,如未发送的定时群发,请调用删除群发接口。
POST https://ex-api.botorange.com/broadcast/cancel
发送POST请求,请求数据为json格式,如下
{
"id": "5c69d33cac3d075a57657ed6",
"token": "abcd"
}
名称 | 类型 | 是否必须 | 备注 |
---|---|---|---|
id | string | 否 | 群发id |
token | string | 是 | 调用接口凭证, 获取方式 |
返回格式如下
{
"code": 0
}
错误码说明:
错误码 | 说明 |
---|---|
-1 | 群发任务不存在 |
-2 | 群发任务的状态不可以取消 |
删除群发
删除未发送的定时任务。
POST https://ex-api.botorange.com/broadcast/delete
发送POST请求,请求数据为json格式,如下
{
"id": "5c69d33cac3d075a57657ed6",
"token": "abcd"
}
名称 | 类型 | 是否必须 | 备注 |
---|---|---|---|
id | string | 否 | 群发id |
token | string | 是 | 调用接口凭证, 获取方式 |
返回格式如下
{
"code": 0
}
错误码说明:
错误码 | 说明 |
---|---|
-1 | 群发任务不存在 |
-2 | 群发任务的不可以删除 |
群发回调
群发结果通知,在群发任务结束时进行回调。 会进行重试5次,间隔分别是1s, 5s, 30s, 1min
POST ***/broadcast/result
发送POST请求,请求数据为json格式,如下
{
"id": "5c69d33cac3d075a57657ed6",
"successTotal": 10,
"failedTotal": 10,
"startTimestamp": 1597903969925,
"endTimestamp": 1597903969925,
"scheduleTimestamp": 1597903969925
}
名称 | 类型 | 是否必须 | 备注 |
---|---|---|---|
id | string | 是 | 群发id |
successTotal | number | 是 | 群发成功对象数 |
failedTotal | number | 是 | 群发失败对象数 |
startTimestamp | number | 是 | (毫秒)群发开始时间 |
endTimestamp | number | 是 | (毫秒)群发结束时间 |
scheduleTimestamp | number | 否 | (毫秒)群发定时时间,定时任务存在 |
返回格式如下
{
"code": 0
}
获取群发任务的失败列表
获取群发失败列表接口,可以获取到群发任务的发送失败的对象信息。
GET https://ex-api.botorange.com/broadcast/failedList?id=5c69d33cac3d075a57657ed6¤t=1&pageSize=10&token=abcd
名称 | 类型 | 是否必须 | 备注 |
---|---|---|---|
id | string | 否 | 群发id |
token | string | 是 | 调用接口凭证, 获取方式 |
current | string | 是 | 页数从1开始 |
pageSize | string | 是 | 每页个数,最大不超过500 |
返回格式如下
{
"code": 0,
"data": [
{
"botUserId": "5d0c86971150c017984cee66",
"wxid": "788748399949943",
"unionId": "ozynqsulJFCZ2z1aYeS8h-nuasdAAA",
"errorMsg": "",
"errorCode": 0
}
]
}
名称 | 类型 | 是否必须 | 备注 |
---|---|---|---|
botUserId | string | 否 | 机器人的userId |
wxid | string | 是 | 群发对象的wxid, 详见contactWxid |
unionId | string | 否 | 群发对象的unionId, 详见unionId |
errorCode | number | 是 | 错误码,详情参见 |
errorMsg | string | 是 | 错误描述,详情参见 |
错误码说明:
错误码 | 说明 |
---|---|
-1 | 群发任务不存在 |
-2 | 每页长度超过限制 |
获取群发任务的进度
获取群发任务的进度数据
GET https://ex-api.botorange.com/broadcast/get_job_progress?id=5c69d33cac3d075a57657ed6&token=abcd
名称 | 类型 | 是否必须 | 备注 |
---|---|---|---|
id | string | 否 | 群发id |
token | string | 是 | 调用接口凭证, 获取方式 |
返回格式如下
{
"code": 0,
"data": {
"id": "63e8e08f576e1a84cbc90a58",
"successTotal": 42,
"failedTotal": 0,
"unsentTotal": 43,
"sendingTotal": 0
}
}
名称 | 类型 | 是否必须 | 备注 |
---|---|---|---|
id | string | 是 | 群发的id |
successTotal | number | 是 | 成功数量 |
failedTotal | number | 否 | 失败数量 |
unsentTotal | number | 是 | 未发送的数量 |
sendingTotal | number | 是 | 正在发送中的数量 |
获取群发任务的未发送列表
获取群发任务还未发送的任务列表
GET https://ex-api.botorange.com/broadcast/list_unsent_tasks?id=5c69d33cac3d075a57657ed6¤t=1&pageSize=10&token=abcd
名称 | 类型 | 是否必须 | 备注 |
---|---|---|---|
id | string | 否 | 群发id |
token | string | 是 | 调用接口凭证, 获取方式 |
current | string | 是 | 页数从1开始 |
pageSize | string | 是 | 每页个数,最大不超过500 |
返回格式如下
{
"code": 0,
"data": [
{
"botUserId": "Ling",
"wxid": "R:10896971879606630"
}
]
}
名称 | 类型 | 是否必须 | 备注 |
---|---|---|---|
botUserId | string | 否 | 机器人的userId |
wxid | string | 是 | 群发对象的wxid, 详见contactWxid或者roomWxid |