通話紀錄資料結構
概述
CDR (Call Detail Record) 是通話詳細紀錄的完整資料結構,由 AICC 系統在通話結束後生成,並透過 HTTP 推送到業務系統。每筆 CDR 包含通話的各個層面的信息,包括通話參與者、設備信息、IVR 日誌、語音識別結果等。
完整 CDR 資料結構
JSON 推送範例
json
{
"call": {
"id": "call_20260323_001",
"cdrId": "cdr_20260323_001",
"callId": "123456789",
"sessionId": "session_20260323_001",
"areaCode": "886",
"callType": 2,
"inboundCallerId": "0912345678",
"outboundCallerId": "0212345678",
"onlineState": 1,
"state": 3,
"agentId": "agent_001",
"agentName": "王小明",
"agentTeam": "業務部",
"queueName": "一般查詢",
"ivr": 1,
"startTime": "2026-03-23 14:30:00",
"endTime": "2026-03-23 14:32:30",
"duration": 150,
"talkDuration": 120,
"callCount": 1,
"taskId": "task_001",
"taskName": "Q1銀行卡推廣",
"contactId": "contact_001",
"customerName": "李美香",
"customerPhone": "0987654321",
"customerAddress": "台中市西屯區",
"customData": {
"orderAmount": "8000",
"source": "campaign_001"
},
"cdrType": 2,
"hangupCode": 1,
"hangupReason": "客戶主動掛機",
"recordFile": "/record/20260323/call_20260323_001.wav",
"recordUrl": "https://aicc.example.com/record/20260323/call_20260323_001.wav",
"transcriptUrl": "https://aicc.example.com/transcript/20260323/call_20260323_001.txt"
},
"callDeviceList": [
{
"id": "device_1",
"deviceType": 1,
"deviceName": "座席001",
"phoneNumber": "0212345678",
"joinTime": "2026-03-23 14:30:05",
"leaveTime": "2026-03-23 14:32:30",
"duration": 145,
"muted": 0,
"state": 3,
"location": "台北辦公室"
},
{
"id": "device_2",
"deviceType": 2,
"deviceName": "客戶電話",
"phoneNumber": "0987654321",
"joinTime": "2026-03-23 14:30:10",
"leaveTime": "2026-03-23 14:32:30",
"duration": 140,
"muted": 0,
"state": 3,
"location": "台中"
},
{
"id": "device_3",
"deviceType": 3,
"deviceName": "PBX分機",
"phoneNumber": "ext123",
"joinTime": "2026-03-23 14:30:00",
"leaveTime": "2026-03-23 14:32:30",
"duration": 150,
"muted": 0,
"state": 3,
"location": "中心局"
}
],
"callIvrLogs": [
{
"id": "ivr_log_1",
"ivrId": "ivr_flow_001",
"ivrName": "語音導航流程_001",
"enterTime": "2026-03-23 14:30:00",
"leaveTime": "2026-03-23 14:30:15",
"duration": 15,
"flowPath": "歡迎 > 按1查詢 > 轉接座席",
"lastNode": "轉接座席",
"hangupCode": 0,
"hangupReason": "正常轉接"
}
],
"callDetailList": [
{
"id": "detail_1",
"eventType": 1,
"eventTime": "2026-03-23 14:30:00",
"eventName": "通話開始",
"eventData": {
"caller": "0987654321",
"callee": "0212345678",
"direction": "inbound"
}
},
{
"id": "detail_2",
"eventType": 5,
"eventTime": "2026-03-23 14:30:15",
"eventName": "IVR 轉接",
"eventData": {
"ivrNode": "按1查詢餘額",
"nextTarget": "agent_001"
}
},
{
"id": "detail_3",
"eventType": 2,
"eventTime": "2026-03-23 14:32:30",
"eventName": "通話結束",
"eventData": {
"hangupCode": 1,
"hangupReason": "客戶主動掛機"
}
}
],
"speechTexts": [
{
"id": "speech_1",
"deviceId": "device_2",
"speaker": "李美香",
"startTime": "2026-03-23 14:30:20",
"endTime": "2026-03-23 14:30:35",
"duration": 15,
"text": "您好,我想查詢我的帳戶餘額",
"confidence": 0.95,
"language": "zh-TW"
},
{
"id": "speech_2",
"deviceId": "device_1",
"speaker": "王小明",
"startTime": "2026-03-23 14:30:40",
"endTime": "2026-03-23 14:31:10",
"duration": 30,
"text": "好的,請稍候,我為您查詢一下",
"confidence": 0.98,
"language": "zh-TW"
}
]
}Call 物件詳細字段說明
基本信息
| 字段名 | 型別 | 說明 |
|---|---|---|
id | string | 通話記錄 ID,全系統唯一 |
cdrId | string | CDR ID,用於識別此條 CDR 記錄 |
callId | string | SIP 通話 ID |
sessionId | string | 會話 ID,用於追蹤相關聯的通話 |
areaCode | string | 區域代碼 (如 886 表示台灣) |
通話類型及方向
| 字段名 | 型別 | 說明 |
|---|---|---|
callType | integer | 通話類型 (詳見 callType 枚舉) |
inboundCallerId | string | 來電號碼 (主叫方) |
outboundCallerId | string | 去電號碼 (被叫方) |
onlineState | integer | 在線狀態 (1: 在線, 0: 離線) |
通話狀態
| 字段名 | 型別 | 說明 |
|---|---|---|
state | integer | 通話狀態碼 (0: 初始, 1: 呼出, 2: 連接中, 3: 已連接, 4: 保持, 5: 轉接, 6: 諮詢, 7: 會議) |
duration | integer | 通話總時長 (秒) |
talkDuration | integer | 實際通話時長 (秒) |
callCount | integer | 通話次數 |
座席信息
| 字段名 | 型別 | 說明 |
|---|---|---|
agentId | string | 座席 ID |
agentName | string | 座席姓名 |
agentTeam | string | 座席所屬團隊 |
queueName | string | 所屬隊列名稱 |
IVR 信息
| 字段名 | 型別 | 說明 |
|---|---|---|
ivr | integer | 是否經過 IVR (1: 是, 0: 否) |
時間戳
| 字段名 | 型別 | 說明 |
|---|---|---|
startTime | string | 通話開始時間 (ISO 8601 格式) |
endTime | string | 通話結束時間 (ISO 8601 格式) |
任務及聯絡人
| 字段名 | 型別 | 說明 |
|---|---|---|
taskId | string | 所屬任務 ID (外撥時) |
taskName | string | 所屬任務名稱 |
contactId | string | 聯絡人 ID |
customerName | string | 客戶姓名 |
customerPhone | string | 客戶電話 |
customerAddress | string | 客戶地址 |
自定義數據
| 字段名 | 型別 | 說明 |
|---|---|---|
customData | object | 自定義欄位數據,鍵值對形式 |
掛機信息
| 字段名 | 型別 | 說明 |
|---|---|---|
cdrType | integer | CDR 類型 (詳見 cdrType 枚舉) |
hangupCode | integer | 掛機代碼 (0-15) |
hangupReason | string | 掛機原因文字說明 |
錄音及轉錄
| 字段名 | 型別 | 說明 |
|---|---|---|
recordFile | string | 本地錄音檔案路徑 |
recordUrl | string | 錄音下載 URL |
transcriptUrl | string | 轉錄文本 URL |
callDeviceList 設備列表
字段說明
| 字段名 | 型別 | 說明 |
|---|---|---|
id | string | 設備 ID |
deviceType | integer | 設備類型 (1: 座席, 2: 客戶, 3: 外線) |
deviceName | string | 設備名稱 |
phoneNumber | string | 設備電話號碼 |
joinTime | string | 加入時間 |
leaveTime | string | 離開時間 |
duration | integer | 參與時長 (秒) |
muted | integer | 是否靜音 (1: 是, 0: 否) |
state | integer | 設備狀態 |
location | string | 設備位置 |
callIvrLogs IVR 日誌
字段說明
| 字段名 | 型別 | 說明 |
|---|---|---|
id | string | IVR 日誌 ID |
ivrId | string | IVR 流程 ID |
ivrName | string | IVR 流程名稱 |
enterTime | string | 進入時間 |
leaveTime | string | 離開時間 |
duration | integer | 停留時長 (秒) |
flowPath | string | 流程路徑 (用 > 分隔) |
lastNode | string | 最後節點名稱 |
hangupCode | integer | 掛機代碼 |
hangupReason | string | 掛機原因 |
callDetailList 事件詳情列表
字段說明
| 字段名 | 型別 | 說明 |
|---|---|---|
id | string | 事件 ID |
eventType | integer | 事件類型 (1: 通話開始, 2: 通話結束, 3: 保持, 4: 恢復, 5: IVR 轉接, 6: 轉接, 7: 諮詢, 8: 會議) |
eventTime | string | 事件發生時間 |
eventName | string | 事件名稱 |
eventData | object | 事件相關數據 (內容根據 eventType 而異) |
speechTexts 語音文本
字段說明
| 字段名 | 型別 | 說明 |
|---|---|---|
id | string | 語音文本 ID |
deviceId | string | 所屬設備 ID |
speaker | string | 說話者名稱 |
startTime | string | 開始時間 |
endTime | string | 結束時間 |
duration | integer | 時長 (秒) |
text | string | 轉錄文本 |
confidence | number | 識別置信度 (0-1) |
language | string | 語言代碼 (zh-TW: 繁體中文, zh-CN: 簡體中文, en: 英文) |
數據類型及長度限制
| 字段 | 類型 | 長度限制 | 備註 |
|---|---|---|---|
| id, callId, sessionId | string | 最大 100 字元 | 系統生成 |
| inboundCallerId, outboundCallerId | string | 最多 20 位數字 | 電話號碼 |
| agentName, customerName | string | 最大 50 字元 | 中文時建議不超過 25 字 |
| customData | object | 最大 10000 字符 | JSON 格式 |
| recordUrl, transcriptUrl | string | 最大 500 字元 | 完整 URL |
| text (speechTexts) | string | 最大 5000 字符 | 語音識別結果 |
注意事項
- 時間戳格式:均採用 ISO 8601 格式的 UTC+8 時間
- 數據完整性:某些字段可能為空,取決於通話類型和配置
- 嵌套數組:callDeviceList、callDetailList、speechTexts 都是數組,數量不固定
- 自定義數據:customData 的鍵值必須與欄位定義相符
- 大數據處理:對於長通話,speechTexts 陣列可能很大,請注意記憶體使用