package com.smartor.config;
|
|
import com.alibaba.fastjson2.JSON;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.ruoyi.common.utils.HttpUtil;
|
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.http.HttpEntity;
|
import com.ruoyi.common.utils.sign.Md5Utils;
|
import com.smartor.domain.robot.RobotData;
|
import com.smartor.domain.robot.RobotDataConfig;
|
import com.smartor.domain.robot.RobotIdlenumVO;
|
import com.smartor.domain.robot.RobotScritpTemplateVO;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.context.annotation.Configuration;
|
import org.springframework.stereotype.Component;
|
|
import javax.mail.Multipart;
|
import java.io.UnsupportedEncodingException;
|
import java.nio.charset.StandardCharsets;
|
import java.util.HashMap;
|
import java.util.Map;
|
import java.util.UUID;
|
|
@Configuration
|
public class RobotPhoneUtils {
|
|
@Value("${hzphoneIP}")
|
private String hzphoneIP;
|
|
@Value("${hzphonePort}")
|
private String hzphonePort;
|
|
@Value("${phoneMySelf}")
|
private String phoneMySelf;
|
|
@Value("${app_id}")
|
private String app_id;
|
|
@Value(value = "${app_key}")
|
private String app_key;
|
|
/**
|
* 线路空闲数量接口
|
*
|
* @param robotIdlenumVO
|
* @return
|
*/
|
public String idlenum(RobotIdlenumVO robotIdlenumVO) {
|
robotIdlenumVO.setAni(phoneMySelf);
|
robotIdlenumVO.setApp_key(app_key);
|
robotIdlenumVO.setApp_id(app_id);
|
|
//设置sign的值 md5(app_id+app_key+ani+special_ch+time_stamp) specify_ch md5 时 true 用 1 替代,false 用 0 替代
|
String signStr = robotIdlenumVO.getSpecify_ch() == true ? robotIdlenumVO.getApp_id() + robotIdlenumVO.getApp_key() + robotIdlenumVO.getAni() + 1 + robotIdlenumVO.getTime_stamp() : robotIdlenumVO.getApp_id() + robotIdlenumVO.getApp_key() + robotIdlenumVO.getAni() + 0 + robotIdlenumVO.getTime_stamp();
|
robotIdlenumVO.setSign(Md5Utils.hash(signStr));
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
Map<String, Object> map = null;
|
try {
|
map = objectMapper.readValue(JSON.toJSONString(robotIdlenumVO), Map.class);
|
} catch (JsonProcessingException e) {
|
e.printStackTrace();
|
}
|
return sendReq(map, "/aiengine/ai_api/idlenum");
|
}
|
|
|
/**
|
* 外呼发起请求接口
|
*/
|
public String outbound(RobotScritpTemplateVO robotScritpTemplateVO) {
|
robotScritpTemplateVO.setAni(phoneMySelf);
|
robotScritpTemplateVO.setApp_key(app_key);
|
robotScritpTemplateVO.setApp_id(app_id);
|
String signStr = robotScritpTemplateVO.getSpecify_ch() == true ? robotScritpTemplateVO.getApp_id() + robotScritpTemplateVO.getApp_key() + robotScritpTemplateVO.getBs_uuid() + robotScritpTemplateVO.getAni() + 1 + robotScritpTemplateVO.getTime_stamp() : robotScritpTemplateVO.getApp_id() + robotScritpTemplateVO.getApp_key() + robotScritpTemplateVO.getBs_uuid() + robotScritpTemplateVO.getAni() + 0 + robotScritpTemplateVO.getTime_stamp();
|
robotScritpTemplateVO.setSign(Md5Utils.hash(signStr));
|
//下面注释的这个测试用的
|
// robotScritpTemplateVO.setNotes("aa");
|
// robotScritpTemplateVO.setApp_id("hz_ali");
|
// robotScritpTemplateVO.setApp_key("a2f3b5799d635216aa280362fafd8c35");
|
// robotScritpTemplateVO.setBs_uuid(UUID.randomUUID().toString());
|
// robotScritpTemplateVO.setAni("83234089");
|
// robotScritpTemplateVO.setDnis("1010");
|
// robotScritpTemplateVO.setSpecify_ch(false);
|
// robotScritpTemplateVO.setTime_stamp(1566227782278333L);
|
// robotScritpTemplateVO.setSign(null);
|
// robotScritpTemplateVO.setEngine("ali");
|
// robotScritpTemplateVO.setAsr_sample("8000");
|
// robotScritpTemplateVO.setAsr_ent("ZurNHpaQLq6P55YS");
|
// robotScritpTemplateVO.setTts_ent("ZurNHpaQLq6P55YS");
|
// robotScritpTemplateVO.setTts_vcn("Aixia");
|
// robotScritpTemplateVO.setTts_volume(100);
|
// robotScritpTemplateVO.setTts_speed(-300);
|
// robotScritpTemplateVO.setDial_mode("呼叫对接方式,FS注册到网关、网关注册到FS、IP对接、IP校验账号对接");
|
// robotScritpTemplateVO.setDial_server("call_out_group,192.168.2.108:5060");
|
// robotScritpTemplateVO.setOutbound_codes("PCMU,PCMA,OPUS,G722");
|
// robotScritpTemplateVO.setAuto_test(true);
|
// RobotData robotData = new RobotData();
|
// RobotDataConfig robotDataConfig = new RobotDataConfig();
|
// robotDataConfig.setTemplate_name("inbound_88008001_16k_utf8.json");
|
// robotData.setConfig(robotDataConfig);
|
// robotScritpTemplateVO.setData(robotData);
|
// md5(app_id+app_key+bs_uuid+ani+dnis+specify_ch+time_stamp) specify_ch md5 时 true 用 1 替代,false 用 0 替代;
|
ObjectMapper objectMapper = new ObjectMapper();
|
Map<String, Object> map = null;
|
try {
|
map = objectMapper.readValue(JSON.toJSONString(robotScritpTemplateVO), Map.class);
|
} catch (JsonProcessingException e) {
|
e.printStackTrace();
|
}
|
|
return sendReq(map, "/aiengine/ai_api/outbound");
|
}
|
|
|
private String sendReq(Map<String, Object> map, String path) {
|
HttpEntity<Map<String, Object>> req = new HttpEntity<>(getHead(), map);
|
HttpEntity<String> stringHttpEntity = HttpUtil.postJsonRequestV2(hzphoneIP + ":" + hzphonePort + path, req, String.class);
|
String responseBody = null;
|
try {
|
responseBody = new String(stringHttpEntity.getBody().getBytes("ISO-8859-1"), "UTF-8");
|
System.out.println("电话信息返回 : " + responseBody);
|
} catch (UnsupportedEncodingException e) {
|
e.printStackTrace();
|
}
|
return new String(stringHttpEntity.getBody().getBytes(StandardCharsets.UTF_8));
|
}
|
|
private Map<String, String> getHead() {
|
HashMap<String, String> header = new HashMap<>();
|
header.put("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko");
|
header.put("Content-Type", "application/json");
|
return header;
|
}
|
}
|