| | |
| | | } |
| | | |
| | | /** |
| | | * 创建告警外呼任务 |
| | | * @param map |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<String> createOutCallTaskByAlarm(Map<String, Object> map) { |
| | | List<Map<String, String>> params = (List<Map<String, String>>) map.get("list"); |
| | | JSONArray arr = getCalleeInfoAlarm(params,(List<String>) map.get("titles")); |
| | | String requestUrl = url + CREATE_TASK_URL; |
| | | LocalDateTime now = LocalDateTime.now(); |
| | | String timestamp = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss SSS")); |
| | | String transId = generateTransId(now); |
| | | String taskName = now.format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH:mm:ss")) + "智能外呼"; |
| | | if(null!= map.get("taskName") && !map.get("taskName").equals("")){ |
| | | taskName = map.get("taskName").toString(); |
| | | } |
| | | String[] numbers = StringUtils.split(callingNumbers,","); |
| | | String taskScheduleTime = LocalDateTime.now().plusHours(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); |
| | | if (null!=map.get("taskScheduleTime") && !map.get("taskScheduleTime").equals("")){ |
| | | taskScheduleTime = map.get("taskScheduleTime").toString(); |
| | | } |
| | | String scenesIds = scenesId; |
| | | if (null!=map.get("scenesId") && !map.get("scenesId").equals("")){ |
| | | scenesIds = map.get("scenesId").toString(); |
| | | } |
| | | HttpHeaders httpHeaders = new HttpHeaders(); |
| | | httpHeaders.add("Content-Type", CONTENT_TYPE); |
| | | httpHeaders.add("Accept", ACCEPT_TYPE); |
| | | httpHeaders.add("Accept-Encoding", ACCEPT_ENCODING); |
| | | JSONObject paramJson = new JSONObject(); |
| | | paramJson.put("taskName", taskName); |
| | | paramJson.put("scenesId", scenesIds); |
| | | paramJson.put("callingNumbers", numbers); |
| | | paramJson.put("taskScheduleTime", taskScheduleTime); |
| | | paramJson.put("calleeData", arr); |
| | | paramJson.put("empId", empId); |
| | | String token = getToken(appId, timestamp, transId, appSecret, paramJson.toJSONString()); |
| | | JSONObject headerJson = new JSONObject(); |
| | | headerJson.put("appId", appId); |
| | | headerJson.put("timestamp", timestamp); |
| | | headerJson.put("transId", transId); |
| | | headerJson.put("token", token); |
| | | JSONObject bodyJson = new JSONObject(); |
| | | bodyJson.put("head", headerJson); |
| | | bodyJson.put("body", paramJson); |
| | | HttpEntity<String> stringHttpEntity = new HttpEntity<>(bodyJson.toJSONString(), httpHeaders); |
| | | log.info("创建超汛限智能外呼任务请求参数:{}", bodyJson.toJSONString()); |
| | | ResponseEntity<String> response = restTemplate.postForEntity(requestUrl, stringHttpEntity, String.class); |
| | | log.info("创建外呼任务请求结果:{}", response.getBody()); |
| | | if (response.getStatusCode() != HttpStatus.OK) { |
| | | log.error("创建智能外呼任务失败:{}", response.getStatusCode()); |
| | | } |
| | | JSONObject jsonObject = JSON.parseObject(response.getBody()); |
| | | Boolean success = jsonObject.getBoolean("success"); |
| | | String taskId = ""; |
| | | if (success){ |
| | | //通过任务名称查询taskId |
| | | taskId = callTaskMapper.getTaskIdByTaskName(taskName); |
| | | } |
| | | List<String> list = new ArrayList<>(); |
| | | list.add(response.getBody()); |
| | | list.add(taskId); |
| | | list.add(success.toString()); |
| | | // 返回 |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * 外呼动态数据封装 |
| | | * @param params |
| | | * @return |
| | | */ |
| | | private JSONArray getCalleeInfoAlarm(List<Map<String, String>> params,List<String> titles) { |
| | | JSONArray arr = new JSONArray(); |
| | | params.forEach(map -> { |
| | | JSONObject json = new JSONObject(); |
| | | for (String title : titles) { |
| | | json.put(title, map.get(title)); |
| | | } |
| | | arr.add(json); |
| | | }); |
| | | return arr; |
| | | } |
| | | |
| | | /** |
| | | * 获取通话详情 |
| | | * @param taskId |
| | | * @param calleeNumber |