接口说明
客户(或者ISV)通过调用该API将一条分析规则上传给分析系统,返回本条分析规则在分析系统中的规则Id。
入参UploadRuleRequest说明
属性 |
值类型 |
是否必须 |
说明 |
jsonStr |
String |
是 |
完整Json字符串信息,具体内容参见以下详细信息 |
请求参数Json字符串信息
属性 |
值类型 |
是否必须 |
说明 |
appKey |
String |
是 |
业务方或者业务场景的标记 |
conditions |
List< ConditionBasicInfo> |
是 |
所有条件的配置信息 |
rules |
List< RuleInfo> |
是 |
所有规则的配置信息 |
条件的详细配置字段ConditionBasicInfo描述:
属性 |
值类型 |
是否必须 |
说明 |
cid |
String |
是 |
条件的ID,必须数字字符,此数字在规则上传后会被修改为系统自生成Id |
check_range |
CheckRange |
是 |
条件的检查范围 |
operators |
List< OperatorBasicInfo> |
是 |
条件包含的算子 |
lambda |
String |
是 |
条件中算子的逻辑关系 |
条件检查范围CheckRange描述:
属性 |
值类型 |
是否必须 |
说明 |
role |
String |
否 |
角色,条件的作用角色范围, 取值:“客服”,“客户”;不传表示所有角色 |
anchor |
Anchor |
否 |
条件的锚定关系, 即前置条件 |
range |
Range |
否 |
Role和Anchor共同决定的范围。1~N表示由anchor和role共同限定的第1(N)句,-1表示由anchor和role共同限定的最后一句 |
条件锚定关系Anchor描述:
属性 |
值类型 |
是否必须 |
说明 |
location |
String |
是 |
取值:CURRENT, BEFORE, AFTER; CURRENT: 前置条件命中的当前句 BEFORE: 前置条件命中句子之前 AFTER: 前置条件命中句子之后 |
cid |
String |
是 |
前置条件id 用于确定anchor的条件 |
hit_time |
Integer |
是 |
hit_time 整数 1~N代表前置条件第一(N)次命中,-1代表条件最后一次命中 |
条件范围Range描述:
属性 |
值类型 |
是否必须 |
说明 |
from |
Integer |
是 |
1~N表示由anchor和role共同限定的第1(N)句,-1表示由anchor和role共同限定的最后一句 |
to |
Integer |
是 |
1~N表示由anchor和role共同限定的第1(N)句,-1表示由anchor和role共同限定的最后一句 |
条件所包含算子OperatorBasicInfo描述:
属性 |
值类型 |
是否必须 |
说明 |
oid |
String |
是 |
算子的ID,必须数字字符,此数字在规则上传后会被修改为系统自生成Id |
type |
String |
是 |
算子类型,参考< operator算子type字段说明> |
name |
String |
是 |
算子名称、描述 |
param |
Param |
是 |
算子表达式具体内容 |
条件所包含算子具体内容 Param描述:
属性 |
值类型 |
是否必须 |
说明 |
keywords |
List< String> |
否 |
用于测试是否包含某些关键词,关键词列表 |
regex |
String |
否 |
用于正则算子,正则表达式 |
phrase |
String |
否 |
用于语义匹配算子,参考句子 |
references |
List< String> |
否 |
用于相似度匹配,算子表达式具体内容 |
interval |
Integer |
否 |
用于时间间隔算子,时间间隔 |
threshold |
Float |
否 |
用于编辑距离和匹配予以算子,指定的阈值 |
in_sentence |
Boolean |
否 |
关键词或者正则表达式检测时,是否限定在一个句子中(以逗号、句号等标号分开的算不同句子);true:限定在一个句子中;false:不限定。 |
target |
Integer |
否 |
目标句子是当前句子的前多少句,为0时间间隔等于本句的结束时间-本句的开始时间 |
from_end |
Boolean |
否 |
用于时间间隔算子,判断时间间隔,指定时间间隔的计算方式是否用本句的结束时间减目标句子的结束时间 |
different_role |
Boolean |
否 |
用以时间间隔算子,判断时间间隔,为true则目标句子如果与本句是同一个角色说的话就不参与计算 |
target_role |
String |
否 |
用于判断重复算子,如果本句匹配上该正则表达式,那么匹配上的部份会在本句之前target_role指定的句子中查找 |
velocity |
Double |
否 |
用于语速判断算子。单位时间内的语速值,判断本句的语速是否超过指定值。时间单位取决于传入的start、end的时间单位 |
velocityInMint |
Integer |
否 |
用于语速判断算子。每分钟的语速值,用以判断本句的语速是否超过指定值 |
规则的详细配置字段RuleInfo描述:
属性 |
值类型 |
是否必须 |
说明 |
rid |
String |
是 |
规则的ID,必须数字字符,此数字在规则上传后会被修改为系统自生成Id |
lambda |
String |
是 |
规则中条件的逻辑关系 |
business |
List< BusinessCategoryBasicInfo> |
是 |
规则所属业务 |
triggers |
List< String> |
是 |
规则中需要返回内容的条件ID。设置规则ID的话,命中结果后将会返回规则所命中的具体内容 |
Name |
String |
是 |
规则的名字 |
type |
Integer |
是 |
1/2/3/4: 服务规范/舆情监控/业务类/其他 |
status |
Integer |
否 |
0/1/2:待生效/生效中/已失效 |
startTime |
Date |
否 |
规则的生效时间 |
endTime |
Date |
否 |
规则的失效时间 |
scoreSubId |
Integer |
否 |
规则绑定的计分id |
ruleScoreType |
Integer |
否 |
该规则是否进行计分(1:不计分 3:计分) |
规则所属业务字段BusinessCategoryBasicInfo描述:(若该属性为空,设置为默认的“所有业务”类型)
属性 |
值类型 |
是否必须 |
说明 |
bid |
String |
是 |
规则所属业务BID,必须数字字符 |
name |
String |
是 |
规则所属业务名称,必须数字字符 |
算子中Param配置示例
算子类型 |
算子名称 |
param示例 |
INCLUDE_KEYWORDS |
包含全部关键字 |
{“in_sentence”:false,”keywords”:[“你好”]} |
INCLUDE_KEYWORDS |
包含全部关键字并开启同义词 |
{“in_sentence”:false,”keywordExtension”:1,”keywords”:[“医疗”]} |
HIT_ANY_KEYWORDS |
包含任意一个关键词 |
{“in_sentence”:false,”keywords”:[“你好”]} |
HIT_ANY_KEYWORDS |
包含任意一个关键词并开启同义词 |
{“in_sentence”:false,”keywordExtension”:1,”keywords”:[“你好”]} |
REGULAR_EXPRESSION |
匹配正则表达式 |
{“in_sentence”:false,”regex”:”你好.*”} |
PARAPHRASE |
匹配语义 |
{“in_sentence”:false,”references”:[“你好”,”服务”],”threshold”:0.8} |
INTERVAL_GREATER |
与上句时间间隔大于给定值 |
{“different_role”:false,”from_end”:false,”in_sentence”:false,”interval”:10000,”target”:1} |
INTERROGATIVE_SENTENCE |
判断本句是否疑问句 |
{“in_sentence”:true} |
REPETITION_DETECT |
判断匹配上的内容是否之前有出现过 |
{“in_sentence”:false,”regex”:”你好.*”,”target_role”:”客服”} |
SPEECH_SPEED_CHECK |
判断本句的语速是否超过指定值 |
{“in_sentence”:false,”velocity”:0.00416667,”velocityInMint”:250} |
GRAB_WORDS |
抢话算子 |
{“in_sentence”:false,”interval”:10,”threshold”:10.0} |
EMOTION_ENERGY |
能量值判断 |
{“in_sentence”:false} |
调用示例
UploadRuleRequest uploadRuleRequest = new UploadRuleRequest();
uploadRuleRequest.setAcceptFormat(FormatType.JSON);
String ruleJsonStr = "{\n" +
" \"appKey\": \"********\",\n" +
" \"uploadType\": 0,\n" +
" \"conditions\": [\n" +
" {\n" +
" \"cid\": \"1\",\n" +
" \"check_range\": {\n" +
" \"role\": \"客服\",\n" +
" \"range\": {\n" +
" \"from\": 1,\n" +
" \"to\": 3\n" +
" }\n" +
" },\n" +
" \"operators\": [\n" +
" {\n" +
" \"oid\": \"1\",\n" +
" \"type\": \"REGULAR_EXPRESSION\",\n" +
" \"param\": {\n" +
" \"regex\": \"告诉.*密码\"\n" +
" },\n" +
" \"name\": \"ApiCreateRuleDemo\"\n" +
" }\n" +
" ],\n" +
" \"lambda\": \"1\"\n" +
" },\n" +
" {\n" +
" \"cid\": \"2\",\n" +
" \"check_range\": {\n" +
" \"role\": \"客户\",\n" +
" \"range\": {\n" +
" \"from\": 1,\n" +
" \"to\": -1\n" +
" }\n" +
" },\n" +
" \"operators\": [\n" +
" {\n" +
" \"oid\": \"2\",\n" +
" \"type\": \"REGULAR_EXPRESSION\",\n" +
" \"param\": {\n" +
" \"regex\": \"修改密码\"\n" +
" },\n" +
" \"name\": \"ApiCreateRuleDemo\"\n" +
" }\n" +
" ],\n" +
" \"lambda\": \"2\"\n" +
" }\n" +
" ],\n" +
" \"rules\": [\n" +
" {\n" +
" \"rid\": \"1\",\n" +
" \"lambda\": \"1&&2\",\n" +
" \"triggers\": [\n" +
" \"1\",\n" +
" \"2\"\n" +
" ],\n" +
" \"name\": \"testbyapi\",\n" +
" \"type\": 1,\n" +
" \"comments\": \"comments\",\n" +
" \"scoreSubId\": 277,\n" +
" \"ruleScoreType\": 1,\n" +
" \"business\": [\n" +
" {\n" +
" \"bid\": 264971810,\n" +
" \"name\": \"业务A\"\n" +
" },\n" +
" {\n" +
" \"bid\": 386664996,\n" +
" \"name\": \"业务B\"\n" +
" }\n" +
" ]\n" +
" }\n" +
" ]\n" +
"}";
uploadRuleRequest.setJsonStr(ruleJsonStr);
UploadRuleResponse response = client.getAcsResponse(uploadRuleRequest);
返回示例
{
"code":"200",
"data":[
"318" //数据库存储的规则id
],
"message":"successful",
"requestId":"*****",
"success":true
}
在文档使用中是否遇到以下问题
更多建议
匿名提交