本文为您介绍如何通过呼叫ID获取呼叫记录。
前提条件
开通语音服务。具体操作。请参见开通服务。
获取AccessKey。具体操作,请参见获取AccessKey。
购买号码。具体操作,请参见真实号管理。
创建文本转语音模板或上传语音文件。具体操作,请参见创建文本转语音模板和通过控制台上传语音文件。
入参列表
参数名称 | 参数类型 | 必填与否 | 样例取值 | 参数说明 |
CallId | String | 必须 | 113853585007^100675005007 | 呼叫唯一ID。 |
QueryDate | Long | 必须 | 123456 | Unix时间戳,会查询这个时间点对应那一天的记录(单位毫秒)。 |
ProdId | Long | 必须 | 11010000138001 | 产品ID。取值:
|
出参列表
出参名称 | 出参类型 | 样例取值 | 参数说明 |
RequestId | String | 8906582E-6722 | 请求ID。 |
Code | String | OK | 状态码。返回OK代表请求成功,其他错误码详见错误码列表。 |
Message | String | 请求成功 | 状态码的描述。 |
Data | String | {"caller":"1390000****","startDate":"","stateDesc":"502","duration":0,"callerShowNumber":"0534475****","gmtCreate":"2017-11-27 20:09:06","state":"502","endDate":"","calleeShowNumber":"0534475****","callee":"1391111****"} | 呼叫详情。 |
技术对接步骤
下载SDK工具包
SDK工具包中一共包含了2个类库,一个aliyun-java-sdk-core包,另外一个是alicom-dyvms-api包,将这两个包执行mvn package命令或者mvn deploy命令打包出相应的jar包,添加到工程类库中依赖使用。
SDK&DEMO下载地址,请参见SDK及DEMO下载。
编写样例程序
说明调用接口前,需配置环境变量,通过环境变量读取访问凭证。AccessKey ID和AccessKey Secret的环境变量名:VMS_AK_ENV 、VMS_SK_ENV。配置详情请参见配置访问凭证。
//设置访问超时时间 System.setProperty("sun.net.client.defaultConnectTimeout", "10000"); System.setProperty("sun.net.client.defaultReadTimeout", "10000"); //云通信产品-语音API服务产品名称(产品名固定,无需修改) final String product = "Dyvmsapi"; //语音API服务产品域名(接口地址固定,无需修改) final String domain = "dyvmsapi.aliyuncs.com"; //需要替换成你的AK信息 //初始化acsClient暂时不支持多region // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 // 本示例以将AccessKey ID和AccessKey Secret保存在环境变量为例说明。您也可以根据业务需要,保存到配置文件里。 IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", System.getenv("VMS_AK_ENV"), System.getenv("VMS_SK_ENV")); DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain); IAcsClient acsClient = new DefaultAcsClient(profile); //组装请求对象-具体描述见控制台-文档部分内容 QueryCallDetailByCallIdRequest request = new QueryCallDetailByCallIdRequest(); //设置呼叫ID request.setCallId("10062593****^10019107****"); //设置你需要查询的时间,会查询对应那一天的记录,hint跨天情况可以判断一下昨天的记录 request.setQueryDate(System.currentTimeMillis()); //设置对应的产类型,语音通知为:11000000300006L,语音验证码为:11010000138001L,IVR为:11000000300005L //点击拨号为:11000000300004L,SIP为:11000000300009L request.setProdId(11000000300004L); //hint 此处可能会抛出异常,注意catch QueryCallDetailByCallIdResponse clickToDialResponse = acsClient.getAcsResponse(request);
错误码列表
Code | 描述 |
OK | 请求成功 |
isp.RAM_PERMISSION_DENY | RAM权限DENY |
isv.INVALID_PARAMETERS | 参数异常 |
isp.SYSTEM_ERROR | 系统错误 |
isv.BUSINESS_LIMIT_CONTROL | 触发流控 |