调用openapi接口需要进行基于Appid+secretKey的OpenAPI鉴权
1. 查询知识库列表
| 请求方法 | POST |
| 接口路径 | /openapi/kb/v1/kb/list |
| 接口说明 | 查询知识库列表 |
请求体参数(body)
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| user | string | 是 | 座席工号 |
| businessCode | string | 否 | assistant:座席辅助;imQuickReply:在线客服知识联想;imKbList:在线客服知识库列表 |
请求示例
{"user":"6003","businessCode":"assistant"}响应说明
data 为知识库数组。元素包含 kbId、kbName、children;children 为分类树,节点字段为 categoryId、name、parentId、groupId、order、children。顶级分类中,-1 表示标准知识,-2 表示文件知识。
{"code":200,"data":[{"kbId":2027309239167565824,"kbName":"客服知识库","children":[]}],"message":null,"traceId":"8e32b17a0a5e4c87"}2. 查询知识库详情中QA知识点
| 请求方法 | POST |
| 接口路径 | /openapi/kb/v1/qa/list |
| 接口说明 | 查询知识库详情中QA知识点 |
请求头参数(Header)
| 参数名 | 位置 | 类型 | 示例值 |
|---|---|---|---|
| appid | header | string | 1090 |
| timestamp | header | string | {{$date.timestamp}} |
| nonce | header | string | 123456 |
| signature | header | string |
请求体参数(Body)
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| kbId | string | 是 | 知识库 ID |
| categoryId | string | 否 | 分类 ID |
| qa | string | 否 | 问题关键字,模糊查询 |
| effectStatus | string | 否 | inEffect、notInEffect、invalid |
| qaId | string | 否 | QA ID |
| enable | boolean/null | 否 | true 启用,false 停用,null 不过滤 |
| createTimeStart / createTimeEnd | string | 否 | 创建时间范围 |
| updateTimeStart / updateTimeEnd | string | 否 | 更新时间范围 |
请求示例
{"kbId":"2027309239167565824","categoryId":"0","qa":"","effectStatus":"","qaId":"","enable":null}响应说明
data 为 QA 数组;元素包含 id、question、answer、effectStatus、categoryId、categoryName、hitCount、likeCount、dislikeCount、createTime、updateTime、enable、reviewing、kbId、kbName、docType(固定为 qa)和 files。
{"code":200,"data":[{"id":2030957784421621760,"question":"如何重置密码?","effectStatus":"inEffect","answer":"请在登录页选择忘记密码。","categoryId":1,"categoryName":"常见问题","enable":true,"reviewing":false,"kbId":"2027309239167565824","kbName":"客服知识库","docType":"qa","files":[]}],"message":null,"traceId":"8e32b17a0a5e4c87"}3. 新增知识库详情中QA知识点
| 请求方法 | POST |
| 接口路径 | /openapi/kb/v1/qa/add/kbid |
| 接口说明 | 增加知识库详情中QA知识点 |
请求体参数(Body)
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| user | string | 是 | 操作人座席工号 |
| categoryId | integer | 否 | 所属分类 ID |
| question | string | 是 | 标准问法 |
| answerType | string | 是 | TEXT 或 HYPER_TEXT |
| answer / answerHyperText | string | 按场景 | 纯文本或富文本答案 |
| attachmentList | array | 否 | 富文本附件;元素含 url、name、size、contentType |
| effective | boolean | 是 | 是否设置有效期 |
| effectiveStartTime / effectiveEndTime | integer/null | 按场景 | 有效期起止时间,13 位毫秒时间戳 |
| keywords / similarQaList | array[string] | 否 | 关键词 / 相似问法 |
| relationQaList | array[integer] | 否 | 关联 QA ID |
| answerMethod | string | 是 | text 或 voice |
| voiceId | integer/null | 按场景 | answerMethod=voice 时必填 |
请求示例
{"user":"6003","categoryId":1,"question":"如何重置密码?","answerType":"TEXT","answer":"请在登录页选择忘记密码。","answerHyperText":"","attachmentList":[],"effective":false,"effectiveStartTime":null,"effectiveEndTime":null,"keywords":["密码"],"similarQaList":[],"relationQaList":[],"answerMethod":"text","voiceId":null}响应说明
新增、更新、删除和上下线操作的data均为审核/批量处理结果:
| 字段 | 类型 | 说明 |
|---|---|---|
| isReview | boolean | 本次操作是否提交审核 |
| existsReviewing | boolean | 是否存在待审核记录 |
| batchSuccess | integer | 成功处理数量 |
| batchIsReview | integer | 提交审核数量 |
| batchExistsReviewing | integer | 因已有待审核记录未处理的数量 |
{"code":200,"data":{"isReview":true,"existsReviewing":false,"batchSuccess":0,"batchIsReview":0,"batchExistsReviewing":0},"message":null,"traceId":"8e32b17a0a5e4c87"}4. 更新知识库详情中QA知识点
| 请求方法 | PUT |
| 接口路径 | /openapi/kb/v1/qa/kbid/qaid |
| 接口说明 | 更新知识库详情中QA知识点 |
请求体参数(Body)
请求体字段与上一接口“新增 QA 知识点”一致。
响应说明
成功响应的data 为审核/批量处理结果,字段说明见上一接口。
5. 删除知识库详情中QA知识点
| 请求方法 | DELETE |
| 接口路径 | /openapi/kb/v1/qa/delete |
| 接口说明 | 删除知识库详情中QA知识点 |
请求体参数(Body)
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| user | string | 是 | 操作人座席工号 |
| kbId | string | 是 | 知识库 ID |
| qaId | string | 是 | 待删除 QA ID |
请求示例
{"user":"6003","kbId":"2027309239167565824","qaId":"2030957784421621760"}响应说明
成功响应的data为审核/批量处理结果,字段说明见“新增 QA 知识点”。
6. 知识库查询审核列表
| 请求方法 | POST |
| 接口路径 | /openapi/kb/v1/review/list |
| 接口说明 | 知识库审核列表 |
请求体参数(Body)
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| pageNum / pageSize | integer | 是 | 页码(从 1 开始)/ 每页条数 |
| query.user | string | 是 | 当前操作人座席工号 |
| query.status | string | 否 | REVIEWING、APPROVED、REJECTED |
| query.keywords / query.kbId / query.createUser | string | 否 | 关键字 / 知识库 ID / 提交人 |
| query.recordType | string | 否 | qa、doc、docSeg |
| query.reviewType | string | 否 | insert、update、delete 等审核类型 |
| query.reviewuser | string | 否 | 审核人 |
| 时间范围字段 | string | 否 | createTimeStart、createTimeEnd、reviewTimeStart、reviewTimeEnd |
响应说明
data 为分页对象,包含 pageNum、pageSize、total、hasNext 和 list。list 元素包含 id、kbId、kbName、recordType、reviewType、reviewOld、reviewNew、status、reviewUsername、reviewTime、createUsername、createTime、requestObj、canReview。
{"code":200,"data":{"pageNum":1,"pageSize":20,"total":1,"hasNext":false,"list":[{"id":2033802172357058560,"kbId":2027309239167565824,"status":"REVIEWING","recordType":"qa","reviewType":"update","canReview":true}]},"message":null,"traceId":"8e32b17a0a5e4c87"}7. 审核知识库变更
| 请求方法 | POST |
| 接口路径 | /openapi/kb/v1/review/doReview |
| 接口说明 | 知识库审核 |
请求体参数(Body)
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 审核记录 ID |
| user | string | 是 | 审核人座席工号 |
| kbId | string | 是 | 知识库 ID |
| reviewResult | string | 是 | APPROVED 通过;REJECTED 拒绝 |
请求示例
{"id":"2033802172357058560","user":"6003","kbId":"2027309239167565824","reviewResult":"APPROVED"}响应说明
成功时 data 为 null。
8. 知识库上下线
| 请求方法 | POST |
| 接口路径 | /openapi/kb/v1/qa/batch-status |
| 接口说明 | 知识库上下线 |
请求体参数(Body)
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| kbId | string | 是 | 知识库 ID |
| enable | boolean | 是 | true 上线/启用;false 下线/停用 |
| user | string | 是 | 操作人座席工号 |
| idList | array[string] | 否 | 指定操作的 QA ID 列表 |
| query | object | 否 | idList 为空时的全选筛选条件;字段与 QA 查询接口一致 |
请求示例
{"kbId":"2027309239167565824","enable":true,"user":"6003","idList":["2033798084168982528"]}响应说明
成功响应的data为审核/批量处理结果,字段说明见“新增 QA 知识点”。
附录:
数据类型说明
| 类型 | 说明 |
| string | 字符串类型 |
| integer | 整数类型 |
| boolean | 布尔类型(true/false) |
| array | 数组类型 |
| object | 对象类型 |
| null | 空值 |
统一响应
| 字段 | 类型 | 说明 |
|---|---|---|
| code | integer | 200 表示成功 |
| data | object/array/null | 业务数据,结构见各接口 |
| message | string/null | 响应消息;失败时返回原因 |
| traceId | string/null | 请求链路标识,异常排查时请提供 |
{
"code": 200,
"data": {},
"message": null,
"traceId": "8e32b17a0a5e4c87"
}枚举值说明
| 参数 | 枚举值 | 含义 |
| businessCode | assistant | 座席辅助 |
| imQuickReply | 在线客服输入框快捷搜索(知识联想) | |
| imKbList | 在线客服知识库列表 | |
| effectStatus | inEffect | 生效中 |
| notInEffect | 未生效 | |
| invalid | 已失效 | |
| answerType | TEXT | 纯文本答案 |
| HYPER_TEXT | 富文本答案 | |
| answerMethod | text | 文本回答 |
| voice | 语音库回答;此时 voiceId 必须有值 | |
| status | REVIEWING | 待审核 |
| APPROVED | 审核通过 | |
| REJECTED | 审核拒绝 | |
| recordType | qa | QA 标准知识 |
| doc | 文档知识 | |
| docSeg | 文档分段 | |
| reviewResult | APPROVED | 审核通过 |
| REJECTED | 审核拒绝 | |
| reviewType | insert | 新增 QA |
| update | 修改 QA | |
| delete | 删除 QA | |
| insertFile | 新增文档 | |
| updateFileFromAdd | 新增文档时判定为修改文件 | |
| updateFileStatus | 修改文档状态 | |
| updateFile | 修改文档内容 | |
| deleteFile | 删除文档 | |
| updateSegStatus | 修改文档分段状态 |