修改点呼

master
wujingtao 3 years ago
parent fff75c0481
commit e54eb5e070

@ -143,7 +143,7 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
.antMatchers( "/api/organize/queryAll").permitAll() .antMatchers( "/api/organize/queryAll").permitAll()
.antMatchers( "/api/back/cdrUrl").permitAll() .antMatchers( "/api/back/cdrUrl").permitAll()
.antMatchers( "/api/back/status").permitAll() .antMatchers( "/api/back/status").permitAll()
.antMatchers( "/api/call/record").permitAll() .antMatchers( "/api/roll/cdrUrl").permitAll()
// 自定义匿名访问所有url放行允许匿名和带Token访问细腻化到每个 Request 类型 // 自定义匿名访问所有url放行允许匿名和带Token访问细腻化到每个 Request 类型
// GET // GET
.antMatchers(HttpMethod.GET, anonymousUrls.get(RequestMethodEnum.GET.getType()).toArray(new String[0])).permitAll() .antMatchers(HttpMethod.GET, anonymousUrls.get(RequestMethodEnum.GET.getType()).toArray(new String[0])).permitAll()

@ -44,12 +44,12 @@ public class RollCallController {
@PostMapping("/roll/cdrUrl") @PostMapping("/roll/cdrUrl")
@ApiOperation("点呼系统回调话单") @ApiOperation("点呼系统回调话单")
public CommonResponse<String> doubleCallBack(@RequestBody String json) { public CommonResponse<String> doubleCallBack(@RequestBody String json) {
log.info("点呼回调:{}", json);
try { try {
RollCallBackDTO rollCallBackDTO = JSONUtil.toBean(json, RollCallBackDTO.class); RollCallBackDTO rollCallBackDTO = JSONUtil.toBean(json, RollCallBackDTO.class);
if (ObjectUtil.isEmpty(rollCallBackDTO) || StrUtil.isEmpty(rollCallBackDTO.getSessionid())) { if (ObjectUtil.isEmpty(rollCallBackDTO) || StrUtil.isEmpty(rollCallBackDTO.getSessionid())) {
return CommonResponse.createByErrorMessage("参数为空"); return CommonResponse.createByErrorMessage("参数为空");
} }
log.info("=======点呼回调话单: {}", rollCallBackDTO);
rollCallService.rollCallBack(rollCallBackDTO); rollCallService.rollCallBack(rollCallBackDTO);
} catch (Exception e) { } catch (Exception e) {
log.error("点呼回调话单错误 参数 {}", json); log.error("点呼回调话单错误 参数 {}", json);

@ -1,11 +1,11 @@
package com.baiye.modules.telemarkting.httpRequest; package com.baiye.modules.telemarkting.httpRequest;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.codec.Base64; import cn.hutool.core.codec.Base64;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.crypto.SecureUtil; import cn.hutool.http.Header;
import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.baiye.constant.DefaultNumberConstants; import com.baiye.constant.DefaultNumberConstants;
import com.baiye.exception.BadRequestException; import com.baiye.exception.BadRequestException;
@ -18,6 +18,8 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.Map;
/** /**
* @author wujingtao * @author wujingtao
@ -33,8 +35,6 @@ public class RollCallReq {
private String cdrUrl; private String cdrUrl;
@Value("${roll.call.appId}") @Value("${roll.call.appId}")
private String appId; private String appId;
@Value("${roll.call.token}")
private String token;
@Value("${roll.call.accountSid}") @Value("${roll.call.accountSid}")
private String accountSid; private String accountSid;
@ -46,36 +46,39 @@ public class RollCallReq {
private String reqTask(TelephoneCallReqDTO doubleCallReq) { private String reqTask(TelephoneCallReqDTO doubleCallReq) {
RollCallSystemDTO rollCallSystemDTO = new RollCallSystemDTO(); RollCallSystemDTO rollCallSystemDTO = new RollCallSystemDTO();
String date = DateUtil.format(DateUtil.date(), "yyyyMMddHHssmm"); String date = DateUtil.format(DateUtil.date(), "yyyyMMddHHssmm");
// String sig = SecureUtil.md5(accountSid + token + date).toUpperCase();
//设置header //设置header
String authorization = Base64.encode(accountSid + ":" + date); String authorization = Base64.encode(accountSid + ":" + date);
// rollCallSystemDTO.setSig(sig);
rollCallSystemDTO.setAppid(appId); rollCallSystemDTO.setAppid(appId);
rollCallSystemDTO.setReq_id(doubleCallReq.getRequestId()); rollCallSystemDTO.setReq_id(doubleCallReq.getRequestId());
rollCallSystemDTO.setCaller(doubleCallReq.getTelA()); rollCallSystemDTO.setCaller(doubleCallReq.getTelA());
rollCallSystemDTO.setCallee(doubleCallReq.getTelB()); rollCallSystemDTO.setCallee(doubleCallReq.getTelB());
rollCallSystemDTO.setIs_record(String.valueOf(DefaultNumberConstants.ONE_NUMBER)); rollCallSystemDTO.setIs_record(String.valueOf(DefaultNumberConstants.ONE_NUMBER));
rollCallSystemDTO.setCdr_url(cdrUrl); rollCallSystemDTO.setCdr_url(cdrUrl);
log.info("请求对象:{}", JSONUtil.toJsonPrettyStr(rollCallSystemDTO)); log.info("请求对象:{}", BeanUtil.beanToMap(rollCallSystemDTO));
HttpResponse httpResponse = sendCallReq(JSONUtil.toJsonPrettyStr(rollCallSystemDTO), reqUrl, authorization);
if (httpResponse.isOk()) { String httpResponse = sendCallReq(BeanUtil.beanToMap(rollCallSystemDTO), reqUrl, authorization);
RollCallResponse doubleCallResponse = JSONUtil log.info("返回值为 {}", httpResponse);
.toBean(httpResponse.body(), RollCallResponse.class); RollCallResponse doubleCallResponse = JSONUtil
if (String.valueOf .toBean(httpResponse, RollCallResponse.class);
(DefaultNumberConstants.ZERO_NUMBER)
.equals(doubleCallResponse.getResult())) { if (String.valueOf
return doubleCallResponse.getReqid(); (DefaultNumberConstants.ZERO_NUMBER)
} .equals(doubleCallResponse.getResult())) {
throw new BadRequestException return doubleCallResponse.getReqid();
(StringUtils.isNotBlank(doubleCallResponse.getReason()) ?
doubleCallResponse.getReason()
: ResponseCode.CALL_ERROR.getDesc());
} }
throw new BadRequestException(ResponseCode.CALL_ERROR.getDesc()); throw new BadRequestException
(StringUtils.isNotBlank(doubleCallResponse.getReason()) ?
doubleCallResponse.getReason()
: ResponseCode.CALL_ERROR.getDesc());
} }
private HttpResponse sendCallReq(String json, String url, String authorization) { private String sendCallReq(Map<String, Object> json, String url, String authorization) {
return HttpRequest.post(url).header("Authorization", authorization).body(json).execute(); return HttpRequest.post(url).
header(Header.AUTHORIZATION, authorization).
header(Header.CONTENT_TYPE, "application/x-www-form-urlencoded").
form(json).
execute().
body();
} }
} }

@ -1,6 +1,8 @@
package com.baiye.modules.telemarkting.service; package com.baiye.modules.telemarkting.service;
import com.baiye.http.CommonResponse;
/** /**
* @author wujingtao * @author wujingtao
* @date 2022/02/14 * @date 2022/02/14
@ -8,5 +10,5 @@ package com.baiye.modules.telemarkting.service;
public interface ExtensionNumberService { public interface ExtensionNumberService {
void addNumbers(Integer minNumber, Integer maxNumber); void addNumbers(Integer minNumber, Integer maxNumber);
void assignExtensionNum(Long organizeId, Long memberId); CommonResponse<Object> assignExtensionNum(Long organizeId, Long memberId);
} }

@ -1,6 +1,7 @@
package com.baiye.modules.telemarkting.service.impl; package com.baiye.modules.telemarkting.service.impl;
import com.baiye.constant.DefaultNumberConstants; import com.baiye.constant.DefaultNumberConstants;
import com.baiye.http.CommonResponse;
import com.baiye.modules.system.domain.Organize; import com.baiye.modules.system.domain.Organize;
import com.baiye.modules.system.repository.OrganizeRepository; import com.baiye.modules.system.repository.OrganizeRepository;
import com.baiye.modules.system.service.OrganizeService; import com.baiye.modules.system.service.OrganizeService;
@ -41,15 +42,15 @@ public class ExtensionNumberServiceImpl implements ExtensionNumberService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void assignExtensionNum(Long organizeId, Long memberId) { public CommonResponse<Object> assignExtensionNum(Long organizeId, Long memberId) {
//查询组 //查询组
Organize organize = organizeRepository.findById(organizeId).orElseGet(Organize::new); Organize organize = organizeRepository.findById(organizeId).orElseGet(Organize::new);
if (organize != null && organize.getCallMode() == DefaultNumberConstants.ONE_NUMBER) { if (organize.getCallMode() == DefaultNumberConstants.ONE_NUMBER) {
Integer numberByMemberId = extensionUserRepository.findNumberByMemberId(memberId); Integer numberByMemberId = extensionUserRepository.findNumberByMemberId(memberId);
if (numberByMemberId != null) { if (numberByMemberId != null) {
log.info("用户 {},已经分配分机号", memberId); log.info("用户 {},已经分配分机号", memberId);
return; return CommonResponse.createByErrorMessage("用户已经分配分机号,用户id" + memberId);
} }
//查一个分机号 //查一个分机号
Integer idByStatus = extensionNumberRepository.findIdByStatus(DefaultNumberConstants.ZERO_NUMBER); Integer idByStatus = extensionNumberRepository.findIdByStatus(DefaultNumberConstants.ZERO_NUMBER);
@ -62,8 +63,10 @@ public class ExtensionNumberServiceImpl implements ExtensionNumberService {
extensionNumberRepository.updateStatusById(DefaultNumberConstants.ONE_NUMBER, idByStatus); extensionNumberRepository.updateStatusById(DefaultNumberConstants.ONE_NUMBER, idByStatus);
} catch (Exception e) { } catch (Exception e) {
log.error("分机号分配失败 memberId{}", memberId); log.error("分机号分配失败 memberId{}", memberId);
return CommonResponse.createByErrorMessage("分机号分配失败,用户id为" + memberId);
} }
} }
return CommonResponse.createBySuccess();
} }
private List<ExtensionNumber> getNumbers(Integer minNumber, Integer maxNumber) { private List<ExtensionNumber> getNumbers(Integer minNumber, Integer maxNumber) {

@ -45,8 +45,7 @@ public class RollCallServiceImpl implements RollCallService {
String requestId = RandomUtil.randomString(10); String requestId = RandomUtil.randomString(10);
telephoneCallReqDTO.setRequestId(requestId); telephoneCallReqDTO.setRequestId(requestId);
//获取分机号 //获取分机号
// Integer numberByMemberId = extensionUserRepository.findNumberByMemberId(telephoneCallReqDTO.getMemberId()); Integer numberByMemberId = extensionUserRepository.findNumberByMemberId(telephoneCallReqDTO.getMemberId());
String numberByMemberId = "458000-458100";
if (numberByMemberId == null) { if (numberByMemberId == null) {
return CommonResponse.createByErrorMessage("未配置分机号"); return CommonResponse.createByErrorMessage("未配置分机号");
} }
@ -66,7 +65,7 @@ public class RollCallServiceImpl implements RollCallService {
allCallInfo.setClueId(Long.parseLong(telephoneCallReqDTO.getUserData())); allCallInfo.setClueId(Long.parseLong(telephoneCallReqDTO.getUserData()));
allCallInfo.setMemberId(telephoneCallReqDTO.getMemberId()); allCallInfo.setMemberId(telephoneCallReqDTO.getMemberId());
allCallInfo.setStatus(DefaultNumberConstants.ONE_NUMBER); allCallInfo.setStatus(DefaultNumberConstants.ONE_NUMBER);
allCallInfo.setType(DefaultNumberConstants.ONE_NUMBER); allCallInfo.setType(DefaultNumberConstants.TWO_NUMBER);
allCallInfo.setRecordFlag(DefaultNumberConstants.ZERO_NUMBER); allCallInfo.setRecordFlag(DefaultNumberConstants.ZERO_NUMBER);
CallClueInfo clueInfo = new CallClueInfo(); CallClueInfo clueInfo = new CallClueInfo();
@ -88,7 +87,6 @@ public class RollCallServiceImpl implements RollCallService {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void rollCallBack(RollCallBackDTO rollCallBackDTO) { public void rollCallBack(RollCallBackDTO rollCallBackDTO) {
String reqId = rollCallBackDTO.getReqid(); String reqId = rollCallBackDTO.getReqid();
AllCallInfo allCallInfo = allCallInfoRepository.findByRequestId(reqId); AllCallInfo allCallInfo = allCallInfoRepository.findByRequestId(reqId);
if (ObjectUtil.isNotEmpty(allCallInfo)) { if (ObjectUtil.isNotEmpty(allCallInfo)) {
if (StrUtil.isBlank(rollCallBackDTO.getDuration())) { if (StrUtil.isBlank(rollCallBackDTO.getDuration())) {

@ -130,14 +130,12 @@ axb:
roll: roll:
call: call:
reqUrl: http://api.hzdaba.cn/callback/Accounts/dbby_hangzhoubaiyehl/Calls/ClickCall reqUrl: http://api.hzdaba.cn/v3/Accounts/dbby_hangzhoubaiyehl/Calls/ClickCall
accountSid: dbby_hangzhoubaiyehl accountSid: dbby_hangzhoubaiyehl
appId: app1 appId: app1
cdrUrl: http://118.178.137.129:8866/api/roll/cdrUrl cdrUrl: http://118.178.137.129:8866/api/roll/cdrUrl
#cdrUrl: https://baiyee.vip/api/roll/cdrUrl #cdrUrl: https://baiyee.vip/api/roll/cdrUrl
#cdrUrl: http://localhost:8866/api/roll/cdrUrl #cdrUrl: http://localhost:8866/api/roll/cdrUrl
token: 44574ded6fdb6584dbc6963033988b5
#ribbon: #ribbon:
# #建立连接超时时间 # #建立连接超时时间

@ -138,8 +138,7 @@ axb:
roll: roll:
call: call:
reqUrl: http://api.hzdaba.cn/callback/Accounts/dbby_hangzhoubaiyehl/Calls/ClickCall reqUrl: http://api.hzdaba.cn/v3/Accounts/dbby_hangzhoubaiyehl/Calls/ClickCall
accountSid: dbby_hangzhoubaiyehl accountSid: dbby_hangzhoubaiyehl
appId: app1 appId: app1
cdrUrl: https://baiyee.vip/api/roll/cdrUrl cdrUrl: https://baiyee.vip/api/roll/cdrUrl
token: 44574ded6fdb6584dbc6963033988b5

Loading…
Cancel
Save