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.http.HttpEntity; 
 | 
import com.ruoyi.common.utils.sign.Md5Utils; 
 | 
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 java.io.UnsupportedEncodingException; 
 | 
import java.nio.charset.StandardCharsets; 
 | 
import java.util.HashMap; 
 | 
import java.util.Map; 
 | 
  
 | 
@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; 
 | 
    } 
 | 
} 
 |