### 數據編碼
> 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請求的內容有誤|