CDR
CDRs chứa thông tin về nguồn gốc cuộc gọi, đích đến cuộc gọi, ngày và giờ cuộc gọi bắt đầu, thời gian cuộc gọi thực sự được kết nối và thời gian cuộc gọi kết thúc. Một cuộc gọi được coi là bắt đầu hoặc có nguồn gốc khi người gọi nhấc máy (off-hook). Cuộc gọi được coi là kết thúc khi người gọi hoặc bên được gọi gác máy (on-hook).
SkyX PBX cung cấp một dịch vụ CDR tích hợp sẵn cung cấp dữ liệu thời gian thực đầy đủ cho tất cả các cuộc gọi. Khi một cuộc gọi hoàn tất, bản ghi chi tiết cuộc gọi có thể được đẩy đến một ứng dụng khác ngay lập tức qua WebHook và WebSocket.
Quản lý CDR
Sau khi đăng nhập với tư cách quản trị viên người thuê, chọn menu Call Statistics > CDR (Thống kê cuộc gọi > CDR), và CDR sẽ được liệt kê. Bạn có thể phát hoặc tải xuống tệp ghi âm nếu ghi âm cuộc gọi được bật.


Khi bạn nhấp đúp vào một CDR, nhiều chi tiết cuộc gọi hơn sẽ được hiển thị. Ví dụ, nếu A gọi B, sau đó chuyển B đến một lễ tân ảo, nhấn DTMF, và kết nối với một hàng đợi, và một trong các tổng đài viên hàng đợi trả lời, chúng ta có thể có CDR sau.

Đẩy CDR tới Webhook
Bạn có thể thu thập CDR bằng cách thực hiện yêu cầu HTTP đến một dịch vụ hoặc ứng dụng bên ngoài mỗi khi một cuộc gọi hoàn tất.
Webhook là một cơ chế cho phép bạn gọi ra một chương trình bên ngoài dựa trên các sự kiện trong SkyX PBX.
Chỉ quản trị viên người thuê có khả năng bật/tắt tính năng này.
Chọn Company (Công ty) từ menu bên trái. Trên trang Event URL (URL sự kiện), bật CDR Events (Sự kiện CDR). Chọn một Phương thức xác thực (Authentication Method) và nhập URL Webhook của bạn. PBX sau đó sẽ đẩy các sự kiện CDR đến Webhook bên thứ 3 của bạn.

