呼入频次越限判断接口(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
参数类型必填说明
callerString是主叫号码(精确匹配)
calleeString是被叫号码;用于查其当前生效的智能路由规则
maxint是越限阈值(次数 ≥ max 即越限)
businessString否业务过滤,如 AI_ROBOT;不传/空 = 统计所有业务
optString是固定 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
参数类型必填说明
callerString是主叫号码(精确匹配)
maxint是越限阈值(次数 ≥ max 即越限)
minuteslong是滚动窗口分钟数(1 ~ 52560000);窗口 = now − minutes, now
businessString否业务过滤,如 AI_ROBOT;不传/空 = 统计所有业务
optString是固定 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 取值