您當(dāng)前的位置是:  首頁 > 新聞 > 國內(nèi) >
 首頁 > 新聞 > 國內(nèi) >

Chatopera 智能問答引擎

2018-08-01 14:05:54   作者:   來源:CTI論壇   評(píng)論:0  點(diǎn)擊:


智能問答引擎

智能問答引擎

智能問答引擎是問答服務(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ù)庫。
在企業(yè)使用過程中,只需要訪問superbrain的REST APIs和superbrain admin的Web頁面,底層服務(wù)的接口并不需要直接訪問。同時(shí),上面的七個(gè)服務(wù),都是以docker鏡像的形式分發(fā),以docker容器的形式運(yùn)行。

安裝

獲取服務(wù)鏡像

當(dāng)前,Chatopera智能問答引擎只面向企業(yè)做私有部署,有合作意向的企業(yè)聯(lián)系下面郵箱,進(jìn)行洽談:
聯(lián)系方式:info@chatopera.com
洽談內(nèi)容包括:
  • 概念驗(yàn)證
  • 試用申請(qǐng)
  • 其他商業(yè)合作
當(dāng)您獲得智能問答引擎的鏡像后,可以看到下面的文件:
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 Mesosdocker compose。
在本文檔中,介紹使用docker compose的方式部署和管理服務(wù),docker compose是輕量級(jí)的docker服務(wù)編排方案。
  • docker 版本
Docker version 18.03.1-ce, build 9ee9f40
安裝文檔,注意:docker為開源碼程序,本文檔使用社區(qū)版本(Docker CE
  • docker-compose
docker-compose version 1.21.1, build 5a3f1a3
安裝文檔。

安裝鏡像

假設(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
docker-compose.yml:編排服務(wù)的描述文件
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)
在智能問答引擎服務(wù)啟動(dòng)后,通過 http 協(xié)議處理請(qǐng)求,如無特殊說明,每個(gè)接口都有如下設(shè)置:
Host: {{IP}}
Headers: Content-Type application/json
注意: 1. {{變量}}代表變量; 2. {{IP}}代表服務(wù)運(yùn)行的宿主機(jī)器的IP地址。
  • 響應(yīng)(Response)
如無特殊說明,返回值都是JSON數(shù)據(jù)格式,在正常返回下,格式符合如下形式:
{
  "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í)未使用。
對(duì)于機(jī)器人的chatbotID,name和primaryLanguage都是在創(chuàng)建時(shí)設(shè)定的,設(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à)值:
  1. 梳理業(yè)務(wù),提高商業(yè)智能;
  2. 方便統(tǒng)計(jì)系統(tǒng)使用情況;
  3. 評(píng)估系統(tǒng)準(zhǔn)確率;
  4. 優(yōu)化系統(tǒng)準(zhǔn)確率,比如訓(xùn)練更好的機(jī)器學(xué)習(xí)模型。
所以,該接口應(yīng)保證盡可能調(diào)用。

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)用場景見多輪對(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ù)。
【免責(zé)聲明】本文僅代表作者本人觀點(diǎn),與CTI論壇無關(guān)。CTI論壇對(duì)文中陳述、觀點(diǎn)判斷保持中立,不對(duì)所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請(qǐng)讀者僅作參考,并請(qǐng)自行承擔(dān)全部責(zé)任。

專題