Dưới đây là một ví dụ khi máy nhánh 102 nhận được cuộc gọi.
{
"event_type": "call_start",
"call_id": "Q0sXhDgxnowmQp1P9swHLw..",
"callee": "sip:102@test.io",
"callee_display_name": "Jason",
"caller": "sip:101@test.io",
"caller_display_name": "Tom",
"cdr_id": "798119942409949185",
"direction": "ext",
"session_id": "798119942409949184",
"tenant_id": "798119491077668864",
"time": "1705051422"
}
Dưới đây là một ví dụ về CDR. Luồng cuộc gọi là người gọi > trunk > PBX IVR > Hàng đợi > Tổng đài viên.
{
"event_type":"call_cdr",
"answered_time":"1679476851",
"call_id":"b6PEEYEcn5speSovMAybCw..",
"callee":"5000",
"callee_domain":"test.io",
"caller":"1888722",
"caller_display_name":"",
"caller_domain":"192.168.0.16",
"did_cid":"18800606",
"direction":"in",
"ended_reason":"callee_disconnect",
"ended_time":"1679476870",
"outbound_caller_id":"",
"ring_time":"1679476851",
"session_id":"690852418417594368",
"start_time":"1679476851",
"status_code":"0",
"tenant_id":"690833127458734080",
"tenant_name":"SkyX Inc.",
"trunk_name":"AudioCodes"
"user_data":"",
"call_targets":[
{
"answered_time":"1679476851",
"call_type":"normal_call",
"callee":"5000",
"caller":"1888722",
"destination":"sip:5000@192.168.0.16:8922",
"end_reason":"referred",
"ended_time":"1679476857",
"id":"690833127458734080",
"outbound_caller_id":"",
"ring_time":"1679476851",
"start_time":"1679476851",
"status_code":0,
"trunk_name":"AudioCodes"
},
{
"answered_time":"1679476857",
"call_type":"normal_call",
"callee":"8000",
"caller":"1888722",
"destination":"sip:8000@192.168.0.16:8916",
"end_reason":"referred",
"ended_time":"1679476862",
"id":"690833127458734080",
"outbound_caller_id":"",
"ring_time":"1679476857",
"start_time":"1679476857",
"status_code":0,
"trunk_name":"AudioCodes"
},
{
"answered_time":"0",
"call_type":"normal_call",
"callee":"102",
"caller":"1888722",
"destination":"sip:102@192.168.0.16:9070",
"end_reason":"None",
"ended_time":"1679476862",
"id":"690833127458734080",
"outbound_caller_id":"",
"ring_time":"1679476858",
"start_time":"1679476858",
"status_code":0,
"trunk_name":"AudioCodes"
},
{
"answered_time":"1679476862",
"call_type":"normal_call",
"callee":"103",
"caller":"1888722",
"destination":"sip:103@192.168.0.16:9530",
"end_reason":"None",
"ended_time":"1679476870",
"id":"690833127458734080",
"outbound_caller_id":"",
"ring_time":"1679476858",
"start_time":"1679476858",
"status_code":0,
"trunk_name":"AudioCodes"
}
]
}
Thông tin CDR ở định dạng JSON và bao gồm các trường sau:
- answered_time: Dấu thời gian khi cuộc gọi được trả lời ở định dạng Unix timestamp. Trong ví dụ này, thời gian này đại diện cho khi PBX IVR trả lời. Nếu giá trị là 0, có nghĩa là cuộc gọi không được trả lời.
- call_id: ID cuộc gọi. Trong ví dụ này, đó là Call-Id của INVITE đến từ trunk đến SkyX PBX.
- callee: Số người nhận đầu tiên khi cuộc gọi đến PBX. Trong ví dụ này, đó là số IVR của SkyX PBX 5000.
- callee_domain: Tên miền SIP (tên miền SIP của người thuê) của người nhận.
- caller: Người gọi từ trunk.
- caller_display_name: Tên hiển thị của tiêu đề FROM trong INVITE được gửi từ trunk.
- caller_domain: Phần host của tiêu đề FROM trong INVITE được gửi từ trunk.
- did_cid: Số DID được quay từ trunk. Nó còn được gọi là phần người dùng của tiêu đề TO trong INVITE được gửi từ trunk.
- direction: Cho biết cuộc gọi là inbound hay outbound. "in" có nghĩa là inbound từ trunk trong khi "out" có nghĩa là outbound đến trunk. Nếu một cuộc gọi đến từ và sau đó chuyển tiếp đến trunk thì hướng sẽ là "in2out".
- end_reason: Cho biết lý do cuộc gọi kết thúc. Các lý do có thể có bao gồm:
caller_disconnect,callee_disconnect,replaced,referred,redirected,blind_transfer_complete,attended_transfer_completevàcancelled. - ended_time: Thời gian cuộc gọi kết thúc ở định dạng Unix timestamp.
- event_type: Cho biết thông tin này thuộc về CDR.
- outbound_caller_id: ID người gọi đi cho các cuộc gọi đi được thực hiện đến trunk với ID người gọi đi đã được thiết lập.
- ring_time: Thời gian đổ chuông của cuộc gọi; ví dụ thời gian đổ chuông cho SkyX PBX IVR 5000 đang đổ chuông.
- session_id: ID phiên cho các cuộc gọi cũng có mặt trong tiêu đề
X-session-IDcủa tin nhắn INVITE/200 OK; có thể được sử dụng để truy vấn các tệp ghi âm. - start_time: Thời gian bắt đầu cuộc gọi được biểu thị dưới dạng Unix timestamp cho cuộc gọi đến SkyX PBX.
- status_code: Nếu cuộc gọi thất bại, trường này cho biết mã trạng thái là mã trạng thái SIP (ví dụ: 404 hoặc 408). Giá trị 0 có nghĩa là không có lỗi.
- tenant_id: Khi một cuộc gọi đến PBX, nó được khớp với tất cả các quy tắc inbound của người thuê bằng DID. Một khi một quy tắc được khớp, cuộc gọi sẽ được định tuyến đến người thuê đó và trường này cho biết ID của người thuê xử lý cuộc gọi.
- tenant_name: Tên của người thuê xử lý cuộc gọi.
- trunk_name: Tên của trunk mà cuộc gọi được thực hiện.
- user_data: Nếu một cuộc gọi được khởi chạy qua REST API, trường này chứa bất kỳ dữ liệu người dùng nào được truyền ở định dạng chuỗi.
Một cuộc gọi có thể có nhiều đích đến. Ví dụ, nếu máy nhánh 101 được đăng ký với PBX từ cả Điện thoại IP và Ứng dụng đồng thời và ai đó gọi 101, sẽ có hai đích: một cho Điện thoại IP và một cho Ứng dụng. Một ví dụ khác là khi ai đó gọi 101 và nó đổ chuông nhưng không được trả lời. Sau một thời gian, cuộc gọi được chuyển tiếp đến 102, 102 đổ chuông và được trả lời. Trong trường hợp này, có hai đích: một cho 101 và một cho 102. Trong ví dụ của chúng ta, khi một cuộc gọi đến từ trunk, đích đầu tiên là IVR 5000. Người gọi sau đó nhấn DTMF 1 và cuộc gọi được chuyển tiếp đến Hàng đợi 8000 trở thành đích thứ hai. Trong khi chờ trong hàng đợi, các tổng đài viên 102 và 103 đổ chuông làm đích thứ ba và thứ tư.
Mục tiêu của IVR 5000:
{
"answered_time":"1679476851",
"call_type":"normal_call",
"callee":"5000",
"caller":"1888722",
"destination":"sip:5000@192.168.0.16:8922",
"end_reason":"referred",
"ended_time":"1679476857",
"id":"690833127458734080",
"outbound_caller_id":"",
"ring_time":"1679476851",
"start_time":"1679476851",
"status_code":0,
"trunk_name":"AudioCodes"
}
- answered_time: Thời gian trả lời của mục tiêu cuộc gọi đó ở định dạng Unix timestamp. Giá trị 0 có nghĩa là cuộc gọi không được trả lời.
- call_type: Loại cuộc gọi. Các giá trị có thể có bao gồm
normal_call,queue_call,ring_group_call,callbackvàqueue_callback. - callee: Người nhận của mục tiêu này.
- caller: Người gọi của cuộc gọi này.
- destination: Địa chỉ IP và cổng của mục tiêu này.
- end_reason: Lý do mục tiêu này kết thúc. Trong trường hợp này, vì người gọi nhấn DTMF và cuộc gọi được chuyển đến hàng đợi và mục tiêu này (IVR) ngắt kết nối, lý do kết thúc là "referred".
- end_time: Thời gian mục tiêu này kết thúc ở định dạng Unix timestamp.
- id: ID của CDR mục tiêu này trong cơ sở dữ liệu.
- outbound_caller_id: Nếu mục tiêu là một trunk và một ID người gọi đi được thiết lập cho cuộc gọi, trường này sẽ chứa ID người gọi đi đó.
- ring_time: Thời gian đổ chuông cho mục tiêu này.
- start_time: Thời gian cuộc gọi đến mục tiêu này bắt đầu được biểu thị dưới dạng Unix timestamp.
- status_code: Nếu một cuộc gọi đến mục tiêu này thất bại thì mã trạng thái sẽ là mã trạng thái SIP (ví dụ: 404 hoặc 408). Giá trị 0 có nghĩa là không có lỗi.
- trunk_name: Tên của trunk mà cuộc gọi đến mục tiêu này được thực hiện.
Đẩy CDR đến Người đăng ký WebSocket
Bạn có thể thu thập CDR bằng cách đăng ký sự kiện CDR từ một dịch vụ hoặc ứng dụng bên ngoài mỗi khi một cuộc gọi hoàn tất.
Một đăng ký WebSocket là một cơ chế cho phép bạn nhận các sự kiện trong một chương trình bên ngoài từ SkyX PBX.
Chỉ quản trị viên người thuê có khả năng đăng ký sự kiện này.
Để biết thêm chi tiết, vui lòng tham khảo chủ đề này.