智能問答引擎
- 架構(gòu)圖
- 安裝
- 管理控制臺(tái)
- API
- 首頁
- 多輪對(duì)話設(shè)計(jì)器
- 全渠道智能客服
智能問答引擎
智能問答引擎是問答服務(wù)的運(yùn)行環(huán)境,包括可執(zhí)行從多輪對(duì)話設(shè)計(jì)器導(dǎo)出的對(duì)話應(yīng)用、基于常見問題集的知識(shí)庫、意圖識(shí)別和服務(wù)統(tǒng)計(jì)監(jiān)控等模塊。架構(gòu)圖
從部署拓?fù)浣Y(jié)構(gòu)上看,智能問答引擎的架構(gòu)如下圖所示:智能問答引擎架構(gòu)
- superbrain:智能問答引擎核心服務(wù)節(jié)點(diǎn),提供對(duì)外操作的Rest APIs,比如知識(shí)庫管理、多輪對(duì)話管理和監(jiān)控統(tǒng)計(jì)等。
- superbrain admin:智能問答引擎管理控制臺(tái),提供Web管理頁面,方便企業(yè)IT人員或業(yè)務(wù)人員管理智能問答引擎。
- siamese:底層服務(wù),知識(shí)庫搜索時(shí),文檔和查詢條件之間的相關(guān)度計(jì)算模塊。
- Elasticsearch:底層服務(wù),存儲(chǔ)知識(shí)庫數(shù)據(jù)的服務(wù),在檢索時(shí),召回?cái)?shù)據(jù)。
- intent:底層服務(wù),提供意圖識(shí)別能力。
- redis:底層服務(wù),緩存數(shù)據(jù)和做定時(shí)任務(wù)。
- MongoDB:底層服務(wù),superbrain數(shù)據(jù)的持久化數(shù)據(jù)庫。
安裝
獲取服務(wù)鏡像
當(dāng)前,Chatopera智能問答引擎只面向企業(yè)做私有部署,有合作意向的企業(yè)聯(lián)系下面郵箱,進(jìn)行洽談:聯(lián)系方式:info@chatopera.com
洽談內(nèi)容包括:
- 概念驗(yàn)證
- 試用申請(qǐng)
- 其他商業(yè)合作
chatopera.superadmin.docker.v1.tgz
chatopera.superbrain.docker.v1.tgz
chatopera.siamese.docker.v1.tgz
chatopera.mongodb.docker.v1.tgz
chatopera.redis.docker.v1.tgz
chatopera.elasticsearch.docker.v1.tgz
依賴環(huán)境
智能問答引擎是使用docker鏡像進(jìn)行分發(fā)的,所以,只要是docker v12+ 版本支持的操作系統(tǒng)都可以運(yùn)行智能問答引擎服務(wù),對(duì)于更詳細(xì)的操作系統(tǒng)的兼容列表,請(qǐng)參考Docker Community Edition (CE)。硬件方面,Chatopera推薦使用4Core CPU(Intel E5 or better), 16GB Memory,128GB Disk運(yùn)行服務(wù)。
智能問答引擎的docker鏡像可以安裝在docker服務(wù)中,或docker registry中。然后通過容器管理框架,比如kubernetes、Apache Mesos或docker compose。
在本文檔中,介紹使用docker compose的方式部署和管理服務(wù),docker compose是輕量級(jí)的docker服務(wù)編排方案。
- docker 版本
安裝文檔,注意:docker為開源碼程序,本文檔使用社區(qū)版本(Docker CE)。
- docker-compose
安裝文檔。
安裝鏡像
假設(shè)docker已經(jīng)被安裝好,并且其進(jìn)程已經(jīng)啟動(dòng),在命令行終端,執(zhí)行下面命令:docker load < chatopera.superadmin.docker.v1.tgz
docker load < chatopera.superbrain.docker.v1.tgz
docker load < chatopera.siamese.docker.v1.tgz
docker load < chatopera.mongodb.docker.v1.tgz
docker load < chatopera.redis.docker.v1.tgz
docker load < chatopera.elasticsearch.docker.v1.tgz
上述命令執(zhí)行后,查看各個(gè)鏡像已經(jīng)安裝成功,使用命令:
docker images
描述服務(wù)
在命令行終端,進(jìn)入一個(gè)文件路徑,智能問答引擎的服務(wù)的數(shù)據(jù)文件將保存在這個(gè)路徑下,假設(shè)該路徑為 /app/chatbot。- 創(chuàng)建服務(wù)描述文件 docker-compose.yml
version: '2'
services:
superadmin:
image: "registry.chatopera.com/ada/superadmin:develop"
restart: always
environment:
- SUPERBRAIN_API_URL=http://superbrain:8003/api/v1
superbrain:
image: "registry.chatopera.com/pintuan/superbrain:release"
restart: always
environment:
- PORT_NUMBER=8003
- SECRET_HASH=demo
- MONGO_DB_URI=mongodb://mongodb/superbrain-dev
- REDIS_HOST=redis
- REDIS_PORT=6379
- ELASTICSEARCH_HOST=http://elasticsearch:9200
# - ELASTICSEARCH_AUTH=
- ELASTICSEARCH_API_VERSION=5.2
ports:
- "8003:8003"
volumes:
- $PWD/superbrain/logs:/app/logs
command: "node app.js"
depends_on:
- redis
- mongodb
- elasticsearch
- siamese
siamese:
image: "registry.chatopera.com/pintuan/siamese:release"
restart: always
ports:
- "8012:8012"
volumes:
- $PWD/siamese/logs:/logs
environment:
- TXT_LOG_LVL=DEBUG
- SIAMESE_PORT=8012
- SIAMESE_THREADS=24
- SIAMESE_W2V_MODEL_EN=/word2vec/google-news-slim/GoogleNews-vectors-negative300-SLIM.bin.gz
mongodb:
image: "tutum/mongodb:3.2"
restart: always
volumes:
- $PWD/mongodb/data:/data/db
ports:
- "27017:27017"
- "27018:27018"
environment:
- AUTH=no
redis:
image: redis:latest
restart: always
command: redis-server --appendonly yes
volumes:
- $PWD/redis/data:/data
ports:
- "6379:6379"
elasticsearch:
image: "elasticsearch:5.2.0"
restart: always
environment:
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
volumes:
- $PWD/elasticsearch/data:/usr/share/elasticsearch/data
- $PWD/elasticsearch/plugins:/usr/share/elasticsearch/plugins
ports:
- "9200:9200"
- "9300:9300"
ulimits:
memlock:
soft: -1
hard: -1
該描述文件采用的格式是YML,該描述文件聲明了多個(gè)容器服務(wù)和它的配置,比如鏡像、環(huán)境變量、映射的磁盤、日志管理等。拷貝右側(cè)的代碼為/app/chatbot/docker-compose.yml。
關(guān)于服務(wù)編排格式更多說明。
創(chuàng)建磁盤路徑
Docker容器是一種管理計(jì)算資源的方式,它讓開發(fā)運(yùn)營軟件的構(gòu)建、分發(fā)和運(yùn)行做到了標(biāo)準(zhǔn)化。對(duì)于在容器運(yùn)行過程中,不慎被刪除或崩潰,有可能造成數(shù)據(jù)丟失。一個(gè)解決方案是將Docker容器中應(yīng)用產(chǎn)生的數(shù)據(jù)映射到宿主機(jī)器的磁盤上。在命令行終端中, 到/app/chatbot下,執(zhí)行下面的命令:
mkdir -p mongodb/data # 存儲(chǔ) mongodb 數(shù)據(jù)
mkdir -p elasticsearch/data # 存儲(chǔ) elasticsearch 數(shù)據(jù)
mkdir -p elasticsearch/plugins # elasticsearch 插件程序
mkdir -p redis/data # 存儲(chǔ) redis 數(shù)據(jù)
mkdir -p superbrain/logs # 存儲(chǔ) superbrain 日志
啟動(dòng)服務(wù)
完成磁盤路徑的創(chuàng)建后,就可以啟動(dòng)服務(wù)了。在命令行終端中, 到/app/chatbot下,執(zhí)行下面的命令:
docker-compose up -d
這時(shí),命令會(huì)立即退出,因?yàn)樵撁罡嬖Vdocker-compose在后臺(tái)執(zhí)行啟動(dòng)工作,服務(wù)啟動(dòng)需要1-2分鐘,這取決于運(yùn)行服務(wù)的硬件資源。
在命令行終端中, 到/app/chatbot下,執(zhí)行下面的命令查看服務(wù)日志:
docker-compose logs -f
在服務(wù)啟動(dòng)的過程中,也可以看到相應(yīng)日志。
關(guān)于docker-compose up的更多使用介紹,請(qǐng)查看文檔。
在命令行終端中, 到/app/chatbot下,執(zhí)行下面的命令查看服務(wù)啟動(dòng)狀態(tài):
docker-compose ps
在輸出中,為多列描述的各服務(wù)的信息,其中State列為其中狀態(tài),在沒有異常發(fā)生時(shí),各服務(wù)的State均為Up,輸出結(jié)果類似下面:
chatoperaio_elasticsearch_1 /docker-entrypoint.sh elas ... Up 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp
chatoperaio_intent_1 npm start Up 0.0.0.0:8027->8027/tcp
chatoperaio_mongodb_1 /run.sh Up 0.0.0.0:27017->27017/tcp, 0.0.0.0:27018->27018/tcp, 28017/tcp
chatoperaio_redis_1 docker-entrypoint.sh redis ... Up 0.0.0.0:6379->6379/tcp
chatoperaio_siamese_1 /root/venv-py2/bin/python2 ... Up 0.0.0.0:8012->8012/tcp
chatoperaio_superadmin_1 /bin/sh -c npm start Up 3000/tcp
chatoperaio_superbrain_1 node app.js Up 0.0.0.0:8003->8003/tcp
以上代表服務(wù)正常啟動(dòng)了,這時(shí)可以通過訪問智能問答引擎控制臺(tái)來管理聊天機(jī)器人。
http://服務(wù)器IP地址:8032
管理控制臺(tái)
智能問答引擎管理控制臺(tái)是為方便企業(yè)IT人員或業(yè)務(wù)人員管理智能問答引擎而設(shè)計(jì)的,在服務(wù)被正常啟動(dòng)后,管理控制臺(tái)的URL地址是:http://{{IP}}:8032
注意: {{IP}}是docker容器運(yùn)行的宿主機(jī)器IP地址。
使用瀏覽器打開該地址,即可使用管理控制臺(tái),主要功能包括:
- 聊天機(jī)器人增刪改差
- 聊天機(jī)器人監(jiān)控
- 聊天機(jī)器人多輪對(duì)話管理
- 聊天機(jī)器人知識(shí)庫管理
聊天機(jī)器人管理
進(jìn)入控制臺(tái),可以看到所有聊天機(jī)器人并管理。控制臺(tái) 點(diǎn)擊“新建”,創(chuàng)建一個(gè)聊天機(jī)器人。
新建機(jī)器人 新建完成后會(huì)直接進(jìn)入機(jī)器人詳情頁面,默認(rèn)顯示設(shè)置標(biāo)簽,更新機(jī)器人名字,描述等信息。
管理詳情
聊天機(jī)器人監(jiān)控
通過儀表盤可以查看機(jī)器人的使用情況。儀表盤 多輪對(duì)話管理
使用多輪對(duì)話設(shè)計(jì)器 設(shè)計(jì)對(duì)話應(yīng)用并導(dǎo)出的程序包,程序包后綴名是.c66。導(dǎo)入可以看到對(duì)話列表,也可以設(shè)置各個(gè)對(duì)話的狀態(tài)。
多輪對(duì)話 多輪對(duì)話的函數(shù)和環(huán)境變量可以在這里查看和設(shè)置。
環(huán)境變量4 同時(shí),也可以查看多輪對(duì)話的腳本。
查看腳本 點(diǎn)擊“邏輯”,查看聊天機(jī)器人的思維邏輯導(dǎo)圖。
邏輯 知識(shí)庫管理
知識(shí)庫包括問答對(duì)和近義詞,問答對(duì)支持批量導(dǎo)入,導(dǎo)入文件格式必須是UTF-8編碼的CSV文件。
該CSV文件的每一行內(nèi)容格式為: 是否啟用,標(biāo)準(zhǔn)問,答案,擴(kuò)展問1,擴(kuò)展問2,擴(kuò)展問3
CSV文件示例
true,錢款數(shù)據(jù)在哪查,微信商戶支付平臺(tái)里
false,怎么計(jì)算中獎(jiǎng)呢,無法計(jì)算,中獎(jiǎng)計(jì)算方法
true,沒有二維碼,刷新當(dāng)前頁,看不到二維碼
常見問題 在問答對(duì)管理頁面,也支持導(dǎo)出問答對(duì)為CSV文件,檢索問答對(duì)等操作。
編輯一個(gè)問答對(duì)的標(biāo)準(zhǔn)問、擴(kuò)展問、回復(fù)和狀態(tài)。
問題編輯 為提高準(zhǔn)確性,支持自定義近義詞。
近義詞
API
智能問答引擎與其他服務(wù)集成的方式是暴露出來的Rest API接口,接口可以分為以下幾類:資源 | 描述 | 路徑前綴 |
聊天機(jī)器人 | 對(duì)象的增刪改查 | /api/v1/chatbot |
多輪對(duì)話 | 查詢,導(dǎo)入和狀態(tài)管理 | /api/v1/chatbot/:ChatbotID/conversation |
多輪對(duì)話 | 問答的使用情況統(tǒng)計(jì)數(shù)據(jù) | /api/v1/chatbot/:chatbotID/conversation/query/counts |
知識(shí)庫FAQ問答對(duì) | 增刪改查和狀態(tài)管理 | /api/v1/chatbot/:chatbotID/faq/database |
知識(shí)庫近義詞 | 增刪改查 | /api/v1/chatbot/:ChatbotID/faq/synonyms |
知識(shí)庫 | 問答的使用情況統(tǒng)計(jì)數(shù)據(jù) | /api/v1/chatbot/:chatbotID/faq/query/counts |
意圖識(shí)別 | 分析接口 | /api/v1/chatbot/:ChatbotID/intent/parse |
應(yīng)用健康 | 狀態(tài)查詢接口 | /ping |
基本規(guī)范
在Rest API接口中,請(qǐng)求包括協(xié)議(http/https),IP地址(Host),HTTP頭字段(Headers),HTTP報(bào)文主體(Body 可選)。- 請(qǐng)求(Request)
Host: {{IP}}
Headers: Content-Type application/json
注意: 1. {{變量}}代表變量; 2. {{IP}}代表服務(wù)運(yùn)行的宿主機(jī)器的IP地址。
- 響應(yīng)(Response)
{
"rc": 0,
"data": ...
}
其中,rc代表請(qǐng)求是否被滿足,0代表滿足;rc非0時(shí),代表有異常,不同的異常類型使用不同的數(shù)字,在每個(gè)API中介紹。
異常返回的一般形式:
{
"rc": 非0的正整數(shù),
"error": ...,
"msg": ...
}
POST /api/v1/chatbot/:ChatbotID
cURL:創(chuàng)建聊天機(jī)器人curl --request POST \
--url 'http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}}' \
--header 'Content-Type: application/json' \
--data '{
"name": "小叮當(dāng)",
"primaryLanguage": "zh_CN"
}'
創(chuàng)建聊天機(jī)器人
BODY
{"name": "小叮當(dāng)",
"primaryLanguage": "zh_CN"
}
字段 | 必須 | 類型 | 描述 |
chatbotID | 是 | string | 機(jī)器人的唯一ID,是以字母開始的由[a-zA-Z0-9_]組成的字符串。 |
name | 是 | string | 機(jī)器人的名稱。 |
primaryLanguage | 是 | string | 機(jī)器人的語言,現(xiàn)在支持兩個(gè)選項(xiàng):["zh_CN", "en_US"],分別代表中文和英文。 |
description | 否 | string | 機(jī)器人的描述 |
成功返回
{"rc": 0,
"data": {
"chatbotID": "{{chatbotID}}",
"name": "小叮當(dāng)",
"fallback": "我不明白您的意思。",
"description": "智能問答和對(duì)話任務(wù)",
"welcome": "你好!我是機(jī)器人客服。",
"primaryLanguage": "zh_CN"
}
}
返回字段說明:
fallback:聊天機(jī)器人的兜底回復(fù)。
description:聊天機(jī)器人的描述。
welcome:歡迎語。
異常返回
{"rc":2,
"error":"already exists."
}
返回字段說明:
rc:非0正整數(shù)代表不同的異常類型,比如,當(dāng)前rc是2,異常描述為“already exists.”,說明該{{chatbotID}}已經(jīng)存在了。
PUT /api/v1/chatbot/:ChatbotID
cURL:更新聊天機(jī)器人curl -X PUT \
http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}} \
-H 'Content-Type: application/json' \
-d '{
"fallback": "我不能理解您的意思。",
"description": "聊天機(jī)器人",
"welcome": "我的特長是聊天。"
}'
更新聊天機(jī)器人
BODY
{"fallback": "我不能理解您的意思。",
"description": "聊天機(jī)器人",
"welcome": "我的特長是聊天。"
}
字段 | 必須 | 類型 | 描述 |
fallback | 否 | string | 機(jī)器人兜底回復(fù),在多輪對(duì)話查詢沒有匹配到回復(fù)時(shí)使用。 |
description | 否 | string | 描述該機(jī)器人。 |
welcome | 否 | string | 歡迎語,保留字段,暫時(shí)未使用。 |
成功返回
{"rc": 0,
"data": {
"chatbotID": "{{chatbotID}}",
"fallback": ...,
"description": ...,
"welcome": ...
}
}
異常返回
{"rc": 1,
"error": ...
}
返回字段說明:
rc為正整數(shù)時(shí),代表異常,異常描述為error。
GET /api/v1/chatbot/:ChatbotID
cURL:獲取聊天機(jī)器人信息curl -X GET \
http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}} \
-H 'Content-Type: application/json'
獲取聊天機(jī)器人信息
BODY
null成功返回
{"rc": 0,
"data": {
"chatbotID": "{{chatbotID}}",
"name": "小叮當(dāng)",
"fallback": "我不明白您的意思。",
"description": "智能問答和對(duì)話任務(wù)",
"welcome": "你好!我是機(jī)器人客服。",
"primaryLanguage": "zh_CN"
}
}
異常返回
{"rc": 3,
"error": "not exist."
}
返回字段說明:
rc為正整數(shù)時(shí),代表異常,異常描述為error。
GET /api/v1/chatbot
cURL:獲取聊天機(jī)器人列表curl -X GET \
'http://{{IP}}:8003/api/v1/chatbot?sortby=-created&q={"chatbotID": "department_1"}' \
-H 'Content-Type: application/json'
獲取聊天機(jī)器人列表
QUERY
支持在URL中添加query信息來查詢機(jī)器人和翻頁等操作,比如 /api/v1/chatbot?page=1&limit=10&fields=chatbotID name&q={"name": "test"},各參數(shù)介紹如下:屬性 | 類型 | 描述 | 默認(rèn)值 | 示例 |
limit | number | 返回本頁數(shù)據(jù)的條數(shù) | 100 | 10 |
page | number | 返回哪一頁(可根據(jù)total進(jìn)行判斷) | 1 | 2 |
fields | string | 返回哪些字段 | 除_id 和 __v之外的所有字段 | chatbotID name |
sortby | string | 按照哪個(gè)字段進(jìn)行排序 | 空 | -created (按照 created 降序) |
q | string | 按照字段查詢 | 空 | {"name": "test"} |
BODY
null成功返回
{"total": 1,
"rc": 0,
"current_page": 1,
"total_page": 1,
"data": [
{
"name": "小叮當(dāng)",
"chatbotID": "{{chatbotID}}",
"primaryLanguage": "zh_CN",
"fallback": "我不明白您的意思。",
"welcome": "你好!我是機(jī)器人客服。",
"description": "智能問答和對(duì)話任務(wù)"
},
...
]
}
返回字段說明:
total代表聊天機(jī)器人數(shù)量。
current_page代表當(dāng)前頁,total_page代表總頁數(shù)。
data是聊天機(jī)器人數(shù)據(jù)。
異常返回
{"rc": 1,
"error": ...
}
返回字段說明:
rc為正整數(shù)時(shí),代表異常,異常描述為error。
DELETE /api/v1/chatbot/:ChatbotID
cURL:刪除一個(gè)聊天機(jī)器人curl -X DELETE \
http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}} \
-H 'Content-Type: application/json' \
刪除一個(gè)聊天機(jī)器人
BODY
null成功返回
{"rc": 0,
"data": {
"message": "done."
}
}
異常返回
{"rc": 1,
"error": ...
}
返回字段說明:
rc為正整數(shù)時(shí),代表異常,異常描述為error。
POST /api/v1/chatbot/:ChatbotID/faq/database
cURL:創(chuàng)建問答對(duì)curl -X POST \
http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}}/faq/database \
-H 'Content-Type: application/json' \
-d '{
"post": "怎么開通微信支付?",
"reply": "登錄微信公眾號(hào)平臺(tái),點(diǎn)擊左側(cè)微信支付菜單欄,按照開通步驟開通微信支付",
"enabled": true
}'
創(chuàng)建問答對(duì)
BODY
{"post": "怎么開通微信支付?",
"reply": "登錄微信公眾號(hào)平臺(tái),點(diǎn)擊左側(cè)微信支付菜單欄,按照開通步驟開通微信支付",
"enabled": true
}
字段 | 必須 | 類型 | 描述 |
post | 是 | string | 問答對(duì)的問題,也稱“標(biāo)準(zhǔn)問” |
reply | 是 | string | 問題對(duì)應(yīng)的回復(fù) |
enabled | 是 | boolean | 是否“啟用”,啟用代表該問答對(duì)在檢索時(shí)被使用;否則不被檢索 |
成功返回
{"rc": 0,
"data": {
"id": "{{docId}}}"
}
}
返回字段說明:
docId代表該問答對(duì)的唯一標(biāo)識(shí)。
異常返回
{"rc": 3,
"error": ...
}
返回字段說明:
rc為正整數(shù)時(shí),代表異常,異常描述為error。
GET /api/v1/chatbot/:ChatbotID/faq/database/:docId
cURL:根據(jù)文檔Id查詢問答對(duì)詳情curl -X GET \
http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}}/faq/database/{{docId}} \
-H 'Content-Type: application/json'
根據(jù)文檔Id查詢問答對(duì)詳情
BODY
null成功返回
{"rc": 0,
"data": {
"id": "{{docId}}",
"post": "怎么開通微信支付?",
"reply": "登錄微信公眾號(hào)平臺(tái),點(diǎn)擊左側(cè)微信支付菜單欄,按照開通步驟開通微信支付",
"enabled": true
}
}
異常返回
{"rc": 3,
"error": {
"msg": "Not Found"
}
}
返回字段說明:
rc為正整數(shù)時(shí),代表異常,異常描述為error。
PUT /api/v1/chatbot/:ChatbotID/faq/database/:docId
cURL:根據(jù)文檔ID更新問答對(duì)curl -X PUT \
http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}}/faq/database/{{docId}} \
-H 'Content-Type: application/json' \
-d '{
"post": "怎么開通微信支付?",
"reply": "登錄微信公眾號(hào)平臺(tái),點(diǎn)擊左側(cè)微信支付菜單欄,按照開通步驟開通微信支付",
"enabled": true
}'
根據(jù)文檔ID更新問答對(duì)
BODY
{"post": "怎么開通微信支付?",
"reply": "登錄微信公眾號(hào)平臺(tái),點(diǎn)擊左側(cè)微信支付菜單欄,按照開通步驟開通微信支付",
"enabled": true
}
字段 | 必須 | 類型 | 描述 |
post | 否 | string | 問答對(duì)的問題,也稱“標(biāo)準(zhǔn)問” |
reply | 否 | string | 問題對(duì)應(yīng)的回復(fù) |
enabled | 否 | boolean | 是否“啟用”,啟用代表該問答對(duì)在檢索時(shí)被使用;否則不被檢索 |
成功返回
{"rc": 0,
"data": {
"id": "{{docId}}"
}
}
異常返回
{"rc": 3,
"error": {
"msg": "Not Found"
}
}
返回字段說明:
rc為正整數(shù)時(shí),代表異常,異常描述為error。
DELETE /api/v1/chatbot/:ChatbotID/faq/database/:docId
cURL:根據(jù)文檔ID刪除問答對(duì)curl -X DELETE \
http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}}/faq/database/{{docId}} \
-H 'Content-Type: application/json'
根據(jù)文檔ID刪除問答對(duì)
BODY
null成功返回
{"rc": 0,
"message": "done"
}
異常返回
{"rc": 3,
"error": {
"msg": "Not Found"
}
}
返回字段說明:
rc為正整數(shù)時(shí),代表異常,異常描述為error。
GET /api/v1/chatbot/:ChatbotID/faq/database
cURL:查詢問答對(duì)列表,可根據(jù)字段查詢,支持分頁curl -X GET \
'http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}}/faq/database?limit=30' \
-H 'Content-Type: application/json'
查詢問答對(duì)列表,可根據(jù)字段查詢,支持分頁
QUERY
在url中,支持使用檢索條件,比如 /api/v1/chatbot/{{chatbotID}}/faq/database?page=1&limit=10,各參數(shù)介紹如下:屬性 | 類型 | 描述 | 默認(rèn)值 | 示例 |
limit | number | 返回本頁數(shù)據(jù)的條數(shù) | 5 | 10 |
page | number | 返回哪一頁(可根據(jù)total進(jìn)行判斷) | 1 | 2 |
BODY
null成功返回
{"total": 354,
"current_page": 1,
"total_page": 12,
"data": [
{
"post": "上架商品就不能修改了是嗎?",
"is_original": true,
"reply": "沒有訂單產(chǎn)生時(shí)可以修改",
"enabled": true,
"id": "{{docId}}"
},
...
]
}
異常返回
{"rc": 3,
"error": {
"msg": "[index_not_found_exception] no such index
}
}
返回字段說明:
rc為正整數(shù)時(shí),代表異常,異常描述為error。
POST /api/v1/chatbot/:chatbotID/faq/database/:docId/extend
cURL:創(chuàng)建擴(kuò)展問curl -X POST \
http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}}/faq/database/{{docId}}/extend \
-H 'Content-Type: application/json' \
-d '{
"post": "怎樣支持微信支付?"
}
'
創(chuàng)建擴(kuò)展問,擴(kuò)展問關(guān)聯(lián)一個(gè)問答對(duì),擴(kuò)展問是標(biāo)準(zhǔn)問的另一種問法。一個(gè)問答對(duì)可以關(guān)聯(lián)多個(gè)擴(kuò)展問。
擴(kuò)展問可以使系統(tǒng)更智能,提高檢索的準(zhǔn)確率。
BODY
{"post": "怎樣支持微信支付?"
}
字段 | 必須 | 類型 | 描述 |
post | 是 | string | 與標(biāo)準(zhǔn)問意思一致的另一種問法,也稱“擴(kuò)展問”。 |
成功返回
{"rc": 0,
"data": {
"id": "{{extendId}}"
}
}
返回字段說明:
extendId是該擴(kuò)展問的唯一標(biāo)識(shí)。
異常返回
{"rc": 1,
"error": ...
}
返回字段說明:
rc為正整數(shù)時(shí),代表異常,異常描述為error。
GET /api/v1/chatbot/:chatbotID/faq/database/:docId/extend
cURL:查詢擴(kuò)展問curl -X GET \
http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}}/faq/database/{{docId}}/extend \
-H 'Content-Type: application/json'
查詢擴(kuò)展問
BODY
null成功返回
{"total": 1,
"current_page": 1,
"total_page": 1,
"data": [
{
"post": "怎樣支持微信支付?",
"is_original": false,
"postId": "{{docId}}",
"enabled": true,
"id": "{{extendId}}"
},
...
],
"rc": 0
}
異常返回
{"rc": 3,
"error": ...
}
返回字段說明:
rc為正整數(shù)時(shí),代表異常,異常描述為error。
PUT /api/v1/chatbot/:chatbotID/faq/database/:docId/extend/:extendId
cURL:更新擴(kuò)展問curl -X PUT \
http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}}/faq/database/{{docId}}/extend/{{extendId}} \
-H 'Content-Type: application/json' \
-d '{
"post": "怎樣支持微信支付?"
}
'
更新擴(kuò)展問
BODY
{"post": "怎樣支持微信支付?"
}
字段 | 必須 | 類型 | 描述 |
post | 是 | string | 與標(biāo)準(zhǔn)問意思一致的另一種問法,也稱“擴(kuò)展問”。 |
成功返回
{"rc": 0,
"data": {
"id": "{{extendId}}"
}
}
返回字段說明:
extendId是該擴(kuò)展問的唯一標(biāo)識(shí)。
異常返回
{"rc": 3,
"error": {
"msg": "Not Found"
}
}
返回字段說明:
rc為正整數(shù)時(shí),代表異常,異常描述為error。
DELETE /api/v1/chatbot/:chatbotID/faq/database/:docId/extend/:extendId
cURL:刪除擴(kuò)展問curl -X DELETE \
http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}}/faq/database/{{docId}}/extend/{{extendId}} \
-H 'Content-Type: application/json'
刪除擴(kuò)展問
BODY
null成功返回
{"rc": 0,
"message": "done"
}
異常返回
{"rc": 3,
"error": ...
}
返回字段說明:
rc為正整數(shù)時(shí),代表異常,異常描述為error。
GET /api/v1/chatbot/:ChatbotID/faq/database/export
cURL:導(dǎo)出問答對(duì)數(shù)據(jù)curl -X GET \
http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}}/faq/database/export \
-H 'Content-Type: application/json'
導(dǎo)出問答對(duì)數(shù)據(jù)
BODY
null成功返回
{"rc": 0,
"data": [
[
true,
"怎么開通微信支付?",
"登錄微信公眾號(hào)平臺(tái),點(diǎn)擊左側(cè)微信支付菜單欄,按照開通步驟開通微信支付",
"如何支持微信支付"
],
...
]
}
返回字段說明:
data是問答對(duì)的所有數(shù)據(jù),每個(gè)元素代表一個(gè)問答對(duì)。 每個(gè)元素又是一個(gè)數(shù)組,按照順序分別代表:[enabled,標(biāo)準(zhǔn)問,回復(fù),0~多個(gè)擴(kuò)展問]。
異常返回
{"rc": 1,
"error": ...
}
返回字段說明:
rc為正整數(shù)時(shí),代表異常,異常描述為error。
POST /api/v1/chatbot/:ChatbotID/faq/synonyms
cURL:創(chuàng)建近義詞curl -X POST \
http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}}/faq/synonyms \
-H 'Content-Type: application/json' \
-d '{
"text": "番茄",
"neighbors": ["西紅柿", "狼桃"]
}'
創(chuàng)建近義詞,近義詞可以進(jìn)一步提高系統(tǒng)的智能水平。
BODY
{"text": "番茄",
"neighbors": ["西紅柿", "狼桃"]
}
字段 | 必須 | 類型 | 描述 |
text | 是 | string | 詞匯 |
neighbors | 是 | [string] | 與text意思相近的詞匯 |
成功返回
{"rc": 0,
"data": {
"text": "番茄",
"chatbot": "{{chatbotID}}",
"neighbors": [
"西紅柿",
"狼桃"
],
"id": "{{synonymsId}}"
}
}
返回字段說明:
synonymsId是該近義詞組的唯一標(biāo)識(shí)。
異常返回
{"rc": 1,
"error": ...
}
返回字段說明:
rc為正整數(shù)時(shí),代表異常,異常描述為error。
GET /api/v1/chatbot/:ChatbotID/faq/synonyms/:synonymsId
cURL:使用synonymsId獲取近義詞詳情curl -X GET \
http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}}/faq/synonyms/{{synonymsId}} \
-H 'Content-Type: application/json'
使用synonymsId獲取近義詞詳情
BODY
null成功返回
{"rc": 0,
"data": {
"text": "番茄",
"neighbors": [
"西紅柿",
"狼桃"
]
}
}
異常返回
{"rc": 1,
"error": ...
}
返回字段說明:
rc為正整數(shù)時(shí),代表異常,異常描述為error。
PUT /api/v1/chatbot/:ChatbotID/faq/synonyms/:synonymsId
cURL:更新近義詞curl -X PUT \
http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}}/faq/synonyms/{{synonymsId}} \
-H 'Content-Type: application/json' \
-d '{
"text": "番茄",
"neighbors": ["西紅柿", "狼桃", "洋柿子"]
}'
更新近義詞
BODY
{"text": "番茄",
"neighbors": ["西紅柿", "狼桃", "洋柿子"]
}
成功返回
{"rc": 0,
"data": {
"text": "番茄",
"neighbors": [
"西紅柿",
"狼桃",
"洋柿子"
]
}
}
異常返回
{"rc": 1,
"error": ...
}
DELETE /api/v1/chatbot/:ChatbotID/faq/synonyms/:synonymsId
cURL:刪除近義詞curl -X DELETE \
http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}}/faq/synonyms/{{synonymsId}} \
-H 'Content-Type: application/json'
刪除近義詞
BODY
null成功返回
{"rc": 0,
"message": "done"
}
異常返回
{"rc": 1,
"error": ...
}
返回字段說明:
rc為正整數(shù)時(shí),代表異常,異常描述為error。
GET /api/v1/chatbot/:ChatbotID/faq/synonyms
cURL:查詢近義詞列表,支持分頁和按字段查詢curl -X GET \
http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}}/faq/synonyms \
-H 'Content-Type: application/json'
查詢近義詞列表,支持分頁和按字段查詢
BODY
null成功返回
{"total": 1,
"rc": 0,
"current_page": 1,
"total_page": 1,
"data": [
{
"text": "番茄",
"chatbot": "{{chatbotID}}",
"neighbors": [
"西紅柿",
"狼桃",
"洋柿子"
],
"id": "{{synonymsId}}"
},
...
]
}
異常返回
{"rc": 1,
"error": ...
}
返回字段說明:
rc為正整數(shù)時(shí),代表異常,異常描述為error。
POST /api/v1/chatbot/:ChatbotID/faq/query
cURL:根據(jù)查詢句子查詢答案, 返回答案列表,并帶有分?jǐn)?shù)curl -X POST \
http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}}/faq/query \
-H 'Content-Type: application/json' \
-d '{
"query": "如何開通微信支付"
}'
根據(jù)查詢句子查詢答案, 返回答案列表,并帶有分?jǐn)?shù)
BODY
{"query": "如何開通微信支付"
}
字段 | 必須 | 類型 | 描述 |
query | 是 | string | 從知識(shí)庫中檢索的目標(biāo) |
成功返回
{"rc": 0,
"data": [
{
"id": "{{docId}}",
"score": 0.647,
"post": "怎么開通微信支付?",
"reply": "登錄微信公眾號(hào)平臺(tái),點(diǎn)擊左側(cè)微信支付菜單欄,按照開通步驟開通微信支付"
}
]
}
返回字段說明:
data是一個(gè)數(shù)組,包含0~多個(gè)問答對(duì),并且按照匹配程度降序,匹配程度就是該問答對(duì)的問題和query的相似度。
相似度是屬于[0-1]區(qū)間的值,越大代表語義越相似。
異常返回
{"rc": 1,
"error": ...
}
返回字段說明:
rc為正整數(shù)時(shí),代表異常,異常描述為error。
POST /api/v1/chatbot/:ChatbotID/faq/click
cURL:記錄FAQ點(diǎn)擊事件curl -X POST \
http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}}/faq/click \
-H 'Content-Type: application/json' \
-d '{
"query": "如何開通微信支付",
"groundtruth": "如何支持微信支付",
"negatives": ["如何支持支付", "怎么取消微信支付"]
}'
記錄FAQ點(diǎn)擊事件:在客服人員點(diǎn)擊建議問時(shí),將訪客的問題和客服點(diǎn)擊的問題記錄下來。
點(diǎn)擊事件具有很重要的價(jià)值:
- 梳理業(yè)務(wù),提高商業(yè)智能;
- 方便統(tǒng)計(jì)系統(tǒng)使用情況;
- 評(píng)估系統(tǒng)準(zhǔn)確率;
- 優(yōu)化系統(tǒng)準(zhǔn)確率,比如訓(xùn)練更好的機(jī)器學(xué)習(xí)模型。
BODY
{"query": "如何開通微信支付",
"groundtruth": "如何支持微信支付",
"negatives": ["如何支持支付", "怎么取消微信支付"]
}
字段 | 必須 | 類型 | 描述 |
query | 是 | string | 原始查詢 |
groundtruth | 是 | string | 準(zhǔn)確答案 |
negatives | 是 | [string] | 被展示為建議答案但是沒有被選中的候選回復(fù) |
成功返回
{"rc": 0,
"message": "done"
}
返回字段說明:
異常返回
{"rc": 1,
"error": ...
}
返回字段說明:
rc為正整數(shù)時(shí),代表異常,異常描述為error。
POST /api/v1/chatbot/:chatbotID/intent/parse
cURL:意圖識(shí)別服務(wù)curl -X POST \
http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}}/intent/parse \
-H 'Content-Type: application/json' \
-d '{
"query": "can I have my cashback",
"clientId": "gmis"
}'
使用機(jī)器學(xué)習(xí)模型,分析意圖和實(shí)體。
BODY
{"query": "我想取錢",
"clientId": "{{clientId}}"
}
字段 | 必須 | 類型 | 描述 |
query | 是 | string | 待被分析意圖的句子 |
clientId | 是 | string | 客戶唯一標(biāo)識(shí),目前意圖識(shí)別模型依賴每個(gè)客戶的數(shù)據(jù),和客戶的業(yè)務(wù)關(guān)系緊密,每個(gè)客戶單獨(dú)制作。 |
成功返回
{"rc": 0,
"data": {
"tag": "{{intentId}}",
"score": 2.515
}
}
返回字段說明:
如果rc為0,但是data中不包含tag和score時(shí),代表程序未能識(shí)別出意圖。
異常返回
{"rc": 1,
"error": ...
}
返回字段說明:
rc為正整數(shù)時(shí),代表異常,異常描述為error。
GET /api/v1/chatbot/:ChatbotId/conversation
cURL:獲得對(duì)話列表curl -X GET \
http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}}/conversation \
-H 'Content-Type: application/json'
獲得對(duì)話列表
BODY
null成功返回
{"rc": 0,
"total": 1,
"current_page": 1,
"total_page": 1,
"data": [
{
"chatbotID": "{{chatbotID}}",
"name": "{{conversationName}}",
"enabled": true,
"id": "{{conversationId}}"
},
...
]
}
返回字段說明:
異常返回
{"rc": 1,
"error": ...
}
返回字段說明:
rc為正整數(shù)時(shí),代表異常,異常描述為error。
GET /api/v1/chatbot/:ChatbotId/conversation/:conversationId
cURL:獲得對(duì)話詳情curl -X GET \
http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}}/conversation/{{conversationId}} \
-H 'Content-Type: application/json' \
獲得對(duì)話詳情
BODY
null成功返回
{"rc": 0,
"data": {
"chatbotID": "{{chatbotID}}",
"name": "course",
"modified": "2018-07-11T09:39:58.349Z",
"created": "2018-07-02T12:02:43.037Z",
"scriptBody": "+ _resolve_course_\n- 您好,我是小云,您的課程顧問,請(qǐng)問您家小孩多大了?\n\n+ 一年級(jí)老師\n- ^get_teachers(1)",
"enabled": true,
"id": "{{conversationId}}"
}
}
返回字段說明:
異常返回
{"rc": 1,
"error": ...
}
返回字段說明:
rc為正整數(shù)時(shí),代表異常,異常描述為error。
PUT /api/v1/chatbot/:ChatbotId/conversation/:conversationId/enable
cURL:使對(duì)話處于"啟用"狀態(tài)curl -X PUT \
http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}}/conversation/{{conversationId}}/enable
使對(duì)話處于"啟用"狀態(tài)
BODY
null成功返回
{"rc": 0,
"data": {
"name": "course",
"chatbotID": "{{chatbotID}}",
"enabled": true,
"id": "{{conversationId}}"
}
}
返回字段說明:
異常返回
{"rc": 1,
"error": ...
}
返回字段說明:
rc為正整數(shù)時(shí),代表異常,異常描述為error。
PUT /api/v1/chatbot/:ChatbotId/conversation/:conversationId/disable
cURL:使對(duì)話處于"禁用"狀態(tài)curl -X PUT \
http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}}/conversation/{{conversationId}}/disable \
使對(duì)話處于"禁用"狀態(tài)
BODY
null成功返回
{"rc": 0,
"data": {
"name": "course",
"chatbotID": "{{chatbotID}}",
"enabled": false,
"id": "{{conversationId}}"
}
}
返回字段說明:
異常返回
{"rc": 1,
"error": ...
}
返回字段說明:
rc為正整數(shù)時(shí),代表異常,異常描述為error。
GET /api/v1/chatbot/:chatbotID/conversation/environment
cURL:獲取環(huán)境變量curl -X GET \
http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}}/conversation/environment \
獲取環(huán)境變量
環(huán)境變量是多輪對(duì)話的在“設(shè)計(jì)階段”和“部署階段”不共享的變量。具體應(yīng)用場(chǎng)景見多輪對(duì)話設(shè)計(jì)器:快速開始。
BODY
null成功返回
{"rc": 0,
"data": {
"USERNAME": "張三"
}
}
返回字段說明:
異常返回
{"rc": 1,
"error": ...
}
返回字段說明:
rc為正整數(shù)時(shí),代表異常,異常描述為error。
PUT /api/v1/chatbot/:chatbotID/conversation/environment
cURL:更新環(huán)境變量curl -X PUT \
http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}}/conversation/environment \
-H 'Content-Type: application/json' \
-d '{
"USERNAME": "李四",
"PASSWORD": "123456"
}'
更新環(huán)境變量
BODY
{"USERNAME": "李四",
"PASSWORD": "123456"
}
成功返回
{"rc": 0,
"msg": "done"
}
返回字段說明:
異常返回
{"rc": 1,
"error": ...
}
返回字段說明:
rc為正整數(shù)時(shí),代表異常,異常描述為error。
POST /api/v1/chatbot/:ChatbotId/conversation/query
cURL:對(duì)話問答查詢curl -X POST \
http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}}/conversation/query \
-H 'Content-Type: application/json' \
-d '{
"fromUserId": "{{uid}}",
"textMessage": "北京今天天氣怎么樣",
"isDebug": false
}'
對(duì)話問答查詢
BODY
{"fromUserId": "{{uid}}",
"textMessage": "北京今天天氣怎么樣",
"isDebug": false
}
成功返回
{"rc": 0,
"data": {
"state": "default",
"createdAt": 1531910247845,
"string": "白天天氣多云,并且空氣濕度偏大,在這種天氣條件下,您會(huì)感到有些悶熱,不很舒適。",
"topicName": "weather",
"subReplies": [],
"logic_is_fallback": false,
"botName": "小叮當(dāng)"
}
}
返回字段說明:
state是一些業(yè)務(wù)需求的約定字段,比如,對(duì)話要完成“用戶認(rèn)證”,那么在完成認(rèn)證后,state會(huì)返回auth_succ;認(rèn)證失敗時(shí),返回auth_fail,該字段可通過對(duì)話腳本設(shè)定。
logic_is_fallback代表該回復(fù)是否是兜底。
topicName代表當(dāng)前機(jī)器人正在聊的話題。
botName代表聊天機(jī)器人的名字。
異常返回
{"rc": 1,
"error": ...
}
返回字段說明:
rc為正整數(shù)時(shí),代表異常,異常描述為error。
POST /api/v1/chatbot/:ChatbotId/conversation/droplet/import
cURL:導(dǎo)入對(duì)話應(yīng)用文件ZIPFILE=小叮當(dāng)-1.0.0-conversations.c66
set -x
curl -i -X POST -H "Content-Type: multipart/form-data" \
-F "droplet=@$ZIPFILE" \
-F "USERNAME=李四" \
-F "PASSWORD=123456" \
http://{{IP}}:8003/api/v1/chatbot/{{chatbotID}}/conversation/droplet/import
導(dǎo)入對(duì)話應(yīng)用文件
對(duì)話應(yīng)用文件示例詳見天氣查詢機(jī)器人:多輪對(duì)話示例程序。
BODY
multipart表單,環(huán)境變量使用-F設(shè)定鍵值對(duì),對(duì)話應(yīng)用文件設(shè)置droplet的文件路徑,參考cURL樣例程序。成功返回
{"rc": 0,
"data": {
"msg": "Import is done successfully."
}
}
異常返回
{"rc": 1,
"error": ...
}
返回字段說明:
rc為正整數(shù)時(shí),代表異常,異常描述為error。
GET /ping
cURL:獲取應(yīng)用健康狀態(tài)curl -X GET \
http://{{IP}}:8003/ping \
-H 'Content-Type: application/json'
獲取應(yīng)用健康狀態(tài)
BODY
null成功返回
{"timestamp": 1531918165514,
"uptime": 8783.43,
"application": {
"name": "superbrain",
"version": "1.0.0",
"pid": 1,
"title": "node",
"argv": [
"/usr/local/bin/node",
"/app/app.js"
],
"versions": {
"http_parser": "2.8.0",
"node": "8.11.3",
"v8": "6.2.414.54",
"uv": "1.19.1",
"zlib": "1.2.11",
"ares": "1.10.1-DEV",
"modules": "57",
"nghttp2": "1.32.0",
"napi": "3",
"openssl": "1.0.2o",
"icu": "60.1",
"unicode": "10.0",
"cldr": "32.0",
"tz": "2017c"
}
},
"resources": {
"memory": {
"rss": 369848320,
"heapTotal": 130859008,
"heapUsed": 108874240,
"external": 18007788
},
"loadavg": [
0.35302734375,
0.28759765625,
0.2412109375
],
"cpu": [
{
"model": "Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz",
"speed": 2500,
"times": {
"user": 1586270600,
"nice": 0,
"sys": 1050236500,
"idle": 21709890800,
"irq": 0
}
},
{
"model": "Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz",
"speed": 2500,
"times": {
"user": 1562807900,
"nice": 0,
"sys": 1015181800,
"idle": 21782348900,
"irq": 0
}
}
],
"disk": [
{
"filesystem": "overlay",
"size": 123721700,
"used": 94808660,
"available": 22605316,
"capacity": 0.81,
"mount": "/"
},
{
"filesystem": "tmpfs",
"size": 65536,
"used": 0,
"available": 65536,
"capacity": 0,
"mount": "/dev"
},
{
"filesystem": "tmpfs",
"size": 8216392,
"used": 0,
"available": 8216392,
"capacity": 0,
"mount": "/sys/fs/cgroup"
},
{
"filesystem": "/dev/vda1",
"size": 123721700,
"used": 94808660,
"available": 22605316,
"capacity": 0.81,
"mount": "/app/logs"
},
{
"filesystem": "shm",
"size": 65536,
"used": 0,
"available": 65536,
"capacity": 0,
"mount": "/dev/shm"
},
{
"filesystem": "tmpfs",
"size": 8216392,
"used": 0,
"available": 8216392,
"capacity": 0,
"mount": "/sys/firmware"
}
],
"nics": {
"lo": [
{
"address": "127.0.0.1",
"netmask": "255.0.0.0",
"family": "IPv4",
"mac": "00:00:00:00:00:00",
"internal": true,
"cidr": "127.0.0.1/8"
}
],
"eth0": [
{
"address": "172.19.0.15",
"netmask": "255.255.0.0",
"family": "IPv4",
"mac": "02:42:ac:13:00:0f",
"internal": false,
"cidr": "172.19.0.15/16"
}
]
}
},
"system": {
"arch": "x64",
"platform": "linux",
"type": "Linux",
"release": "4.4.0-62-generic",
"hostname": "29866b45ce71",
"uptime": 2453892,
"cores": 2,
"memory": 16827174912
}
}
返回字段說明:
描述應(yīng)用和操作系統(tǒng)的各種數(shù)據(jù)。