热线通话记录回调
更新时间:2026-06-23
1. 接口概述
本接口为百度热线呼入转机器人通话结束回调推送接口,当用户通过百度热线呼入并转接机器人完成通话后,百度热线平台会主动向客户提前配置的推送地址,以 POST 方式推送本次通话的完整话单数据。
推送数据包含:通话基础信息、主被叫号码、通话时长、录音文件地址、完整对话交互明细等核心数据,客户服务端接收并解析数据后,可完成话单存储、质检、数据分析等业务逻辑。
2. 接口基本信息
| 项次 | 说明 |
|---|---|
| 推送方式 | HTTP/HTTPS POST 请求 |
| 数据格式 | application/json;charset=utf-8 |
| 推送时机 | 单通呼入转机器人通话完全结束后 |
| 地址配置 | 回调地址、请求 Header 头需在百度热线平台统一配置 |
3. 推送请求头(Header)
回调接口的请求头参数与回调推送地址在平台同步配置,支持自定义鉴权、签名等 Header 参数,常用配置示例:
| Header 参数名 | 说明 | 是否必填 |
|---|---|---|
| Content-Type | 固定为application/json;charset=utf-8 | 是 |
| Authorization | 自定义鉴权令牌(平台配置) | 按需配置 |
| X-Baidu-Sign | 百度平台签名参数(平台配置) | 按需配置 |
| X-Tenant-Id | 租户标识(平台配置) | 按需配置 |
4. 推送请求体(Body)
请求体为JSON 格式,整体结构分为通话主信息(RecordInfoVo) 和对话明细列表(RecordDetail) 两层,字段与 Java 实体类严格对应。
4.1 通话主信息字段(info)
| 字段名 | 数据类型 | 字段含义 | 示例值 |
|---|---|---|---|
| sessionId | String | 通话唯一 ID | 7440329927666176000 |
| talkingStartTime | String | 实际通话开始时间 | 2026-03-19 17:34:49 |
| endTime | String | 通话结束时间 | 2026-03-19 17:35:31 |
| ringingTimeLen | Long | 响铃时长(单位:毫秒) | 0 |
| talkingTimeLen | Long | 通话总时长(单位:毫秒) | 42000 |
| waitTimeLen | Long | 等待时长 | 803 |
| mobile | String | 主叫号码 | 01059658100 |
| calledNum | String | 被叫号码 | 02138310700,3102 |
| callStatus | String | 通话状态 | connected |
| hangupParty | String | 挂断方 | user |
| transferResult | String | 转接结果 | no_transfer |
| robotName | String | 交互机器人名称 | zcq 测试机器人 |
| tenantId | String | 租户 ID | 47192404237079552 |
| robotId | String | 机器人唯一 ID | a8063a16-0795-4895-addf-9244589621be |
| transferFailReason | String | 转接失败原因 | - |
4.2 对话记录详情(callDetail)
| 字段名 | 数据类型 | 字段含义 | 示例值 |
|---|---|---|---|
| sessionId | String | 通话ID | 7440329927666176000 |
| startTime | String | 呼叫时间 | 2026-03-19 17:34:49 |
| talkingStartTime | String | 通话开始时间 | 2026-03-19 17:34:49 |
| endTime | String | 通话结束时间 | 2026-03-19 17:35:31 |
| ringingTimeLen | Long | 响铃时长(毫秒) | 0 |
| talkingTimeLen | Long | 通话时长(毫秒) | 42000 |
| waitTimeLen | Long | 等待时长 | 803 |
| mobile | String | 主叫号码 | 01059658100 |
| mobileArea | String | 主叫号码归属地 | 北京 北京 |
| calledNum | String | 被叫号码 | 02138310700,3102 |
| calledArea | String | 被叫号码归属地 | 上海 上海 |
| callStatus | String | 通话状态: 接通connected 未接通unconnected 超限over_concurrent |
connected |
| hangupParty | String | 挂断方(user/robot) | user |
| transResult | String | 转接结果: 成功 transfer_success 失败transfer_failed 未转接no_transfer |
no_transfer |
| robotName | String | 机器人名称 | zcq测试机器人 |
| audioCallPath | String | 录音路径 | http://xxxxxxxxx |
| tenantId | String | 租户ID | 47192404237079552 |
| robotId | String | 机器人id | a8063a16-0795-4895-addf-9244589621be |
| transferFailReason | String | 未接通原因 | 空号 |
| record | List | 对话记录 |
4.3 对话记录(record)
| 字段名 | 数据类型 | 字段含义 | 示例值 |
|---|---|---|---|
| id | String | 明细唯一标识 | 13965 |
| role | String | 交互角色(voice - 客户,robot - 机器人) | robot |
| timestamp | Long | 毫秒级时间戳 | 1773912893474 |
| content | String | 交互文本内容 | 您好,热线客服为您服务 |
| sn | String | 文本唯一序列号 | a1db3c5c-0571-4a25-8144-b9ea516c6f93 |
| start | String | 相对开始时间(格式:00:00:00) | 00:00:01 |
| stop | String | 相对结束时间(格式:00:00:00) | 00:00:04 |
| timeLen | Long | 单句时长(单位:毫秒) | 2479 |
| interrupted | Boolean | 是否被打断(true - 是,false - 否) | false |
| interruptedTime | String | 打断相对时间 | - |
| interruptedParty | String | 打断方 | 用户 |
| silent | Boolean | 是否静默(true - 是,false - 否) | false |
| silentTimeLen | Long | 静默时长(单位:毫秒) | 0 |
| nodeInfo | String | 流程节点信息 | - |
| sourceType | String | 话术来源(文本回复/ 用户静默 / 闲聊等) | 文本回复 |
| interruptedType | Integer | 未进入节点原因(0 - 正常) | 0 |
| interruptedTypeResult | String | 打断类型描述 | - |
| hangup | Boolean | 是否为挂机触发语句 | false |
5. 接收方响应规范
客户服务端接收到推送数据后,需同步返回标准JSON 响应,告知平台接收结果:
5.1 成功响应
JSON
1{
2 "code": 0,
3 "msg": "success"
4}
5.2 失败响应
JSON
1{
2 "code": 非0数字,
3 "msg": "接收失败原因描述"
4}
5.3 响应要求
- 响应格式必须为 JSON,编码 UTF-8;
- 接口响应超时时间建议≤5 秒,超时视为接收失败;
- 接收失败时,百度平台会按照默认策略重试推送。
6. 完整推送数据示例
JSON
1{
2 "info": {
3 "sessionId": "7440329927666176000",
4 "tenantId": "47192404237079552",
5 "talkingStartTime": "2026-03-19 17:34:49",
6 "endTime": "2026-03-19 17:35:31",
7 "ringingTimeLen": 0,
8 "talkingTimeLen": 42000,
9 "waitTimeLen": 803,
10 "mobile": "01059658100",
11 "calledNum": "02138310700,3102",
12 "callStatus": "connected",
13 "transferFailReason": "-",
14 "transferResult": "no_transfer",
15 "robotName": "zcq测试机器人",
16 "hangupParty": "user",
17 "robotId": "a8063a16-0795-4895-addf-9244589621be"
18 },
19 "callDetail": {
20 "sessionId": "7440329927666176000",
21 "startTime": "2026-03-19 17:34:49",
22 "talkingStartTime": "2026-03-19 17:34:49",
23 "endTime": "2026-03-19 17:35:31",
24 "ringingTimeLen": 0,
25 "talkingTimeLen": 42000,
26 "waitTimeLen": 803,
27 "mobile": "01059658100",
28 "mobileArea": "北京 北京",
29 "calledNum": "02138310700,3102",
30 "calledArea": "上海 上海",
31 "callStatus": "connected",
32 "callDidOwner": "",
33 "talkingTurn": 1,
34 "hangupParty": "user",
35 "transResult": "no_transfer",
36 "fromSource": "saas",
37 "robotName": "zcq测试机器人",
38 "audioCallPath": "https://s3.bj.bcebos.com/aicc-records-test/records/call_wav/1/20260319/343/3/20260319173449-7440329927666176000-2051--.wav?response-content-disposition=attachment%3B%20filename%3D%227440329927666176000.wav%22&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20260319T093536Z&X-Amz-SignedHeaders=host&X-Amz-Credential=ALTAKufFIcrDx5Yp4hIefGNKju%2F20260319%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Expires=3600&X-Amz-Signature=bbd7736e6acb62d69ae82e7d54a81b63833bd283eeadbd0ab4fdf558e06844f6",
39 "soundRecord": 1,
40 "record": [
41 {
42 "id": "13965",
43 "role": "robot",
44 "timestamp": 1773912893474,
45 "content": "您好,热线客服为您服务",
46 "sn": "a1db3c5c-0571-4a25-8144-b9ea516c6f93",
47 "start": "00:00:01",
48 "stop": "00:00:04",
49 "timeLen": 2479,
50 "interrupted": false,
51 "interruptedParty": "用户",
52 "silent": false,
53 "silentTimeLen": 0,
54 "sourceType": "文本回复",
55 "hangup": false
56 },
57 {
58 "id": "13966",
59 "role": "robot",
60 "timestamp": 1773912895698,
61 "content": "这里是zcq大模型",
62 "sn": "a1db3c5c-0571-4a25-8144-b9ea516c6f93",
63 "start": "00:00:04",
64 "stop": "00:00:06",
65 "timeLen": 2220,
66 "interrupted": false,
67 "interruptedParty": "用户",
68 "silent": false,
69 "silentTimeLen": 0,
70 "sourceType": "文本回复",
71 "hangup": false
72 },
73 {
74 "id": "13967",
75 "role": "voice",
76 "timestamp": 1773912901703,
77 "start": "00:00:06",
78 "stop": "00:00:12",
79 "timeLen": 6007,
80 "interrupted": false,
81 "interruptedParty": "用户",
82 "silent": true,
83 "silentTimeLen": 6007,
84 "interruptedType": 0,
85 "hangup": false
86 },
87 {
88 "id": "13968",
89 "role": "robot",
90 "timestamp": 1773912904592,
91 "content": "喂,您好,听得到吗?",
92 "sn": "eb886163-d23d-4e7d-9fa7-043c631bddae",
93 "start": "00:00:12",
94 "stop": "00:00:15",
95 "timeLen": 2399,
96 "interrupted": false,
97 "interruptedParty": "用户",
98 "silent": false,
99 "silentTimeLen": 0,
100 "sourceType": "用户静默",
101 "hangup": false
102 },
103 {
104 "id": "13969",
105 "role": "voice",
106 "timestamp": 1773912910597,
107 "start": "00:00:15",
108 "stop": "00:00:21",
109 "timeLen": 6007,
110 "interrupted": false,
111 "interruptedParty": "用户",
112 "silent": true,
113 "silentTimeLen": 6007,
114 "interruptedType": 0,
115 "hangup": false
116 },
117 {
118 "id": "13970",
119 "role": "robot",
120 "timestamp": 1773912912408,
121 "content": "喂,在吗?",
122 "sn": "4c850558-2ac9-46e3-8c45-f7e1e13e2794",
123 "start": "00:00:21",
124 "stop": "00:00:22",
125 "timeLen": 1329,
126 "interrupted": false,
127 "interruptedParty": "用户",
128 "silent": false,
129 "silentTimeLen": 0,
130 "sourceType": "用户静默",
131 "hangup": false
132 },
133 {
134 "id": "13971",
135 "role": "voice",
136 "timestamp": 1773912914735,
137 "content": "需要听明白。",
138 "start": "00:00:23",
139 "stop": "00:00:24",
140 "timeLen": 1380,
141 "interrupted": false,
142 "interruptedParty": "用户",
143 "silent": false,
144 "silentTimeLen": 0,
145 "interruptedType": 0,
146 "hangup": false
147 },
148 {
149 "id": "13972",
150 "role": "robot",
151 "timestamp": 1773912925250,
152 "content": "我明白您的需求啦~您放心,我会慢慢说,确保您听得明明白白的!现在有什么我可以帮您的吗?",
153 "sn": "cd9eeb57-49a1-8f29-9800561d5b1d",
154 "start": "00:00:27",
155 "stop": "00:00:35",
156 "timeLen": 8769,
157 "interrupted": false,
158 "interruptedParty": "用户",
159 "silent": false,
160 "silentTimeLen": 0,
161 "sourceType": "闲聊",
162 "hangup": false
163 },
164 {
165 "id": "13973",
166 "role": "voice",
167 "timestamp": 1773912931254,
168 "start": "00:00:35",
169 "stop": "00:00:41",
170 "timeLen": 6007,
171 "interrupted": false,
172 "interruptedParty": "用户",
173 "silent": true,
174 "silentTimeLen": 6007,
175 "interruptedType": 0,
176 "hangup": true
177 },
178 {
179 "id": "13974",
180 "role": "robot",
181 "timestamp": 1773912931982,
182 "content": "喂,您好,听得到吗?",
183 "sn": "d34cd1a6-4175-4fb6-a782-4fa71f7d3c4d",
184 "start": "00:00:42",
185 "stop": "00:00:42",
186 "timeLen": 175,
187 "interrupted": false,
188 "interruptedParty": "用户",
189 "silent": false,
190 "silentTimeLen": 0,
191 "sourceType": "用户静默",
192 "hangup": false
193 }
194 ],
195 "mobileIsp": 0,
196 "icon": "",
197 "tenantId": "47192404237079552",
198 "robotId": "a8063a16-0795-4895-addf-9244589621be",
199 "transferFailReason": "-"
200 }
201}
7. 注意事项
- 录音链接有效期:
audioCallPath为百度对象存储临时链接,存在有效期,接收后需及时下载存储; - 字段兼容:平台后续可能新增字段,接收端需做兼容处理,避免因新增字段导致解析失败;
- 重试机制:若接收端返回失败或超时,平台会自动重试,请勿重复处理同一条
sessionId数据; - 鉴权安全:建议配置 Header 签名 / 鉴权参数,防止非法请求伪造话单数据;
- 数据唯一性:
sessionId为全局唯一标识,可作为话单数据主键去重。
评价此篇文章
