Lịch sử cuộc gọi (CDR)
Truy vấn CDR theo nhiều điều kiện + tải ghi âm signed URL.
GET /api/pbx/cdr — Liệt kê
Query parameters
| Field | Type | Required | Mô tả | Giá trị hợp lệ |
|---|---|---|---|---|
from | date | optional | Ngày bắt đầu (YYYY-MM-DD) | Không truyền → now() - 30 ngày |
to | date | optional | Ngày kết thúc (YYYY-MM-DD) | Phải ≥ from. Không truyền → now() |
direction | string | optional | Hướng cuộc gọi | inbound, outbound, internal, local |
extension | string | optional | Lọc theo máy nhánh (match extension_number hoặc agent_extension) | 3-20 ký tự |
phone | string | optional | Lọc theo số điện thoại (match caller_number hoặc destination_number) | max 50 ký tự |
page | integer | optional | Số trang | ≥ 1 |
per_page | integer | optional | Số bản ghi/trang | 1-200 (default 50) |
Giới hạn cửa sổ thời gian
Cửa sổ from..to tối đa 30 ngày (configurable per tài khoản qua giới hạn cấu hình theo từng khách hàng). Vượt → HTTP 422.
Response body fields (mỗi item trong data[])
| Field | Type | Mô tả | Giá trị hợp lệ |
|---|---|---|---|
uuid | string | UUID cuộc gọi (Zorio PBX call_uuid) | UUID 36 ký tự |
direction | string | Hướng cuộc gọi | inbound / outbound / internal / local |
source_type | string | Nguồn cuộc gọi | inbound / outbound_manual / outbound_telesales / outbound_callback / outbound_webphone / internal |
caller_number | string | Số gọi đi (caller ID) | |
destination_number | string | Số đích | |
extension_number | string|null | Máy nhánh liên quan (caller hoặc destination) | |
agent_extension | string|null | Máy nhánh agent đã trả lời (cho queue/IVR) | |
start_time | datetime | Lúc cuộc gọi bắt đầu | ISO 8601 |
answer_time | datetime|null | Lúc nhấc máy | ISO 8601 (null nếu không nhấc) |
end_time | datetime | Lúc cúp máy | ISO 8601 |
duration | integer | Tổng thời lượng (giây) | ≥ 0 |
billsec | integer | Thời gian tính tiền (sau khi nhấc, giây) | ≥ 0 |
queue_name | string|null | Tên queue (nếu cuộc đi qua hàng đợi) | |
queue_wait_time | integer|null | Thời gian chờ trong queue (giây) | |
trunk_name | string|null | Tên trunk gọi ra (cho outbound) | |
transfer_count | integer | Số lần chuyển máy | ≥ 0 |
result | string | Kết quả cuộc gọi | answered / busy / no_answer / failed / cancelled / rejected / voicemail |
hangup_cause | string | Mã hangup từ Zorio PBX | vd NORMAL_CLEARING, NO_ANSWER, USER_BUSY, CALL_REJECTED, ... |
sip_response_code | string|null | Mã SIP cuối (cho outbound) | vd 200, 486, 487 |
recording_available | bool | Có file ghi âm không | true / false |
created_at | datetime | Ngày tạo row CDR |
Response Body (JSON) — 200
json
{
"current_page": 1,
"data": [
{
"uuid": "65569ce0-0183-4f61-a3b2-0e433cfa4031",
"direction": "outbound",
"source_type": "outbound_telesales",
"caller_number": "0900000021",
"destination_number": "0987654321",
"extension_number": "0900000021",
"agent_extension": null,
"start_time": "2026-06-27T08:15:42+00:00",
"answer_time": "2026-06-27T08:15:42+00:00",
"end_time": "2026-06-27T08:15:56+00:00",
"duration": 14,
"billsec": 14,
"queue_name": null,
"queue_wait_time": null,
"trunk_name": null,
"transfer_count": 0,
"result": "answered",
"hangup_cause": "NORMAL_CLEARING",
"sip_response_code": null,
"recording_available": true,
"created_at": "2026-06-27 08:15:56"
}
],
"last_page": 5,
"per_page": 20,
"total": 87
}GET /api/pbx/cdr/{uuid} — Chi tiết + signed recording URL
Path parameter
uuid (string, Zorio PBX call_uuid).
Response = 22 field như list + 1 object recording (nếu có ghi âm).
recording object fields
| Field | Type | Mô tả |
|---|---|---|
duration | integer | Thời lượng file ghi âm (giây) |
file_size | integer | Kích thước file (byte) |
recorded_at | datetime | Lúc ghi âm bắt đầu (ISO 8601) |
url | string | URL signed HMAC tải file .wav — chỉ valid trong expires_in_seconds |
expires_in_seconds | integer | TTL của URL (default 1800 = 30 phút) |
Response Body (JSON) — 200
json
{
"data": {
"uuid": "65569ce0-...",
"direction": "outbound",
"recording_available": true,
"recording": {
"duration": 14,
"file_size": 56265,
"recorded_at": "2026-06-27T08:15:57+00:00",
"url": "https://app.zorio.vn/api/public/recordings/401/audio?expires=1782706011&signature=de93e86...",
"expires_in_seconds": 1800
}
}
}GET /api/pbx/cdr/{uuid}/recording — 302 redirect tới signed URL
Path parameter
uuid (CDR Unique-ID).
Response
HTTP 302 với header Location: <signed URL>. Client follow redirect để tải file .wav. TTL signed URL: 30 phút (HMAC SHA256).
