|
|
@@ -12,6 +12,7 @@ import com.fs.aicall.domain.result.CalltaskcreateaiCustomizeResult;
|
|
|
import com.fs.aicall.service.AiCallService;
|
|
|
import com.fs.common.annotation.DataScope;
|
|
|
import com.fs.common.constant.Constants;
|
|
|
+import com.fs.common.core.redis.RedisCache;
|
|
|
import com.fs.common.core.redis.RedisCacheT;
|
|
|
import com.fs.common.exception.base.BaseException;
|
|
|
import com.fs.common.service.impl.SmsServiceImpl;
|
|
|
@@ -96,7 +97,7 @@ public class CompanyVoiceRoboticServiceImpl extends ServiceImpl<CompanyVoiceRobo
|
|
|
private final CompanyWorkflowEngine companyWorkflowEngine;
|
|
|
private final CompanyAiWorkflowExecMapper companyAiWorkflowExecMapper;
|
|
|
private final CompanyAiWorkflowExecLogMapper companyAiWorkflowExecLogMapper;
|
|
|
-
|
|
|
+ private final RedisCache redisCache2;
|
|
|
@Autowired
|
|
|
@Qualifier("cidWorkFlowExecutor")
|
|
|
private Executor cidWorkFlowExecutor;
|
|
|
@@ -309,11 +310,12 @@ public class CompanyVoiceRoboticServiceImpl extends ServiceImpl<CompanyVoiceRobo
|
|
|
|
|
|
}
|
|
|
|
|
|
+ private final String WORKFLOW_CALL_ONE_REDIS_KEY = "workflowCallOne:uuid:";
|
|
|
/**
|
|
|
- * 流程Ai呼叫 callOne
|
|
|
+ * 流程Ai呼叫 callOne
|
|
|
* @param roboticId
|
|
|
* @param callerId
|
|
|
- * @param workflowInstanceId
|
|
|
+ * @param context
|
|
|
* @param callConfigVo
|
|
|
* @return
|
|
|
*/
|
|
|
@@ -322,7 +324,14 @@ public class CompanyVoiceRoboticServiceImpl extends ServiceImpl<CompanyVoiceRobo
|
|
|
try {
|
|
|
CompanyVoiceRobotic robotic = companyVoiceRoboticMapper.selectById(roboticId);
|
|
|
CompanyVoiceRoboticCallees callees = companyVoiceRoboticCalleesMapper.selectById(callerId);
|
|
|
- CalleeDomain build = CalleeDomain.builder().number(callees.getPhone()).userData(callees.getId().toString()).build();
|
|
|
+ String callBackUuid = UUID.randomUUID().toString();
|
|
|
+ JSONObject userDataJson=new JSONObject();
|
|
|
+ userDataJson.put("callBackUuid",callBackUuid);
|
|
|
+ userDataJson.put("nodeKey",context.getCurrentNodeKey());
|
|
|
+ userDataJson.put("workflowInstanceId",context.getWorkflowInstanceId());
|
|
|
+ userDataJson.put("callerId",callerId);
|
|
|
+ redisCache2.setCacheObject(WORKFLOW_CALL_ONE_REDIS_KEY + callBackUuid, userDataJson.toJSONString());
|
|
|
+ CalleeDomain build = CalleeDomain.builder().number(callees.getPhone()).userData(callBackUuid).build();
|
|
|
List<CalleeDomain> mobileList = new ArrayList<>();
|
|
|
mobileList.add(build);
|
|
|
// 构建三方接口请求数据
|
|
|
@@ -335,6 +344,7 @@ public class CompanyVoiceRoboticServiceImpl extends ServiceImpl<CompanyVoiceRobo
|
|
|
param.setMultiplier(callConfigVo.getMultiplier());
|
|
|
param.setAutoRecall(callConfigVo.getAutoRecall());
|
|
|
param.setRecallTimes(callConfigVo.getRecallTimes());
|
|
|
+ param.setCIDGroupID(callConfigVo.getCidGroupId());
|
|
|
if (StringUtils.isNotEmpty(robotic.getWeekDay1())) {
|
|
|
param.setWeekday1(Arrays.asList(robotic.getWeekDay1().split(",")));
|
|
|
}
|
|
|
@@ -344,12 +354,6 @@ public class CompanyVoiceRoboticServiceImpl extends ServiceImpl<CompanyVoiceRobo
|
|
|
if (StringUtils.isNotEmpty(robotic.getEndTime1())) {
|
|
|
param.setEndTime1(robotic.getEndTime1() + ":00");
|
|
|
}
|
|
|
- String callBackUuid = UUID.randomUUID().toString();
|
|
|
- JSONObject userDataJson=new JSONObject();
|
|
|
- userDataJson.put("callBackUuid",callBackUuid);
|
|
|
- userDataJson.put("nodeKey",context.getCurrentNodeKey());
|
|
|
- userDataJson.put("workflowInstanceId",context.getWorkflowInstanceId());
|
|
|
- param.setUserData(userDataJson.toJSONString());
|
|
|
JSONObject runParam = (JSONObject) JSON.toJSON(param);
|
|
|
runParam.put("companyId", robotic.getCompanyId());
|
|
|
CompanyVoiceRoboticCallLogCallphone addLog = CompanyVoiceRoboticCallLogCallphone.initCallLog(
|
|
|
@@ -636,14 +640,15 @@ public class CompanyVoiceRoboticServiceImpl extends ServiceImpl<CompanyVoiceRobo
|
|
|
//更新调用日志
|
|
|
companyVoiceRoboticCallLogCallphoneService.asyncHandleCalleeCallBackResult(result,callee);
|
|
|
if(StringUtils.isNotBlank(notify.getUserData())){
|
|
|
- JSONObject userData = JSONObject.parseObject(notify.getUserData());
|
|
|
- if(userData.containsKey("callBackUuid") && userData.containsKey("workflowInstanceId") && userData.containsKey("nodeKey")){
|
|
|
+ JSONObject userData = JSONObject.parseObject(redisCache2.getCacheObject(WORKFLOW_CALL_ONE_REDIS_KEY + notify.getUserData()),JSONObject.class) ;
|
|
|
+ if(null!= userData && userData.containsKey("callBackUuid") && userData.containsKey("workflowInstanceId") && userData.containsKey("nodeKey")){
|
|
|
Map<String, Object> param = new HashMap<>();
|
|
|
param.put("callBackUuid",userData.getString("callBackUuid"));
|
|
|
CompletableFuture.runAsync(()->{
|
|
|
companyWorkflowEngine.resumeFromBlockingNode(userData.getString("workflowInstanceId"),userData.getString("nodeKey"),param);
|
|
|
},cidWorkFlowExecutor);
|
|
|
}
|
|
|
+ redisCache2.deleteObject(notify.getUserData());
|
|
|
}
|
|
|
long count = companyVoiceRoboticCalleesMapper.countByRoboticIdNotUuid(callee.getRoboticId());
|
|
|
if(count == 0){
|
|
|
@@ -705,7 +710,9 @@ public class CompanyVoiceRoboticServiceImpl extends ServiceImpl<CompanyVoiceRobo
|
|
|
companyVoiceRoboticCalleesMapper.updateById(callee);
|
|
|
}
|
|
|
public CompanyVoiceRoboticCallees getResultCalleeInfo(Notify notify){
|
|
|
- CompanyVoiceRoboticCallees callee = companyVoiceRoboticCalleesMapper.selectCompanyVoiceRoboticCalleesById(Long.parseLong(notify.getUserData()));
|
|
|
+ String cacheString = (String) redisCache2.getCacheObject(WORKFLOW_CALL_ONE_REDIS_KEY + notify.getUserData());
|
|
|
+ JSONObject parse = JSONObject.parseObject(cacheString,JSONObject.class);
|
|
|
+ CompanyVoiceRoboticCallees callee = companyVoiceRoboticCalleesMapper.selectCompanyVoiceRoboticCalleesById(parse.getLong("callerId"));
|
|
|
if(callee == null){
|
|
|
log.error("回调错误,未找到拨打手机号记录:{}", notify);
|
|
|
throw new BaseException("回调错误");
|