查询外呼回执话单(QueryOutboundCallReport)
根据通话ID查询外呼回执话单,返回通话的完整通信记录,包括主叫号码、被叫号码、通话最终状态、通话起止时间和通话时长等。
前提条件
-
已安装SDK。
-
已获取并使用AccessKey的方式,请参考获取AccessKey并配置到环境变量。
-
已获取CallId(通话ID)。调用CreateCallOutboundInstant发起实时外呼时,从返回参数Data.CallId获取;或调用QueryOutboundCallList查询外呼通话列表获取。
请求参数
|
名称 |
类型 |
必填 |
描述 |
示例值 |
|
Action |
String |
是 |
要执行的操作。取值:QueryOutboundCallReport。 |
QueryOutboundCallReport |
|
Version |
String |
是 |
API版本号。格式为:YYYY-MM-DD。取值:2025-11-27。 |
固定为2025-11-27 |
|
CallId |
String |
是 |
通话唯一标识 |
call-abc123def456 |
响应参数
|
名称 |
类型 |
描述 |
示例值 |
|
RequestId |
String |
请求ID。 |
xxxx-xxxx-xxxx |
|
Success |
Boolean |
请求是否成功。 |
True |
|
Code |
String |
错误码。请求成功时为空。 |
None |
|
Message |
String |
错误信息或成功提示。 |
操作成功 |
|
Data |
Object |
返回数据,包含CallId, CallStatus, CalledNumber, CallerNumber, StartTime, EndTime, Duration等字段,具体说明请参见下方返回参数说明。 |
使用示例
Python
import json
import os
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_tea_openapi.client import Client as OpenApiClient
from alibabacloud_tea_util import models as util_models
from alibabacloud_openapi_util.client import Client as OpenApiUtilClient
def main():
config = open_api_models.Config(
access_key_id=os.getenv("ACCESS_KEY_ID"),
access_key_secret=os.getenv("ACCESS_KEY_SECRET"),
)
config.endpoint = "thirdswaicall.aliyuncs.com"
config.protocol = "HTTPS"
client = OpenApiClient(config)
params = open_api_models.Params(
style="RPC",
version="2025-11-27",
action="QueryOutboundCallReport",
method="POST",
pathname="/",
protocol="HTTPS",
auth_type="AK",
req_body_type="json",
body_type="json",
)
body = {'CallId': 'call-abc123def456'}
request = open_api_models.OpenApiRequest(query=OpenApiUtilClient.query(body))
runtime = util_models.RuntimeOptions(autoretry=True, max_attempts=3)
try:
resp = client.call_api(params, request, runtime)
print(json.dumps(resp.get("body", {}), ensure_ascii=False, indent=2))
except Exception as e:
print(f"调用失败: {e}")
if __name__ == "__main__":
main()
Java
import com.aliyun.teaopenapi.Client;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teaopenapi.models.OpenApiRequest;
import com.aliyun.teaopenapi.models.Params;
import com.aliyun.teautil.models.RuntimeOptions;
import com.google.gson.Gson;
import java.util.HashMap;
import java.util.Map;
public class Demo {
public static void main(String[] args) throws Exception {
// 初始化配置
Config config = new Config()
.setAccessKeyId(System.getenv("ACCESS_KEY_ID"))
.setAccessKeySecret(System.getenv("ACCESS_KEY_SECRET"))
.setEndpoint("thirdswaicall.aliyuncs.com")
.setProtocol("HTTPS");
Client client = new Client(config);
// 设置 API 参数
Params params = new Params()
.setStyle("RPC")
.setVersion("2025-11-27")
.setAction("QueryOutboundCallReport")
.setMethod("POST")
.setPathname("/")
.setProtocol("HTTPS")
.setAuthType("AK")
.setReqBodyType("json")
.setBodyType("json");
// 构建请求参数
Map<String, Object> body = new HashMap<>();
body.put("CallId", 1);
OpenApiRequest request = new OpenApiRequest()
.setQuery(com.aliyun.openapiutil.Client.query(body));
// 设置运行时选项(自动重试)
RuntimeOptions runtime = new RuntimeOptions()
.setAutoretry(true)
.setMaxAttempts(3);
try {
// 调用 API
Map<String, ?> response = client.callApi(params, request, runtime);
Gson gson = new Gson();
System.out.println(gson.toJson(response.get("body")));
} catch (Exception e) {
System.err.println("调用失败: " + e.getMessage());
}
}
}
返回示例
{
"Success": true,
"Code": null,
"Message": "操作成功",
"RequestId": "xxxx-xxxx-xxxx",
"Data": {
"CallId": "call-abc123def456",
"CallStatus": 2001105,
"CalledNumber": "13800138000",
"CallerNumber": "null",
"StartTime": "2026-04-10 10:00:00",
"EndTime": "2026-04-10 10:02:30",
"Duration": 150
}
}
具体的处理结果在Data节点中,以下为Data节点的参数说明。
|
名称 |
类型 |
描述 |
示例值 |
|
CallId |
String |
通话唯一标识 |
call-abc123def456 |
|
CallStatus |
String |
通话最终状态(返回数字编码,具体含义请参见下方 CallStatus 编码表) |
2001105 |
|
CalledNumber |
String |
被叫号码 |
13800138000 |
|
CallerNumber |
String |
主叫号码 |
固定为null |
|
StartTime |
String |
通话开始时间 |
2026-04-10 10:00:00 |
|
EndTime |
String |
通话结束时间 |
2026-04-10 10:02:30 |
|
Duration |
Number |
通话时长(秒) |
150 |
CallStatus 编码表
|
编码值 |
枚举名称 |
说明 |
|
2001105 |
CALL_END |
正常结束 |
|
2001101 |
START_CALL |
正在呼叫中 |
|
2001102 |
CALLER_CONNECTED |
主叫方已接通,正在呼叫被叫方 |
|
2001103 |
IN_CALL |
通话接通,正在通话 |
|
2001104 |
CALLER_NUMBER_RESTRICTED |
主叫方号码受限 |
|
2001106 |
CALL_REJECT |
被叫号码为空 |
|
2001109 |
CALL_HANGUP |
通话已挂断(成功) |
|
2001111 |
CALLEE_REJECT |
被叫方拒接(简单) |
|
2001112 |
CALL_DIRECT |
通话转接中 |
|
2001133 |
CALLEE_NO_ANSWER |
被叫方未应答或提前挂机 |
|
2001134 |
CALL_NUMBER_INVALID |
被叫号码有误无法接通 |
|
2001135 |
CALL_CANCEL |
被叫方取消通话 |
|
2001116 |
PROVIDER_TIME_RESTRICTED |
呼叫时间段受限 |
|
2001117 |
PROVIDER_FREQUENCY_RESTRICTED |
呼叫频率受限 |
|
2001121 |
CALL_OVER_CONCURRENCY |
通话超出并发量 |
|
2000908 |
USER_LISTENED |
用户听完录音 |
|
2000921 |
USER_SPEAK_EARLY |
用户提前说话导致音频被截断 |
|
2000922 |
USER_HANG_UP |
用户挂断 |
|
2000923 |
USER_NO_ANSWER |
用户未应答或拒接或超时挂机 |
|
2000924 |
USER_NOT_IN_SERVICE |
号码停机/未开通 |
|
2000925 |
USER_UNREACHABLE |
号码空号或关机 |
|
2000927 |
USER_INVALID |
号码有误或无法接通/不在服务区 |
|
2000929 |
VOICE_PLAY_FAILED |
声音播放失败 |
|
2000930 |
GET_PRESS_TIMEOUT |
按键超时挂机 |
|
2000933 |
POWER_OFF |
关机 |
|
2000915 |
OUT_OF_SERVICE |
停机 |
错误信息
如果执行报错,请参考错误信息进行解决。