Skip to main content

获取状态报告

功能说明:#

状态报告数据,保存时间为三个月。 您可以通过此接口获取新产生的状态报告。注意,已成功获取的数据将会删除,请妥善处理接口返回的数据。

备注:#

  • 建议使用单线程获取。获取数据后,建议根据sid做去重。
  • 如果配置了推送状态报告模式,该接口将获取不到状态报告

HTTP头信息(具体参考调用说明):#

    Accept:application/json;charset=utf-8;    Content-Type:application/json;charset=utf-8;    X-SIGNATURE: $signature;    X-APIKEY: $APIKEY;    X-TIMESTAMP: $timestamp;    X-NONCE: $nonce;

请求#

    URL:https://gateway.yihuitong.top/callai-openapi/callai/pullStatus    访问方式:GET

请求参数#

参数名类型是否必传描述示例
pageSizeinteger每页个数,最大1000个,默认100个100

代码示例(头信息加密验签参考)#


/** * 数据验核查询 * * @return json格式字符串 */public static String pullStatus() throws NoSuchAlgorithmException ,  InvalidKeyException  {        String url = "https://gateway.yihuitong.top/callai-openapi/callai/pullStatus?pageSize=1000";        String nonce = "bc9efee185e64ab9bc0b07a2785c4660";        Integer timestamp = 1626856279;        String apikey = "123456789";        String secretKey = "1234567890";        String method = "GET";        String path = "/callai-openapi/callai/pullStatus";        String contentType = "";                                Map<String, Object> parameters = new HashMap<>();        parameters.put("pageSize", 1000);                        StringBuilder sb = new StringBuilder();        sb.append(method).append("\n")        .append(path).append("\n")        .append(apikey).append("\n")        .append(timestamp).append("\n")        .append(nonce).append("\n");                        if(parameters!=null && !parameters.isEmpty()) {                        if("json".equals(contentType) ) {                sb.append(JSON.toJSONString(parameters)).append("\n");            }else {                String canonical_query_string = formatUrlMap(parameters, true, false);                sb.append(canonical_query_string).append("\n");            }                    }        
        Mac hasher = Mac.getInstance("HmacSHA256");        hasher.init(new SecretKeySpec(secretKey.getBytes(), "HmacSHA256"));        byte[] hash = hasher.doFinal(sb.toString().getBytes());                                Map<String,String> headers = new HashMap<String, String>();        headers.put("X-SIGNATURE", DatatypeConverter.printBase64Binary(hash));        headers.put("X-APIKEY", apikey);        headers.put("X-TIMESTAMP", timestamp.toString());        headers.put("X-NONCE", nonce);                return HttpUtil.get(url, headers);//请自行使用get方式请求,可使用Apache HttpClient}

public static String formatUrlMap(Map<String, Object> paraMap,boolean urlEncode,boolean keyToLower) {        if(CollUtil.isEmpty(paraMap)) {            return null;        }               if(!(paraMap instanceof TreeMap)) {           paraMap = new TreeMap<String, Object>(paraMap);       }                return paraMap.entrySet().stream().map(entry -> {            String key = entry.getKey();            Object value = entry.getValue();            if(urlEncode) {                try {                    key = URLEncoder.encode(key, "utf-8");                } catch (UnsupportedEncodingException e) {                    e.printStackTrace();                }                if(value!=null && StringUtils.isNotBlank(value.toString())) {                    try {                        value = URLEncoder.encode(value.toString(), "utf-8");                    } catch (UnsupportedEncodingException e) {                        e.printStackTrace();                    }                }                if (keyToLower) {                    key = key.toLowerCase();                }            }            return key + "=" + value;        }).collect(Collectors.joining("&"));            }

响应参数#

名称类型描述
successboolean是否请求成功 false 为接口请求失败,请求失败 data 中无数据
errorCodestring错误码 200 代表成功
errorMessagestring错误提示
dataobject[]报告数据,是一个数组;格式参考下面

data 响应参数#

名称类型是否必传描述
mobilestring手机号
sidlong(64 位)sid 发送接口返回的参数
busIdstring您上送的业务系统内的 ID
batchIdstring批次号
userLabelslist标签
callTimestring呼叫时间 格式 yyyy-MM-dd HH:mm:ss
connectTimestring接通时间 格式 yyyy-MM-dd HH:mm:ss
callStatusstring呼叫状态 描述: SUCCESS 成功;FAIL 失败
levelstring意向等级
resultCodestring呼叫结果码
hangupTimestring挂机时间 格式 yyyy-MM-dd HH:mm:ss
callDurationint计费时长(秒)
interactiveCountint对话统计
audioPathstring录音文件
interactiveRecordslist对话流程
callDetailslist呼叫详情

interactiveRecords 对象#

名称类型是否必传描述
rolestring角色 CUSTOMER: 用户 ROBOT: 机器人
contentstring对话内容

callDetails 对象#

名称类型是否必传描述
sequenceint序列
callTimestring呼叫时间 格式 yyyy-MM-dd HH:mm:ss
endTimestring结束时间 格式 yyyy-MM-dd HH:mm:ss
callStatusstring呼叫状态 描述: SUCCESS 成功;FAIL 失败
resultCodestring呼叫结果码
Json响应示例#
{     "success": true,    "errorCode": "200",    "errorMessage": "成功",    "data": [        {            "busId": "1234567",            "sid": 9527,            "batchId": "S1625800477312819200",            "callStatus": "SUCCESS",            "mobile": "18105201314",            "callTime": "2023-06-09 00:58:36",            "connectTime": "2023-06-09 00:58:40",            "resultCode": "OK",            "level": "A",            "hangupTime": "2023-06-09 00:59:10",            "callDuration": 30,            "interactiveCount": 2,            "audioPath": "001a9a99-56a6-40b8-beb2-a584ef50a0e0.wav",            "userLabels": ["标签1","标签2"],            "interactiveRecords": [{                    "role": "ROBOT",                    "content": "你好,这里是ai外呼平台"            },{                    "role": "CUSTOMER",                    "content": "你好"            }],            "callDetails": [{                    "sequence": 1,                    "callTime": "2023-06-09 00:58:36",                    "endTime": "2023-06-09 00:59:10",                    "callStatus": "SUCCESS",                    "resultCode": "OK",            }],        }    ]}