智能對話分析已和阿里云云呼叫中心完成對接,目前有兩種對接方式:自動對接和手動對接。
自動對接
云呼叫中心產生的錄音支持自動推送到智能對話分析進行質檢分析,如需進一步了解,請點擊質檢推送管理
手動對接
若自動對接不符合您的要求,可以考慮通過接入SDK方式發起質檢分析。
流程為:
調用云呼SDK的GetUploadAudioDataParams接口,獲取云呼音頻信息。
具體說明參考GetUploadAudioDataParams。
組裝入參信息jsonStr。
具體說明參考上傳音頻質檢。
調用智能對話分析的UploadAudioData接口,發起質檢分析。
以Java代碼為例:
maven依賴,接入云呼和質檢SDK,其中fastjson可選。
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>ccc20200701</artifactId>
<version>2.6.7</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-qualitycheck</artifactId>
<version>3.0.7</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.0.6</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83_noneautotype</version>
</dependency>
完整調用demo(入口為main方法):
說明
調用接口前,需配置環境變量,通過環境變量讀取訪問憑證。關于配置環境變量的操作,請參見JAVA SDK-使用說明-配置訪問憑證。
云呼叫中心的AccessKey ID和AccessKey Secret的環境變量名:CC_AK_ENV
、CC_SK_ENV
智能對話分析的AccessKey ID和AccessKey Secret的環境變量名:SCA_AK_ENV
、SCA_SK_ENV
package com.aliyun.sample;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.ccc20200701.models.GetUploadAudioDataParamsResponse;
import com.aliyun.tea.TeaException;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import com.aliyuncs.qualitycheck.model.v20190115.UploadAudioDataRequest;
import com.aliyuncs.qualitycheck.model.v20190115.UploadAudioDataResponse;
/**
* 從云呼叫中心獲取音頻信息到發起音頻質檢鏈路Demo
* 需要準備內容:
* 1.云呼叫中心音頻對應的contactId和instanceId
* 2.(可選)UploadAudioData的jsonStr中的其他參數,按需添加
*/
public class Sample {
/**
* 此處通過從環境變量中讀取AccessKey,初始化云呼叫中心Client
* @return Client
* @throws Exception
*/
public static com.aliyun.ccc20200701.Client createCCClient() throws Exception {
// 阿里云賬號AccessKey擁有所有API的訪問權限,風險很高。強烈建議您創建并使用RAM用戶進行API訪問或日常運維,請登錄RAM控制臺創建RAM用戶
// 此處以把AccessKey 和 AccessKeySecret 保存在環境變量為例說明。您也可以根據業務需要,保存到配置文件里
// 強烈建議不要把 AccessKey 和 AccessKeySecret 保存到代碼里,會存在密鑰泄漏風險
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
.setAccessKeyId(System.getenv("CC_AK_ENV"))
.setAccessKeySecret(System.getenv("CC_SK_ENV"));
// 云呼叫中心服務接入的地址,此處以cn-shanghai為例
config.endpoint = "ccc.cn-shanghai.aliyuncs.com";
return new com.aliyun.ccc20200701.Client(config);
}
/**
* 此處通過從環境變量中讀取AccessKey,初始化智能對話分析Client
* @return Client
* @throws Exception
*/
public static IAcsClient createSCAClient() throws Exception {
// 阿里云賬號AccessKey擁有所有API的訪問權限,風險很高。強烈建議您創建并使用RAM用戶進行API訪問或日常運維,請登錄RAM控制臺創建RAM用戶
// 此處以把AccessKey 和 AccessKeySecret 保存在環境變量為例說明。您也可以根據業務需要,保存到配置文件里
// 強烈建議不要把 AccessKey 和 AccessKeySecret 保存到代碼里,會存在密鑰泄漏風險
IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", System.getenv("SCA_AK_ENV"), System.getenv("SCA_SK_ENV"));
//指定服務接入地址,以下值為固定
DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", "Qualitycheck", "qualitycheck.cn-hangzhou.aliyuncs.com");
return new DefaultAcsClient(profile);
}
/**
* 調用云呼叫中心SDK,獲取音頻的相關參數
* @param args_
* @throws Exception
*/
public static void main(String[] args_) throws Exception {
/**
* 1.調用云呼叫中心SDK,獲取音頻信息
* 詳細調用示例,請參見http://bestwisewords.com/document_detail/450651.html
* 云呼叫中心音頻對應的contactId和instanceId,您可以通過云呼叫中心控制臺查詢
*/
String ccAudioStr = getParamStr("contactId","instanceId");
/**
* ccAudioStr返回示例:其中validTimes,channels為必要數據,其他按需獲取
* {
* "autoSplit":1,
* "appKey":1**********1,
* "sampleRate":8,
* "callList":[
* {
* "callId":"job-2********8",
* "validTimes":[
* {
* "begin_time":0,
* "end_time":67060,
* "speaker_id":"xuan"
* }
* ],
* "resolveType":"ali-ACC",
* "instance":"report-test-2",
* "callee":"1********2",
* "accUid":1********1,
* "callStartTime":1659444574225,
* "customerServiceName":"x****qi",
* "tid":"760427ac-fa3f-4785-8286-1cb2cf3104b9",
* "callType":1,
* "skillGroupUUID":"listTest@report-test-2",
* "caller":"0********8",
* "customerServicePhone":"8********7",
* "channels":[
* {
* "speaker_id":"x****o",
* "channel_key":"ch-user-1********2-8********7-1********6-job-2********8"
* }
* ],
* "sourceType":1,
* "channelKey":"ch-user-1********2-8********7-1********6-job-2********8",
* "skillGroupName":"listTest",
* "voiceFileUrl":"https://ccc-v2-staging.oss-cn-hangzhou.aliyuncs.com/ccc-record-mixed/report-test-2/2022/08/job-2********8.mkv?Expires=1663124613&OSSAccessKeyId=L********q&Signature=bxLnpftFnn4h1GU1FqPPrgvGrCk%3D#v2",
* "skillGroupId":0,
* "customerServiceId":2**********4
* }
* ]
* }
*/
/**
* 2. 組裝調用參數
*/
String jsonStr = assemble(ccAudioStr);
/**
* jsonStr返回示例:其中validTimes,channels,voiceFileUrl,audioType為必要數據,其他按需獲取
* {
* "callList":[
* {
* "audioType":"ali-mkv",
* "validTimes":[
* {
* "begin_time":0,
* "end_time":67060,
* "speaker_id":"x****i"
* }
* ],
* "channels":[
* {
* "speaker_id":"x****i",
* "channel_key":"ch-user-1********2-8********7-1********6-job-2********8"
* }
* ],
* "voiceFileUrl":"https://ccc-v2-staging.oss-cn-hangzhou.aliyuncs.com/ccc-record-mixed/report-test-2/2022/08/job-2********8.mkv?Expires=1663124613&OSSAccessKeyId=L********q&Signature=bxLnpftFnn4h1GU1FqPPrgvGrCk%3D#v2",
* }
* ]
* }
*/
/**
* 3. 調用智能對話分析SDK發起音頻質檢任務
* 詳細文檔請參見http://bestwisewords.com/document_detail/139399.html
*/
uploadAudioData(jsonStr);
}
/**
* 獲取音頻信息,作為調用UploadAudioData的入參
* 云呼叫中心音頻對應的contactId和instanceId,您可以通過云呼叫中心控制臺查詢
* @param contactId 會話Id
* @param instanceId 實例Id
* @throws Exception
*/
public static String getParamStr(String contactId,String instanceId) throws Exception {
com.aliyun.ccc20200701.Client client = Sample.createCCClient();
com.aliyun.ccc20200701.models.GetUploadAudioDataParamsRequest getUploadAudioDataParamsRequest = new com.aliyun.ccc20200701.models.GetUploadAudioDataParamsRequest();
getUploadAudioDataParamsRequest.setContactId(contactId);
getUploadAudioDataParamsRequest.setInstanceId(instanceId);
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
GetUploadAudioDataParamsResponse uploadAudioDataParamsWithOptions = client.getUploadAudioDataParamsWithOptions(getUploadAudioDataParamsRequest, runtime);
// 如有需要,您可以添加自己的記錄日志邏輯
System.out.println(uploadAudioDataParamsWithOptions.getBody().getData().getParamsStr());
return uploadAudioDataParamsWithOptions.getBody().getData().getParamsStr();
} catch (TeaException error) {
// 如有需要,您可以添加自己的記錄錯誤日志邏輯
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 如有需要,您可以添加自己的記錄錯誤日志邏輯
com.aliyun.teautil.Common.assertAsString(error.message);
}
return null;
}
/**
* 按需組裝jsonStr,此處只展示必要條件
* @param ccAudioStr
* @return
*/
public static String assemble(String ccAudioStr) {
JSONObject jsonStrObject = new JSONObject();
JSONObject ccStrObject = JSON.parseObject(ccAudioStr);
JSONArray callList = ccStrObject.getJSONArray("callList");
JSONArray jsonStrCallList = new JSONArray();
callList.add(
new JSONObject()
.fluentPut("validTimes",callList.getJSONObject(0).getJSONObject("validTimes"))
.fluentPut("channels",callList.getJSONObject(0).getJSONObject("channels"))
.fluentPut("voiceFileUrl",callList.getJSONObject(0).getString("voiceFileUrl"))
//此處必須傳入參數audioType=ali-mkv
.fluentPut("audioType","ali-mkv")
);
jsonStrObject.put("callList",jsonStrCallList);
//可以在此基礎上添加其他參數,實現您個性化的業務邏輯
System.out.println(jsonStrObject.toJSONString());
return jsonStrObject.toJSONString();
}
public static void uploadAudioData(String ccAudioStr) {
UploadAudioDataRequest req = new UploadAudioDataRequest();
req.setJsonStr(ccAudioStr);
try {
UploadAudioDataResponse response = createSCAClient().getAcsResponse(req);
System.out.println(response.getCode());
System.out.println(response.getMessage());
System.out.println(response.getData());
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
文檔內容是否對您有幫助?