### 数据编码
> UTF-8
### 请求方式
> POST
### 使用说明
> 1. 使用者须为图灵机器人标准版或儿童版用户。
> 2. 用户使用知识库新增接口批量导入数据时,享有与官网Excel上传导入相同的权限设置(10000条/5次/天)。官网导入数据与接口导入数据都以累计的方式进行,每天数据导入量上限为10000条,次数上限为5次。
> 3. 用户使用知识库新增接口逐条添加数据时,每日导入量上限为10000条
> 4. 图灵机器人对知识库接口提供了安全模式设置,目前分为加密和不加密两种形式,用户可按需自行设定。用户可登录图灵机器人官网,进入到机器人详情页的知识库模块的知识库API接口中对API进行“是否开启安全模式”配置
> 5. 用户如想修改知识库中的数据时,推荐将该条数据删除后再重新添加
### 安全模式
> 用户登录图灵机器人官网,可以在机器人详情页的知识库模块的知识库API接口中自行选择,目前提供加密和不加密两种模式,如果采用加密模式,还需设置加密模式的编码密钥(密钥按照要求自行设置,如:密钥为test123),如下图所示: 
### 常见问题
#### 1. 知识库可以通过接口来实现吗?
> 目前图灵机器人对标准版、儿童版用户提供了知识库开放接口服务。通过该接口,您可以实现对私有知识库数据的增删改查,享有和官网导入知识库一样的服务。使用接口操作的数据也会和官网知识库数据保持同步(数据默认导入到该机器人账号下的“默认知识库”中)
#### 2. 在哪里可以获取到知识库相关的接口服务?
> 目前图灵机器人对标准版、儿童版用户提供了知识库开放接口服务。如果您已拥有相关权限,即可在机器人详情页的知识库模块的知识库API接口中找到该服务。如果您还未有权限使用,可通过付费升级此机器人账号来获取使用权限
#### 3. 知识库开放接口主要有哪些功能?
> 图灵机器人知识库开放接口提供了5个接口,包括知识库新增接口、知识库删除接口、知识库修改接口、知识库查询接口以及机器人名称修改接口,方便用户使用及管理。
## **接口**
### **知识库导入**
>[success] 请求地址
http://www.tuling123.com/v1/setting/importfaq
>[info] 请求示例
``` json
{
"apikey": "90d05439eb6c49939afb1c0e033095c2",
"data": [
{
"question": "测试问题1",
"answer": "测试答案1"
},
{
"question": "测试问题2",
"answer": "测试答案2"
}
],
"token": "ca7faa2295639b8c1c84a30e7da3756a"
}
```
>token计算示例(javascript)
```javascript
var param = {
"apikey": "90d05439eb6c49939afb1c0e033095c2",
"data": [
{
"question": "测试问题1",
"answer": "测试答案1"
},
{
"question": "测试问题2",
"answer": "测试答案2"
}
]
};
var sec = "test123"; //知识库密匙
var dataString = JSON.stringify(param.data); //param.data字符串转换
var token = md5(dataString + sec); //使用MD5计算token值
param.token = token;
```
>请求字段说明
| 字段 | 类型 | 必须 | 说明 |
| --- | --- | --- |
|apikey|字符串|√|图灵机器人APIKEY|
|data|JSON数组|√|导入的数据|
|question|字符串|√|问题|
|answer|字符串|√|答案|
|token|字符串|×|**加密模式必填**,计算方式见【token计算示例】|
>[success] 返回示例
``` json
{
"code": 0,
"data": "2"
}
```
>返回字段说明
| 字段 | 类型 | 说明 |
| --- | --- | --- |
|code|整数|状态码|
|data|字符串|成功条数或失败原因的描述|
### **知识库查询**
>[success] 请求地址
http://www.tuling123.com/v1/setting/selectfaq
#### **获取总条数**
>[info] 请求示例
``` json
{
"apikey": "90d05439eb6c49939afb1c0e033095c2"
}
```
#### **分页搜索**
>[info] 请求示例
``` json
{
"apikey": "90d05439eb6c49939afb1c0e033095c2",
"data": {
"pages": {
"pageNumber": 1,
"pageSize": 10,
"searchBy": "测试"
}
},
"token":"c0479ba61b40454e8be4b9b108d401ca"
}
```
>token计算示例(javascript)
```javascript
var param = {
"apikey": "90d05439eb6c49939afb1c0e033095c2",
"data": {
"pages": {
"pageNumber": 1,
"pageSize": 10,
"searchBy": "测试"
}
}
};
var sec = "test123"; //知识库密匙
var dataString = JSON.stringify(param.data); //param.data字符串转换
var token = md5(dataString + sec); //使用MD5计算token值
param.token = token;
```
#### **根据数据ID查询**
>[info] 请求示例
``` json
{
"apikey": "90d05439eb6c49939afb1c0e033095c2",
"data": {
"ids": [
1,
2
]
},
"token":"c0479ba61b40454e8be4b9b108d401ca"
}
```
>token计算示例(javascript)
```javascript
var param = {
"apikey": "90d05439eb6c49939afb1c0e033095c2",
"data": {
"ids": [
1,
2
]
}
};
var sec = "test123"; //知识库密匙
var dataString = JSON.stringify(param.data); //param.data字符串转换
var token = md5(dataString + sec); //使用MD5计算token值
param.token = token;
```
>请求字段说明
| 字段 | 类型 | 必须 | 说明 |
| --- | --- | --- |
|apikey|字符串|√|图灵机器人APIKEY|
|data|JSON|×|请求参数|
|pages|JSON|×|分页参数|
|pageNumber|整数|×|分页-当前页码|
|pageSize|整数|×|分页-每页条数|
|searchBy|字符串|×|分页-搜索(问题和答案都搜索)|
|ids|整数数组|×|知识库数据ID|
|token|字符串|×|**加密模式必填**,计算方式见【token计算示例】|
>[success] 返回示例
``` json
{
"code": 0,
"data": {
"totalCount": 2,
"knowledgeCount": 2,
"knowledgeList": [
{
"id": "2",
"question": "测试问题2",
"answer": "新的答案2",
"time": "2015-12-03 14:34:36"
},
{
"id": "1",
"question": "测试问题1",
"answer": "新的答案1",
"time": "2015-12-03 14:34:35"
}
]
}
}
```
>返回字段说明
| 字段 | 类型 | 说明 |
| --- | --- | --- |
|code|整数|状态码|
|data|JSON或字符串|查询数据结果列表或失败原因的描述|
|totalCount|整数|知识库数据总条数|
|knowledgeCount|整数|返回的查询数据条数|
|knowledgeList|JSON|返回的数据列表|
|id|字符串|返回数据id|
|question|字符串|返回数据的问题|
|answer|字符串|答案|
|time|时间(year-mon-day hour:min:sec)|修改时间|
### **知识库修改**
>[success] 请求地址
http://www.tuling123.com/v1/setting/updatefaq
>[info] 请求示例
``` json
{
"apikey": "90d05439eb6c49939afb1c0e033095c2",
"data": [
{
"id": "1",
"question": "新的问题",
"answer": "新的答案1"
},
{
"id": "2",
"question": "新的问题",
"answer": "新的答案2"
}
],
"token": "ca7faa2295639b8c1c84a30e7da3756a"
}
```
>token计算示例(javascript)
```javascript
var param = {
"apikey": "90d05439eb6c49939afb1c0e033095c2",
"data": [
{
"id": "1",
"question": "新的问题",
"answer": "新的答案1"
},
{
"id": "2",
"question": "新的问题",
"answer": "新的答案2"
}
]
};
var sec = "test123"; //知识库密匙
var dataString = JSON.stringify(param.data); //param.data字符串转换
var token = md5(dataString + sec); //使用MD5计算token值
param.token = token;
```
>请求字段说明
| 字段 | 类型 | 必须 | 说明 |
| --- | --- | --- |
|apikey|字符串|√|图灵机器人APIKEY|
|data|JSON数组|√|请求参数|
|id|字符串|√|知识库数据ID|
|question|字符串|×|问题|
|answer|字符串|×|答案|
|token|字符串|×|**加密模式必填**,计算方式见【token计算示例】|
>[success] 返回示例
``` json
{
"code": 0,
"data": "2"
}
```
>返回字段说明
| 字段 | 类型 | 说明 |
| --- | --- | --- |
|code|整数|状态码|
|data|字符串|成功条数或失败原因的描述|
### **知识库删除**
>[success] 请求地址
http://www.tuling123.com/v1/setting/deletefaq
#### **根据数据ID删除**
>[info] 请求示例
``` json
{
"apikey": "90d05439eb6c49939afb1c0e033095c2",
"data": {
"ids": [
1,
2,
3
]
},
"token":"ca7faa2295639b8c1c84a30e7da3756a"
}
```
>token计算示例(javascript)
```javascript
var param = {
"apikey": "90d05439eb6c49939afb1c0e033095c2",
"data": {
"ids": [
1,
2,
3
]
}
};
var sec = "test123"; //知识库密匙
var dataString = JSON.stringify(param.data); //param.data字符串转换
var token = md5(dataString + sec); //使用MD5计算token值
param.token = token;
```
#### **清空知识库**
>[info] 请求示例
``` json
{
"apikey": "90d05439eb6c49939afb1c0e033095c2",
"data": {
"clear": {
"isclear": true
}
},
"token":"ca7faa2295639b8c1c84a30e7da3756a"
}
```
>token计算示例(javascript)
```javascript
var param = {
"apikey": "90d05439eb6c49939afb1c0e033095c2",
"data": {
"clear": {
"isclear": true
}
}
};
var sec = "test123"; //知识库密匙
var dataString = JSON.stringify(param.data); //param.data字符串转换
var token = md5(dataString + sec); //使用MD5计算token值
param.token = token;
```
>请求字段说明
| 字段 | 类型 | 必须 | 说明 |
| --- | --- | --- |
|apikey|字符串|√|图灵机器人APIKEY|
|data|JSON|√|请求参数|
|clear|JSON|×|清空知识库时用到的字段|
|isclear|布尔型|×|为true时**清空知识库**|
|ids|整数数组|×|要删除的知识库数据ID|
|token|字符串|×|**加密模式必填**,计算方式见【token计算示例】|
>[success] 返回示例
``` json
{
"code": 0,
"data": "2"
}
```
>返回字段说明
| 字段 | 类型 | 说明 |
| --- | --- | --- |
|code|整数|状态码|
|data|字符串|成功条数或失败原因的描述|
### **修改机器人名称**
>[success] 请求地址
http://www.tuling123.com/v1/setting/setnickname
>[info] 请求示例
``` json
{
"apikey": "90d05439eb6c49939afb1c0e033095c2",
"data": "新名称",
"token":"ca7faa2295639b8c1c84a30e7da3756a"
}
```
>token计算示例(javascript)
```javascript
var param = {
"apikey": "90d05439eb6c49939afb1c0e033095c2",
"data": "新名称"
};
var sec = "test123"; //知识库密匙
var dataString = JSON.stringify(param.data); //param.data字符串转换
var token = md5(dataString + sec); //使用MD5计算token值
param.token = token;
```
>请求字段说明
| 字段 | 类型 | 必须 | 说明 |
| --- | --- | --- |
|apikey|字符串|√|图灵机器人APIKEY|
|data|字符串|√|新名称|
|token|字符串|×|**加密模式必填**,计算方式见【token计算示例】|
>[success] 返回示例
``` json
{
"code": 0
}
```
>返回字段说明
| 字段 | 类型 | 说明 |
| --- | --- | --- |
|code|整数|状态码|
### 状态码
| code |说明 |
| --- | --- |
| 0 | 请求成功 |
| 101 | 请求内容为空 |
| 201 | 请求超时 |
| 301 | 异常(json格式错误,500错误等) |
| 401 | 账号不合法|
| 403 | 账号上传权限已经用尽|
| 404 | 账号没有知识库接口使用权限|
| 405 |账号开启安全模式,token校验失败|
| 501 |json请求的内容有误|
