本文說明規則對象的結構。
推薦先在前端頁面進行操作并用瀏覽器提供開發人員工具獲取請求參數,以此為模板構建您希望的對象結構。
規則種類
規則分為兩類,普通質檢規則和流程質檢規則,為方便說明,用規則代指普通質檢規則,用流程代指流程質檢規則,下面會分開介紹。
普通質檢規則
普通質檢規則體系分為規則、條件、算子三級,具體含義參考名詞解釋。
一個規則包含多個條件,一個條件對應一個算子。
流程質檢規則
新版智能對話分析新增的類型,具體含義參考名詞解釋。
由于節點分三種,開始節點(特殊忽略)、對話節點和判斷節點。體系可以分為:
流程、對話節點、條件、算子。
流程、判斷節點、判斷條件。
一個流程對應多個節點,一個對話節點對應一個條件,一個條件對應一個算子。一個判斷節點對應多個判斷條件。
RulesInfo
規則集合信息,getRuleById等接口會涉及該結構
規則
說明
data 屬性說明:
屬性 | 值類型 | 示例值 | 說明 |
conditions | Array | [] | 所有條件的配置信息,詳見下方conditions屬性說明 |
rules | Array | [] | 所有規則的配置信息,詳見下方rules屬性說明 |
conditions屬性說明:
屬性 | 值類型 | 示例值 | 說明 |
cid | String | "a" | 字母格式的條件ID,用于頁面顯示。 |
id | Long | 1233 | 條件id。 |
rid | String | "232" | 規則id |
check_range | Struct | 具體內容參見下方的 條件檢查范圍CheckRange描述 | 條件的檢查范圍。 |
operators | List | 具體內容參見下方的 條件所包含算子OperatorBasicInfo描述 | 條件包含的算子。 |
lambda | String | "1222" | 條件中算子的邏輯關系。 |
條件檢查范圍CheckRange描述:
屬性 | 值類型 | 示例值 | 描述 |
role | String | 客服 | 適用角色,可能值:“客服”;“客戶”;“所有 ”。 |
anchor | Anchor | 具體內容參見下方的 前置條件Anchor描述 | 前置條件詳細信息。 |
range | String | {"from": 1, "to": 3} | 檢測范圍 |
前置條件Anchor描述:
屬性 | 值類型 | 示例值 | 描述 |
cid | String | "a" | 前置條件的條件id(cid),用于確定anchor的條件。 |
location | String | AROUND | 用來指定前置條件命中時,當前條件檢測前置條件命中句子的之前XX句、之后XX句、前后部分句子、當前句,可能值:BEFORE(前置條件命中句子之前)、AROUND(前置條件命中位置前后)、AFTER(前置條件命中句子之后)、CURRENT(前置條件命中的當前句)。通過該字段限定一個范圍,然后配合上面的range中的from、to來指定具體的句子。 |
hit_time | Integer | 3 | 前置條件的命中次數,返回值有以下三種情況:1. 正整數1~N代表前置條件第一(N)次命中; 2. 0代表前置條件每次命中; 3. -1代表前置條件任意一次命中。 |
條件所包含算子OperatorBasicInfo描述:
屬性 | 值類型 | 示例值 | 描述 |
oid | String | "1222" | 算子的ID |
name | String | 我是算子名稱 | 算子名稱、描述。 |
type | String | INCLUDE_KEYWORDS | 算子類型,詳見新增規則。 |
param | Param | 算子表達式具體內容,詳見新增規則。 |
rules屬性說明:
屬性 | 值類型 | 示例值 | 描述 |
rid | String | 1 | 規則的ID |
lambda | String | a&&b&&c | 規則中條件的邏輯關系 |
business | List | 具體內容參見下方的 規則所屬業務字段BusinessCategoryBasicInfo描述 | 規則的適用業務。 |
type | Integer | 1 | 規則的類型 |
triggers | List | ["a","b","c"] | 規則中需要返回內容的條件ID(cid)。 |
name | String | "用戶可能要投訴" | 規則名稱。 |
scoreSubId | Integer | 3678 | 規則綁定的評分項子項的id |
ruleScoreType | Integer | 3 | 該規則所綁定的評分項是否進行計分(1:不計分 3:計分)。 |
level | Integer | 2 | 重要程度: 0(重度違規);1(中度違規);2(輕度違規) |
fullCycle | Integer | 1 | 設置規則的生效時間的類型: 0(特定周期生效,特定的時間范圍內生效);1(全周期生效,始終生效) |
effectiveStartTime | Date | 1640620800000 | 規則生效時間為特定周期生效時的生效開始時間。 |
effectiveEndTime | Date | 1640620800000 | 規則生效時間為特定周期生效時的生效結束時間。 |
autoReview | Integer | 1 | 是否自動審核,可能值:1(否);3(是) |
comments | String | 檢測是否出現了禁用語 | 規則的備注信息。 |
qualityCheckType | Integer | 0 | 是否為實時質檢規則,可能值:0(否);1(是) |
businessCategoryBasicInfoList屬性說明:
屬性 | 值類型 | 示例值 | 說明 |
bid | Long | 574599480 | 適用業務id |
name | String | 售前業務 | 使用業務名稱 |
例子-規則
{
"data": {
"conditions": [
{
"check_range": {},
"cid": "a",
"id": 92495,
"lambda": "93289",
"operators": [
{
"id": 93289,
"oid": "93289",
"param": {
"contextChatMatch": false,
"in_sentence": false,
"keywordMatchSize": 1,
"keywords": [
"你好"
],
"near_dialogue": false,
"useEasAlgorithm": false
},
"type": "HIT_ANY_KEYWORDS"
}
],
"rid": "30526"
},
{
"check_range": {},
"cid": "b",
"id": 92496,
"lambda": "93290",
"operators": [
{
"id": 93290,
"oid": "93290",
"param": {
"average": false,
"minWordSize": 4,
"near_dialogue": false,
"useEasAlgorithm": false,
"velocity": 0.005,
"velocityInMint": 300
},
"type": "SPEECH_SPEED_CHECK"
}
],
"rid": "30526"
}
],
"count": 1,
"rules": [
{
"autoReview": 1,
"comments": "這是一個規則Demo!",
"configType": 1,
"createEmpid": "374915893923532146",
"createTime": 1663654165000,
"expectedScore": 0.7,
"fullCycle": 1,
"isDelete": 0,
"isOnline": 0,
"lambda": "a&&b",
"lastUpdateEmpid": "374915893923532146",
"lastUpdateTime": 1663654165000,
"level": 2,
"meet": 1,
"name": "規則Demo",
"qualityCheckType": 0,
"rid": "30526",
"ridLong": 30526,
"ruleCategoryName": "服務規范",
"ruleScoreType": 3,
"ruleType": 1,
"scoreNum": 10,
"scoreNumType": 0,
"scoreRuleHitType": 0,
"scoreType": 3,
"status": 0,
"targetType": 10,
"taskFlowId": -1,
"triggers": [
"a",
"b"
],
"type": 1
}
]
}
}
流程
說明
data 屬性說明:
屬性 | 值類型 | 示例值 | 說明 |
conditions | Array | [] | 對于流程是空數組。 |
rules | Array | [] | 所有規則的配置信息,詳見下方rules屬性說明 |
rules 屬性說明:
屬性 | 值類型 | 示例值 | 說明 |
graphFlow | Object | 510 | 流程信息,詳見下方graphFlow屬性說明 |
... | ... | ... | 其他同規則說明。 |
graphFlow 屬性說明:
屬性 | 值類型 | 示例值 | 說明 |
id | Integer | 510 | 流程id |
showProperties | Json | 保存流程圖的顯示參數 | |
skipWhenFirstSessionNodeMiss | Boolean | false | 當首個會話節點未命中時是否跳出,默認為false |
nodes | Array[] | [] | 節點信息,詳見下方nodes屬性說明 |
nodes 屬性說明:
屬性 | 值類型 | 示例值 | 說明 |
id | Integer | 30527 | 節點id |
rid | Integer | 30527 | 同id |
index | Integer | 1 | 索引id |
name | String | 開始 | 節點名稱 |
nextNodes | Array | 下個節點,詳見下方nextNode屬性說明 | |
nodeType | String | startNode | 節點類型 startNode(開始節點) judgmentNode(判斷節點) conditionNode(對話節點) |
content | Json | 內部用,忽略 | |
properties | Object | 對話節點用,記錄條件信息,詳見下方properties屬性說明 | |
conditions | Object | 對話節點用,記錄條件信息,結構同規則 |
nextNode 屬性說明:
屬性 | 值類型 | 示例值 | 說明 |
nextNodeId | Integer | 30528 | 下一個節點的節點Id |
name | String | 判斷節點用,條件分支 | |
situation | Object | 判斷節點用,記錄判斷條件 | |
situation.conditionGroup | Array | 條件組,詳見下方conditions屬性說明 | |
situation.type | String | or | 各個條件組之間的關系,“or”或者“and” |
conditions 屬性說明:
屬性 | 值類型 | 示例值 | 說明 |
dataType | Integer | 30527 | 節點id |
field | String | system.customerServiceName | 判斷字段Id |
fieldType | Integer | 1 | 字段數據來源類型: 1:系統預定義字段 2:傳參質檢字段 |
symbol | Integer | 邏輯表達式 | |
value | String | 匹配值 |
properties 屬性說明:
屬性 | 值類型 | 示例值 | 說明 |
lambda | String | a | 條件的lambda表達式 |
role | String | agent | 角色 |
ruleScoreType | Integer | 1 | 是否計分: 1(不計分);3(計分) |
scoreNum | Integer | 計分值 | |
scoreNumType | Integer | 計分類型: 0(加減分);1(一次性得分); | |
scoreRuleHitType | Integer | 命中計分類型: 0:(命中計分);1(不命中計分) | |
scoreType | Integer | 加減分:1(加分);3(減分)默認為1 | |
triggers | Array<String> | 涉及的算子 | |
autoReview | Integer | 自動審核: 1(不自動);3(自動) | |
checkMoreSize | Integer | 最多檢測N句 |
例子-流程
{
"data": {
"conditions": [],
"count": 1,
"rules": [
{
"autoReview": 1,
"configType": 1,
"createEmpid": "374915893923532146",
"createTime": 1663656667000,
"expectedScore": 0.7,
"fullCycle": 1,
"graphFlow": {
"id": 510,
"nodes": [
{
"id": 30527,
"index": 1,
"name": "開始",
"nextNodes": [
{
"nextNodeId": 30528
}
],
"nodeType": "startNode",
"rid": 30527
},
{
"content": "{\"nodeId\":\"b58a11db-dda4-4567-91fb-f0704f83d6ce\"}",
"id": 30528,
"index": 3,
"name": "判斷節點A",
"nextNodes": [
{
"name": "條件分支A",
"nextNodeId": 30529,
"situation": {
"conditionGroup": [
{
"conditions": [
{
"dataType": 2,
"field": "system.customerServiceName",
"fieldType": 1,
"symbol": 1,
"value": "[\"ServiceA\"]"
}
],
"type": "and"
},
{
"conditions": [
{
"dataType": 2,
"field": "system.customerServiceName",
"fieldType": 1,
"symbol": 1,
"value": "[\"1\"]"
}
],
"type": "and"
}
],
"type": "or"
}
},
{
"name": "不滿足以上所有條件",
"nextNodeId": 30530
}
],
"nodeType": "judgmentNode",
"rid": 30528
},
{
"conditions": [
{
"check_range": {
"role": "客服"
},
"cid": "a",
"id": 92497,
"lambda": "93291",
"operators": [
{
"id": 93291,
"oid": "93291",
"param": {
"contextChatMatch": false,
"in_sentence": false,
"keywordMatchSize": 1,
"keywords": [
"你好"
],
"near_dialogue": false,
"useEasAlgorithm": false
},
"type": "HIT_ANY_KEYWORDS"
}
],
"rid": "30529"
}
],
"content": "{\"nodeId\":\"783ac141-23cf-45b3-a5b0-3864f9e6ddff\"}",
"id": 30529,
"index": 5,
"name": "你好",
"nextNodes": [],
"nodeType": "conditionNode",
"properties": {
"lambda": "a",
"role": "agent",
"ruleScoreType": 1,
"scoreNum": 0,
"scoreNumType": 0,
"scoreRuleHitType": 0,
"scoreType": 1,
"triggers": [
"a"
]
},
"rid": 30529
},
{
"conditions": [
{
"check_range": {
"role": "客服"
},
"cid": "a",
"id": 92498,
"lambda": "93292",
"operators": [
{
"id": 93292,
"oid": "93292",
"param": {
"contextChatMatch": false,
"in_sentence": false,
"keywordMatchSize": 1,
"keywords": [
"再見"
],
"near_dialogue": false,
"useEasAlgorithm": false
},
"type": "HIT_ANY_KEYWORDS"
}
],
"rid": "30530"
}
],
"content": "{\"nodeId\":\"749ac2d3-c418-4672-a018-673c4e51123d\"}",
"id": 30530,
"index": 6,
"name": "再見",
"nextNodes": [],
"nodeType": "conditionNode",
"properties": {
"lambda": "a",
"role": "agent",
"ruleScoreType": 1,
"scoreNum": 0,
"scoreNumType": 0,
"scoreRuleHitType": 0,
"scoreType": 1,
"triggers": [
"a"
]
},
"rid": 30530
}
],
"showProperties": "{\"cells\":[{\"shape\":\"dag-edge\",\"attrs\":{\"line\":{\"strokeDasharray\":\"\"}},\"id\":\"6d7796a9-f6e1-4e53-a384-16a738581c54\",\"zIndex\":-1,\"source\":{\"cell\":\"b58a11db-dda4-4567-91fb-f0704f83d6ce\",\"port\":\"f3707b26-9674-4411-8744-0687bf4a1a4e\"},\"target\":{\"cell\":\"783ac141-23cf-45b3-a5b0-3864f9e6ddff\",\"port\":\"488a2b51-45ef-4a7f-a100-8a174553c0d7\"}},{\"shape\":\"dag-edge\",\"attrs\":{\"line\":{\"strokeDasharray\":\"\"}},\"id\":\"9afc6a87-c47f-497c-beef-c7e940603102\",\"zIndex\":-1,\"source\":{\"cell\":\"b58a11db-dda4-4567-91fb-f0704f83d6ce\",\"port\":\"fac0e53a-fef8-42b2-b986-99154da6f3c4\"},\"target\":{\"cell\":\"749ac2d3-c418-4672-a018-673c4e51123d\",\"port\":\"4928272d-45d5-403c-a50d-11e7c9dbc322\"}},{\"shape\":\"dag-edge\",\"attrs\":{\"line\":{\"strokeDasharray\":\"\"}},\"id\":\"413ab17d-7287-4123-9147-108898965a87\",\"zIndex\":-1,\"source\":{\"cell\":\"0c2bdcf2-99a6-430a-b31c-1eb87d7e9801\",\"port\":\"f16c4469-535c-40b5-91a5-e18dbd62300e\"},\"target\":{\"cell\":\"b58a11db-dda4-4567-91fb-f0704f83d6ce\",\"port\":\"1c06a9c9-1cc3-4c36-826b-5e334df1b09c\"}},{\"position\":{\"x\":90,\"y\":230},\"size\":{\"width\":90,\"height\":36},\"attrs\":{\"text\":{\"text\":\"開始\"},\"body\":{\"rx\":4,\"ry\":4,\"strokeWidth\":0,\"fill\":\"#5C7AAA\"},\"label\":{\"fill\":\"#fff\",\"fontSize\":12}},\"visible\":true,\"shape\":\"rect\",\"id\":\"0c2bdcf2-99a6-430a-b31c-1eb87d7e9801\",\"data\":{\"nodeType\":\"startNode\"},\"ports\":{\"groups\":{\"out\":{\"position\":{\"name\":\"right\"},\"attrs\":{\"circle\":{\"r\":4,\"magnet\":true,\"stroke\":\"#5F95FF\",\"strokeWidth\":1,\"fill\":\"#fff\",\"style\":{\"visibility\":\"visible\"}}}}},\"items\":[{\"group\":\"out\",\"id\":\"f16c4469-535c-40b5-91a5-e18dbd62300e\"}]},\"zIndex\":1},{\"position\":{\"x\":262,\"y\":182},\"size\":{\"width\":160,\"height\":132},\"view\":\"react-shape-view\",\"shape\":\"judge-node\",\"component\":{\"key\":null,\"ref\":null,\"props\":{\"hitSopRids\":[],\"isReadOnly\":[]},\"_owner\":null},\"ports\":{\"groups\":{\"in\":{\"position\":\"left\",\"attrs\":{\"circle\":{\"r\":4,\"magnet\":\"passive\",\"stroke\":\"#C2C8D5\",\"strokeWidth\":1,\"fill\":\"#fff\"}}},\"out\":{\"position\":\"absolute\",\"attrs\":{\"circle\":{\"r\":4,\"magnet\":true,\"stroke\":\"#C2C8D5\",\"strokeWidth\":1,\"fill\":\"#fff\"}}}},\"items\":[{\"group\":\"in\",\"id\":\"1c06a9c9-1cc3-4c36-826b-5e334df1b09c\"},{\"group\":\"out\",\"args\":{\"x\":152,\"y\":66,\"index\":0},\"id\":\"f3707b26-9674-4411-8744-0687bf4a1a4e\"},{\"group\":\"out\",\"args\":{\"x\":152,\"y\":106,\"index\":1},\"id\":\"fac0e53a-fef8-42b2-b986-99154da6f3c4\"}]},\"id\":\"b58a11db-dda4-4567-91fb-f0704f83d6ce\",\"data\":{\"nodeType\":\"judgmentNode\"},\"zIndex\":3},{\"position\":{\"x\":500,\"y\":150},\"size\":{\"width\":160,\"height\":60},\"view\":\"react-shape-view\",\"shape\":\"dialogue-node\",\"component\":{\"key\":null,\"ref\":null,\"props\":{\"hitSopRids\":[],\"isReadOnly\":[]},\"_owner\":null},\"ports\":{\"groups\":{\"in\":{\"position\":\"left\",\"attrs\":{\"circle\":{\"r\":4,\"magnet\":\"passive\",\"stroke\":\"#C2C8D5\",\"strokeWidth\":1,\"fill\":\"#fff\"}}},\"out\":{\"position\":\"right\",\"attrs\":{\"circle\":{\"r\":4,\"magnet\":true,\"stroke\":\"#C2C8D5\",\"strokeWidth\":1,\"fill\":\"#fff\"}}}},\"items\":[{\"group\":\"in\",\"id\":\"488a2b51-45ef-4a7f-a100-8a174553c0d7\"},{\"group\":\"out\",\"id\":\"959754b9-61bf-4538-876c-b71e395f7ea2\"}]},\"id\":\"783ac141-23cf-45b3-a5b0-3864f9e6ddff\",\"data\":{\"nodeType\":\"conditionNode\"},\"zIndex\":5},{\"position\":{\"x\":500,\"y\":314},\"size\":{\"width\":160,\"height\":60},\"view\":\"react-shape-view\",\"shape\":\"dialogue-node\",\"component\":{\"key\":null,\"ref\":null,\"props\":{\"hitSopRids\":[],\"isReadOnly\":[]},\"_owner\":null},\"ports\":{\"groups\":{\"in\":{\"position\":\"left\",\"attrs\":{\"circle\":{\"r\":4,\"magnet\":\"passive\",\"stroke\":\"#C2C8D5\",\"strokeWidth\":1,\"fill\":\"#fff\"}}},\"out\":{\"position\":\"right\",\"attrs\":{\"circle\":{\"r\":4,\"magnet\":true,\"stroke\":\"#C2C8D5\",\"strokeWidth\":1,\"fill\":\"#fff\"}}}},\"items\":[{\"group\":\"in\",\"id\":\"4928272d-45d5-403c-a50d-11e7c9dbc322\"},{\"group\":\"out\",\"id\":\"2c5cd64a-f96f-4400-ae3a-ec080d69d742\"}]},\"id\":\"749ac2d3-c418-4672-a018-673c4e51123d\",\"data\":{\"nodeType\":\"conditionNode\"},\"zIndex\":6}]}",
"skipWhenFirstSessionNodeMiss": false
},
"isDelete": 0,
"isOnline": 0,
"lambda": "\"\"",
"lastUpdateEmpid": "374915893923532146",
"lastUpdateTime": 1663656667000,
"level": 2,
"meet": 1,
"name": "流程質檢規則Demo",
"qualityCheckType": 0,
"rid": "30531",
"ridLong": 30531,
"ruleScoreType": 1,
"ruleType": 1,
"scoreNum": 0,
"scoreNumType": 0,
"scoreRuleHitType": 0,
"scoreType": 1,
"status": 0,
"targetType": 11,
"taskFlowId": 510,
"taskFlowType": 1,
"type": -1
}
]
}
}