引言
最近在做呼叫中心项目,其中有一个环节是根据根据FS传入的 被叫号码来确定使用哪个线路呼叫,我们需要判断被叫号码是手机号码还是固话,并且需要判断号码的归属地, 我们需要把这些参数 传递给规则引擎,然后返回需要的线路。
基本思路
首先 判断被叫号码 是否是手机号,如果是手机号则返回前7位 用来做归属地查询,如果是固话返回区号用来归属地查询。
业务代码:
//校验被叫号码固话还是手机
Map<String, String> stringMap = PhoneUtils.checkNumber(callObj.getTelNumber());
if (RobotConstants.PHONE_TYPE_INVALID_PHONE.equals(stringMap.get("phoneType"))) {
callObj.setFailedReason("无效的手机号");
return null;
}
//归属地
String telAttribute = numberService.getProvinceByTelNumber(stringMap.get("code"));
归属地比较简单了,我们维护了一张表里面存放了固话区号和手机号前7位对应的省、市。
其中checkNumber会返回一个map其中存放了号码类型和code,如果是固话code存放区号,如果是手机号码code存放前7位。
工具类,
package com.jack.common.utils;
import com.jack.common.constant.RobotConstants