接口说明
此API可以修改对应的规则信息。修改的内容是以创建的规则的信息为基础的,在其中修改相应的条件和算子。该接口执行时可以保证规则ID(rid)不变,但对应的条件ID和算子ID会变化。
入参UpdateRuleRequest说明
属性 | 值类型 | 是否必须 | 说明 |
jsonStr | String | 是 | 完整JSON字符串信息,具体内容参见以下详细信息 |
请求参数JSON字符串信息
属性 | 值类型 | 是否必须 | 说明 |
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: 命中句子之后 |
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> | 否 | 算子的ID,必须数字字符,此数字在规则上传后会被修改为系统自生成Id |
regex | String | 否 | 用于正则算子,正则表达式 |
phrase | String | 否 | 用于最小编辑距离算子,参考句子 |
references | List<String> | 否 | 用于相似度匹配,算子表达式具体内容 |
interval | Integer | 否 | 用于时间间隔算子,时间间隔 |
threshold | Float | 否 | 用于编辑距离和匹配予以算子,指定的阈值 |
in_sentence | Boolean | 否 | 用以判断是否是单句还是整句 |
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,必须数字字符,此数字保持不变 |
lambda | String | 是 | 规则中条件的逻辑关系 |
triggers | List<String> | 是 | 规则中需要返回内容的条件ID。设置规则ID的话,命中结果后将会返回规则所命中的具体内容 |
Name | String | 是 | 规则的名字 |
business | List<BusinessCategoryBasicInfo> | 是 | 规则所属业务 |
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 | 是 | 规则所属业务名称,字符串 |
调用示例
UpdateRuleRequest updateRuleRequest = new UpdateRuleRequest();
updateRuleRequest.setAcceptFormat(FormatType.JSON);
String ruleJsonStr = "{\n" +
" \"appKey\": \"**********\",\n" +
" \"conditions\": [\n" +
" {\n" +
" \"cid\": \"a\",\n" +
" \"check_range\": {\n" +
" \"role\": \"客服\",\n" +
" \"anchor\": null\n" +
" },\n" +
" \"lambda\": \"1\",\n" +
" \"operators\": [\n" +
" {\n" +
" \"oid\": 1,\n" +
" \"type\": \"REGULAR_EXPRESSION\",\n" +
" \"param\": {\n" +
" \"regex\": \"(你好|您好|早上好|晚上好|下午好|中午好)\"\n" +
" }\n" +
" }\n" +
" ]\n" +
" }\n" +
" ],\n" +
" \"rules\": [\n" +
" {\n" +
" \"name\": \"【默认规则】开头说你好\",\n" +
" \"type\": -99,\n" +
" \"lambda\": \"a\",\n" +
" \"startTime\": null,\n" +
" \"endTime\": null,\n" +
" \"triggers\": [\n" +
" \"a\"\n" +
" ],\n" +
" \"rid\": \"345\",\n" +
" \"comments\": \"检测客服是否在对话的开头2句说你好\",\n" +
" \"business\": [\n" +
" {\n" +
" \"bid\": 264971810,\n" +
" \"name\": \"测试\"\n" +
" },\n" +
" {\n" +
" \"bid\": 386664996,\n" +
" \"name\": \"信息测试\"\n" +
" }\n" +
" ],\n" +
" \"status\": 1,\n" +
" \"autoReview\": 1,\n" +
" \"scoreSubId\": 277,\n" +
" \"ruleScoreType\": 1\n" +
" }\n" +
" ]\n" +
"}";
updateRuleRequest.setJsonStr(ruleJsonStr);
UpdateRuleResponse response = client.getAcsResponse(updateRuleRequest);
System.out.println(com.alibaba.fastjson.JSON.toJSONString(response));
返回示例
{
"code": "200",
"message": "successful",
"requestId": "4E1D0CCB-172D-409E-86F3-2188C634E4D8",
"success": true
}