|
|
@@ -20,6 +20,7 @@ import com.fs.common.service.impl.SmsServiceImpl;
|
|
|
import com.fs.common.utils.*;
|
|
|
import com.fs.company.domain.*;
|
|
|
import com.fs.company.mapper.*;
|
|
|
+import com.fs.company.param.ExecutionContext;
|
|
|
import com.fs.company.service.*;
|
|
|
import com.fs.company.vo.*;
|
|
|
import com.fs.crm.domain.CrmCustomer;
|
|
|
@@ -29,13 +30,17 @@ import com.fs.crm.service.impl.CrmCustomerServiceImpl;
|
|
|
import com.fs.system.mapper.SysDictDataMapper;
|
|
|
import com.fs.system.service.ISysConfigService;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
import lombok.Synchronized;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Qualifier;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.*;
|
|
|
+import java.util.concurrent.CompletableFuture;
|
|
|
+import java.util.concurrent.Executor;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
@@ -47,7 +52,8 @@ import java.util.stream.Collectors;
|
|
|
*/
|
|
|
@Slf4j
|
|
|
@Service
|
|
|
-@AllArgsConstructor
|
|
|
+//@AllArgsConstructor
|
|
|
+@RequiredArgsConstructor
|
|
|
public class CompanyVoiceRoboticServiceImpl extends ServiceImpl<CompanyVoiceRoboticMapper, CompanyVoiceRobotic> implements ICompanyVoiceRoboticService {
|
|
|
|
|
|
private static final String NODE_RUN_KEY = "aicall:node:run:";
|
|
|
@@ -89,6 +95,10 @@ public class CompanyVoiceRoboticServiceImpl extends ServiceImpl<CompanyVoiceRobo
|
|
|
|
|
|
private final CompanyVoiceRoboticBusinessMapper companyVoiceRoboticBusinessMapper;
|
|
|
private final CompanyWorkflowEngine companyWorkflowEngine;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ @Qualifier("workFlowExecutor")
|
|
|
+ Executor workFlowExecutor;
|
|
|
/**
|
|
|
* 查询机器人外呼任务
|
|
|
*
|
|
|
@@ -307,14 +317,13 @@ public class CompanyVoiceRoboticServiceImpl extends ServiceImpl<CompanyVoiceRobo
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
- public CalltaskcreateaiCustomizeResult workflowCallPhoneOne(Long roboticId, Long callerId, String workflowInstanceId,AiCallConfigVO callConfigVo) {
|
|
|
+ public CalltaskcreateaiCustomizeResult workflowCallPhoneOne(Long roboticId, Long callerId, ExecutionContext context, AiCallConfigVO callConfigVo) {
|
|
|
try {
|
|
|
CompanyVoiceRobotic robotic = companyVoiceRoboticMapper.selectById(roboticId);
|
|
|
CompanyVoiceRoboticCallees callees = companyVoiceRoboticCalleesMapper.selectById(callerId);
|
|
|
CalleeDomain build = CalleeDomain.builder().number(callees.getPhone()).userData(callees.getId().toString()).build();
|
|
|
List<CalleeDomain> mobileList = new ArrayList<>();
|
|
|
mobileList.add(build);
|
|
|
- String callBackUuid = UUID.randomUUID().toString();
|
|
|
// 构建三方接口请求数据
|
|
|
CalltaskcreateaiCustomizeDomain param = new CalltaskcreateaiCustomizeDomain();
|
|
|
param.setRobot(callConfigVo.getRobot());
|
|
|
@@ -334,9 +343,11 @@ 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("workflowInstanceId",workflowInstanceId);
|
|
|
+ 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());
|
|
|
@@ -373,7 +384,7 @@ public class CompanyVoiceRoboticServiceImpl extends ServiceImpl<CompanyVoiceRobo
|
|
|
return result;
|
|
|
|
|
|
} catch (Exception ex) {
|
|
|
- log.error("callPhoneOne异常:", ex);
|
|
|
+ log.error("workflowcallPhoneOne异常:", ex);
|
|
|
}
|
|
|
return null;
|
|
|
|
|
|
@@ -623,6 +634,16 @@ public class CompanyVoiceRoboticServiceImpl extends ServiceImpl<CompanyVoiceRobo
|
|
|
CompanyVoiceRoboticCallees callee = getResultCalleeInfo(notify);
|
|
|
//更新调用日志
|
|
|
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")){
|
|
|
+ Map<String, Object> param = new HashMap<>();
|
|
|
+ param.put("callBackUuid",userData.getString("callBackUuid"));
|
|
|
+ CompletableFuture.runAsync(()->{
|
|
|
+ companyWorkflowEngine.resumeFromBlockingNode(userData.getString("workflowInstanceId"),userData.getString("nodeKey"),param);
|
|
|
+ },workFlowExecutor);
|
|
|
+ }
|
|
|
+ }
|
|
|
long count = companyVoiceRoboticCalleesMapper.countByRoboticIdNotUuid(callee.getRoboticId());
|
|
|
if(count == 0){
|
|
|
// new Thread(() -> dispenseWx(callee.getRoboticId())).start();
|