呼入频次越限判断接口(ACTIVE_RULE_CALL_OOB / INCALL_ROBOT_OOB)
适用于:第三方系统在接进来电业务之前问 CTI"这个主叫最近打得是不是太频繁了"——防骚扰拦截、机器人外呼频控、黑名单前置判断。接口直接返回 true/false 判定,调用方无需自己统计。 区别:call-summary-call-count 的
call_count返回原始计数(调用方自行判);本组接口返回越限判定,且时间窗语义不同(智能路由规则时段 / 滚动分钟窗)。
接口均为 GET http://{cti_host}:12121/bridge/callctrl,HTTP 状态码恒为 200;响应体为文本 true(越限)/ false(未越限)。
1. 按智能路由规则时段判断:ACTIVE_RULE_CALL_OOB
取被叫 callee 当前生效的智能路由规则的时间窗(落到今天),统计主叫 caller 在该窗口内的打入次数是否达到 max:
GET http://{cti_host}:12121/bridge/callctrl?caller=13512340001&callee=1000&max=2&opt=ACTIVE_RULE_CALL_OOB
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| caller | String | 是 | 主叫号码(精确匹配) |
| callee | String | 是 | 被叫号码;用于查其当前生效的智能路由规则 |
| max | int | 是 | 越限阈值(次数 ≥ max 即越限) |
| business | String | 否 | 业务过滤,如 AI_ROBOT;不传/空 = 统计所有业务 |
| opt | String | 是 | 固定 ACTIVE_RULE_CALL_OOB |
窗口计算规则(由规则的日期类型决定,落到今天):
| 规则类型 | 窗口起点 |
|---|---|
| 指定日期(SPECIFIED_DAY) | 规则的 begintime(绝对时间) |
| 每日时段(DAY_TYPE) | 今天的规则 begintime 时刻 |
| 周/月规则(WEEK/MONTH) | 今天的 subbegintime 时刻,未配则 00:00:00 |
- 被叫无生效规则 → 恒
false(不约束); - 总机/未配规则的号码查不出约束,属正常。
2. 按滚动分钟窗口判断:INCALL_ROBOT_OOB
不依赖路由规则,直接统计主叫 caller 最近 minutes 分钟内的打入次数是否达到 max:
GET http://{cti_host}:12121/bridge/callctrl?caller=13512340001&minutes=1440&max=3&business=AI_ROBOT&opt=INCALL_ROBOT_OOB
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| caller | String | 是 | 主叫号码(精确匹配) |
| max | int | 是 | 越限阈值(次数 ≥ max 即越限) |
| minutes | long | 是 | 滚动窗口分钟数(1 ~ 52560000);窗口 = now − minutes, now |
| business | String | 否 | 业务过滤,如 AI_ROBOT;不传/空 = 统计所有业务 |
| opt | String | 是 | 固定 INCALL_ROBOT_OOB |
典型用法:同一主叫 24 小时内(minutes=1440)机器人业务(business=AI_ROBOT)来电 ≥ 3 次(max=3)即拦截后续机器人接续。
3. 判定口径(两接口通用)
- 越限 = 窗口内打入次数 ≥ max,响应体
true;否则false; - 参数缺失/非法一律
false(不拦截):caller/callee/max 任一缺失、max 非数字或为负、minutes 非法等; - 服务异常也
false(fail-open):话单服务不可用时放行,不因 CTI 抖动误杀正常来电——因此调用方不能把 false 当作"系统正常"的证据,拦截策略的兜底应另行考虑; - 统计基于话单记录(内存缓存优先),精确匹配主叫号码,不做号码归一化:传入形态须与话单主叫一致(勿带
+、空格或区号变体)。
4. curl 示例
CTI=http://192.168.1.80:12121
# 1. 来电 13512340001 → 被叫 1000:按 1000 当前生效路由规则时段,≥2 次即越限
curl "$CTI/bridge/callctrl?caller=13512340001&callee=1000&max=2&opt=ACTIVE_RULE_CALL_OOB"
# → true / false
# 2. 同主叫 24 小时内机器人业务 ≥3 次即越限
curl "$CTI/bridge/callctrl?caller=13512340001&minutes=1440&max=3&business=AI_ROBOT&opt=INCALL_ROBOT_OOB"
# → true / false
5. 常见问题排查
| 现象 | 原因与处理 |
|---|---|
| 明明打了很多次仍返回 false | ①号码形态不一致(带前缀/+号);②business 过滤值与话单 business 字段大小写/取值不符;③max/minutes 参数非法被静默放行 |
| ACTIVE_RULE 恒 false | 被叫号码没有当前生效的智能路由规则(含总机),窗口约束不存在;改用 INCALL_ROBOT_OOB |
| 想知道具体次数而不是判定 | 用 call-summary-call-count 的 call_count(秒级窗口)或话单查询统计 |
| business 配错时如何发现 | 服务端会对"过滤后为 0 但不过滤有记录"的情况打 WARN 日志;拦截不生效时请管理员查 CTI 日志确认 business 取值 |
