Skip to content

Lịch sử cuộc gọi ​

API quản lý và tra cứu dữ liệu lịch sử cuộc gọi.

Lấy danh sách lịch sử cuộc gọi ​

Lấy danh sách tất cả cuộc gọi (theo nhóm) của dự án. Hỗ trợ phân trang và nhiều điều kiện lọc

Nếu tham số lọc số truyền giá trị -1 sẽ được hiểu là bỏ qua điều kiện lọc đó.

GET[URL]/m-cdr/api/call/get-all?key_search={key_search}&group_member_no={group_member_no}&member_no={member_no}&hotline={hotline}&disposition={disposition}&customer_code={customer_code}&from={from}&to={to}&type_call={type_call}&min_postage={min_postage}&max_postage={max_postage}&has_hotline={has_hotline}&page={page}&size={size}

Header

Tham sốGiá trị
X-API-Keytoken-open-api

Tham số

Tham sốKiểuBắt buộcMô tả
key_searchStringTừ khóa tìm kiếm (số điện thoại)
group_member_noStringMã nhóm nhân viên (ví dụ: mem_12345)
member_noStringMã thành viên (ví dụ: 1001)
hotlineStringSố hotline sử dụng (ví dụ: 19001001)
dispositionStringTrạng thái cuộc gọi (xem Bảng tra cứu trạng thái)
customer_codeStringMã khách hàng (ví dụ: cus_556677)
fromLongThời gian bắt đầu (Unix timestamp - epoch milliseconds)
toLongThời gian kết thúc (Unix timestamp - epoch milliseconds)
type_callIntLoại cuộc gọi (xem bảng Phân loại cuộc gọi). Mặc định: -1 (tất cả)
min_postageDoubleCước phí tối thiểu. Mặc định: -1 (bỏ qua)
max_postageDoubleCước phí tối đa. Mặc định: -1 (bỏ qua)
pageIntTrang hiện tại (bắt đầu từ 0, mặc định: 0)
sizeIntSố lượng bản ghi mỗi trang (mặc định: 20)
has_hotlineIntLọc hotline: -1 hoặc để trống (có hotline), 0 (không có hotline), 1 (tất cả). Mặc định: -1

Response

Tham sốKiểuMô tả
errorIntMã lỗi (0: Thành công, khác 0: Có lỗi)
messageStringThông báo kết quả
dataList[Object]Danh sách cuộc gọi theo nhóm

Cấu trúc phần tử trong data (Thông tin cuộc gọi):

Tham sốKiểuMô tả
trans_idStringMã giao dịch cuộc gọi
group_idStringID nhóm cuộc gọi
create_atLongThời điểm tạo cuộc gọi (Unix timestamp - ms)
call_atLongThời điểm bắt đầu đàm thoại (Unix timestamp - ms)
caller_infoObjectThông tin người gọi (xem bảng CallPartyInfo)
callee_infoObjectThông tin người nghe (xem bảng CallPartyInfo)
hotlineStringSố hotline sử dụng
type_callIntLoại cuộc gọi (xem bảng Phân loại cuộc gọi)
end_callStringKênh/Bên kết thúc cuộc gọi (CALLER, CALLEE,...)
postageDoubleCước phí cuộc gọi
time_callIntThời gian đàm thoại (giây)
durationIntTổng thời lượng cuộc gọi bao gồm cả đổ chuông (giây)
dispositionStringTrạng thái cuộc gọi (xem Bảng tra cứu trạng thái)
is_recordBooleantrue nếu có file ghi âm, false nếu không có ghi âm
customer_codeStringMã khách hàng trong hệ thống
payment_channelStringKênh thanh toán (ví dụ: MONEY)
group_member_noStringMã nhóm nhân viên phụ trách
external_call_idStringMã cuộc gọi từ hệ thống bên ngoài
auto_dial_service_chargeDoublePhí dịch vụ gọi tự động

Cấu trúc đối tượng CallPartyInfo (caller_info / callee_info):

Tham sốKiểuMô tả
member_noStringMã nhánh/thành viên (caller_member_no / callee_member_no)
numberStringĐầu số điện thoại
nameStringTên người gọi / người nghe
channelStringKênh kết nối (ví dụ: SIP/1000, PSTN)
typeStringLoại đối tượng (USER, Phone, SIP,...)
telco_codeStringMã nhà mạng viễn thông (VTL, VNP, VMS,...)

Ví dụ response

json
{
  "error": 0,
  "message": "SUCCESS",
  "data": [
    {
      "create_at": 1712034000000,
      "call_at": 1712034002000,
      "group_id": "GRP_98765",
      "caller_info": {
        "member_no": "MEM_001",
        "number": "0987654321",
        "name": "Nguyen Van A",
        "channel": "SIP/1000",
        "type": "USER",
        "telco_code": ""
      },
      "callee_info": {
        "member_no": "MEM_002",
        "number": "0123456789",
        "name": "Khách Hàng",
        "channel": "PSTN",
        "type": "Phone",
        "telco_code": "VTL"
      },
      "hotline": "19001000",
      "type_call": 1,
      "end_call": "CALLER",
      "postage": 1500.0,
      "time_call": 120,
      "duration": 135,
      "disposition": "ANSWERED",
      "trans_id": "CALL_ABC123",
      "is_record": true,
      "customer_code": "cus_556677",
      "payment_channel": "MONEY",
      "group_member_no": "mem_12345",
      "external_call_id": "ext_9999",
      "auto_dial_service_charge": 0.0
    }
  ]
}

Bảng mã lỗi

errorMô tả
0Thành công
409API Key không hợp lệ hoặc không có quyền truy cập
500Lỗi hệ thống

Lấy số lượng cuộc gọi ​

Lấy tổng số lượng cuộc gọi theo các điều kiện lọc

Nếu tham số lọc số truyền giá trị -1 sẽ được hiểu là bỏ qua điều kiện lọc đó.

GET[URL]/m-cdr/api/call/count-all?key_search={key_search}&group_member_no={group_member_no}&member_no={member_no}&hotline={hotline}&disposition={disposition}&customer_code={customer_code}&from={from}&to={to}&type_call={type_call}&min_postage={min_postage}&max_postage={max_postage}&has_hotline={has_hotline}&page={page}&size={size}

Header

Tham sốGiá trị
X-API-Keytoken-open-api

Tham số

Tham sốKiểuBắt buộcMô tả
key_searchStringTừ khóa tìm kiếm (số điện thoại)
group_member_noStringMã nhóm nhân viên (ví dụ: mem_12345)
member_noStringMã thành viên (ví dụ: 1001)
hotlineStringSố hotline sử dụng (ví dụ: 19001001)
dispositionStringTrạng thái cuộc gọi (xem Bảng tra cứu trạng thái)
customer_codeStringMã khách hàng (ví dụ: cus_556677)
fromLongThời gian bắt đầu (Unix timestamp - epoch milliseconds)
toLongThời gian kết thúc (Unix timestamp - epoch milliseconds)
type_callIntLoại cuộc gọi (xem bảng Phân loại cuộc gọi). Mặc định: -1 (tất cả)
min_postageDoubleCước phí tối thiểu. Mặc định: -1 (bỏ qua)
max_postageDoubleCước phí tối đa. Mặc định: -1 (bỏ qua)
pageIntTrang hiện tại (bắt đầu từ 0, mặc định: 0)
sizeIntSố lượng bản ghi mỗi trang (mặc định: 20)
has_hotlineIntLọc hotline: -1 hoặc để trống (có hotline), 0 (không có hotline), 1 (tất cả). Mặc định: -1

Response

Tham sốKiểuMô tả
errorIntMã lỗi (0: Thành công, khác 0: Có lỗi)
messageStringThông tin kết quả
dataIntTổng số lượng cuộc gọi thỏa mãn điều kiện

Ví dụ response

json
{
  "error": 0,
  "message": "SUCCESS",
  "data": 1450
}

Bảng mã lỗi

errorMô tả
0Thành công
409API Key không hợp lệ hoặc không có quyền truy cập
500Lỗi hệ thống

Lấy chi tiết cuộc gọi ​

Lấy danh sách chi tiết các luồng của một cuộc gọi thông qua group_id

GET[URL]/m-cdr/api/call/get-detail?group_id={group_id}

Header

Tham sốGiá trị
X-API-Keytoken-open-api

Tham số

Tham sốKiểuBắt buộcMô tả
group_idStringCóID nhóm cuộc gọi (lấy từ trường group_id)

Response

Tham sốKiểuMô tả
errorIntMã lỗi (0: Thành công, khác 0: Có lỗi)
messageStringThông tin kết quả
dataList[Object]Danh sách chi tiết các luồng cuộc gọi

Cấu trúc phần tử trong data (Chi tiết luồng cuộc gọi):

Tham sốKiểuMô tả
trans_idStringMã giao dịch của luồng cuộc gọi
group_idStringID nhóm cuộc gọi
create_atLongThời điểm tạo (Unix timestamp - ms)
call_atLongThời điểm bắt đầu đàm thoại (Unix timestamp - ms)
time_callIntThời lượng đàm thoại của luồng (giây)
durationIntTổng thời lượng của luồng (giây)
caller_infoObjectThông tin người gọi (xem bảng CallPartyInfo)
callee_infoObjectThông tin người nghe (xem bảng CallPartyInfo)
dispositionStringTrạng thái của luồng (xem Bảng tra cứu trạng thái)
hangup_causeStringNguyên nhân kết thúc (xem Bảng tra cứu trạng thái)
sip_codeStringMã SIP response (xem Bảng tra cứu trạng thái)
end_callStringBên kết thúc luồng gọi (CALLER, CALLEE)
hotlineStringSố hotline
is_recordBooleantrue nếu luồng này có file ghi âm
postageDoubleCước phí phát sinh ở luồng này
conference_idStringID phòng hội nghị (nếu có)
payment_channelStringKênh thanh toán
auto_dial_service_chargeDoublePhí dịch vụ gọi tự động
customer_codeStringMã khách hàng
type_callIntLoại cuộc gọi (xem bảng Phân loại cuộc gọi)
external_call_idStringMã cuộc gọi từ hệ thống bên ngoài
group_member_noStringMã nhóm nhân viên

Ví dụ response

json
{
  "error": 0,
  "message": "SUCCESS",
  "data": [
    {
      "create_at": 1712034000000,
      "call_at": 1712034002000,
      "time_call": 120,
      "duration": 135,
      "trans_id": "CALL_ABC123",
      "group_id": "GRP_98765",
      "caller_info": {
        "member_no": "MEM_001",
        "number": "0987654321",
        "name": "Nguyen Van A",
        "channel": "SIP/1000",
        "type": "USER",
        "telco_code": ""
      },
      "callee_info": {
        "member_no": "MEM_002",
        "number": "0123456789",
        "name": "Khách Hàng",
        "channel": "PSTN",
        "type": "Phone",
        "telco_code": "VTL"
      },
      "disposition": "ANSWERED",
      "hangup_cause": "NORMAL_CLEARING",
      "sip_code": "200",
      "end_call": "CALLER",
      "hotline": "19001000",
      "is_record": true,
      "postage": 1500.0,
      "conference_id": "",
      "payment_channel": "MONEY",
      "auto_dial_service_charge": 0.0,
      "customer_code": "cus_556677",
      "type_call": 1,
      "external_call_id": "ext_9999",
      "group_member_no": "mem_12345"
    }
  ]
}

Bảng mã lỗi

errorMô tả
0Thành công
409API Key không hợp lệ hoặc không có quyền truy cập
500Lỗi hệ thống

Lấy file ghi âm cuộc gọi ​

Lấy file ghi âm của cuộc gọi có trường is_record: true.

GET[URL]/api/crm/historycall/record/{trans_id}

Header

Tham sốGiá trị
X-API-Keytoken-open-api

Tham số

Tham sốKiểuBắt buộcMô tả
trans_idStringCóMã giao dịch cuộc gọi (lấy từ trường trans_id)

Response

File ghi âm cuộc gọi.

Bảng mã lỗi

errorMô tả
0Thành công
404Không tìm thấy file ghi âm
409API Key không hợp lệ hoặc không có quyền truy cập
500Lỗi hệ thống

Lấy chất lượng cuộc gọi ​

Lấy thông tin chất lượng cuộc gọi (chỉ số MOS, PDD, chất lượng âm thanh RTP) theo mã giao dịch cuộc gọi (trans_id).

GET[URL]/m-cdr/api/agi/get-by-trans-id?trans_id={trans_id}

Header

Tham sốGiá trị
X-API-Keytoken-open-api

Tham số

Tham sốKiểuBắt buộcMô tả
trans_idStringCóMã giao dịch của cuộc gọi

Response

Tham sốKiểuMô tả
errorIntMã lỗi (0: Thành công, khác 0: Có lỗi)
messageStringThông báo kết quả
dataObjectThông tin chi tiết chất lượng cuộc gọi

Cấu trúc đối tượng trong data (Thông tin chất lượng cuộc gọi):

Tham sốKiểuMô tả
idLongID định danh bản ghi
trans_idStringMã giao dịch cuộc gọi
caller_numberStringSố điện thoại người gọi
callee_numberStringSố điện thoại người nghe
pdd_callerDoubleThời gian trễ quay số phía người gọi (giây)
pdd_calleeDoubleThời gian trễ quay số phía người nghe (giây)
rtp_audio_in_mos_callerDoubleĐiểm chất lượng thoại MOS phía người gọi
rtp_audio_in_mos_calleeDoubleĐiểm chất lượng thoại MOS phía người nghe
rtp_audio_quality_callerDoubleTỷ lệ phần trăm chất lượng âm thanh RTP phía người gọi (%)
rtp_audio_quality_calleeDoubleTỷ lệ phần trăm chất lượng âm thanh RTP phía người nghe (%)
create_atLongThời điểm tạo (Unix timestamp - ms)

Ví dụ response

json
{
  "message": "string",
  "data": {
    "id": 1,
    "trans_id": "CALL_ABC123",
    "caller_number": "0987654321",
    "callee_number": "0123456789",
    "pdd_caller": 1.5,
    "pdd_callee": 1.2,
    "rtp_audio_in_mos_caller": 4.5,
    "rtp_audio_in_mos_callee": 4.2,
    "rtp_audio_quality_caller": 99.5,
    "rtp_audio_quality_callee": 98,
    "create_at": 1672531200000
  },
  "error": 0
}

Bảng mã lỗi

errorMô tả
0Thành công
409API Key không hợp lệ hoặc không có quyền truy cập
500Lỗi hệ thống

Phân loại, Trạng thái và Nguyên nhân kết thúc cuộc gọi ​

Phân loại cuộc gọi (type_call) ​

Giá trịTên loạiMô tả
1InboundCuộc gọi vào tổng đài
2OutboundCuộc gọi ra từ tổng đài
3MissCallCuộc gọi nhỡ
-1Tất cảÁp dụng khi truyền làm tham số lọc để lấy tất cả các loại

Bảng tra cứu trạng thái ​

Dưới đây là sự tương quan giữa các mã sip_code, disposition, hangup_cause và ý nghĩa chi tiết của chúng trên hệ thống:

sip_codedispositionhangup_causeÝ nghĩa
200ANSWERNORMAL_CLEARINGNghe máy
400BAD_REQUESTNORMAL_TEMPORARY_FAILURESai thông tin
401UNAUTHORIZEDUNAUTHORIZEDChưa xác thực
402OUT_OF_MONEYOUT_OF_MONEYSố dư tài khoản không đủ để thực hiện cuộc gọi
403DO_NOT_CALLDO_NOT_CALLNgười nhận chặn cuộc gọi quảng cáo
404NOT_FOUNDUNALLOCATED_NUMBERSố không tồn tại
405CALL_INTERVAL_NOT_ALLOWEDCALL_INTERVAL_NOT_ALLOWEDKhung giờ gọi không được phép
406MEMBER_NOT_ACTIVATEDMEMBER_NOT_ACTIVATEDThành viên chưa được kích hoạt
407MEMBER_NOT_IN_PROJECTMEMBER_NOT_IN_PROJECTThành viên không thuộc dự án
408TIME_OUTRECOVERY_ON_TIMER_EXPIREHết thời gian chờ
409DO_NOT_DISTURBDO_NOT_DISTURBKhông làm phiền
410GONENUMBER_CHANGEDSố không còn tồn tại
411ABSENTABSENTVắng mặt
412PACKAGE_EXPIREDPACKAGE_EXPIREDGói cước đã hết hạn
413HOTLINE_NOT_SUPPORT_TELCOHOTLINE_NOT_SUPPORT_TELCOHotline không hỗ trợ nhà mạng
414TELCO_NOT_FOUNDTELCO_NOT_FOUNDKhông tìm thấy nhà mạng theo số điện thoại
415INVALID_PARAMETERINVALID_PARAMETERTham số không hợp lệ
416PROJECT_EXPIREDPROJECT_EXPIREDDự án đã hết hạn
480NOANSWERNO_USER_RESPONSENgười nhận tạm thời không liên lạc được
486BUSYUSER_BUSYNgười nhận tạm thời đang bận
487CANCELORIGINATOR_CANCELNgười gọi hủy
500SERVER_ERRORNORMAL_TEMPORARY_FAILURELỗi kết nối
502BAD_GATEWAYDESTINATION_OUT_OF_ORDERLỗi đường truyền
603DECLINECALL_REJECTEDNgười nhận từ chối cuộc gọi

Các API phiên bản cũ (Deprecated) ​

Khuyến nghị

Các API dưới đây thuộc phiên bản cũ (Deprecated). Hệ thống vẫn đang tiếp tục hỗ trợ và duy trì hoạt động bình thường. Tuy nhiên, VBot khuyến nghị quý khách hàng ưu tiên chuyển sang sử dụng các API phiên bản mới ở trên (/m-cdr/api/call/get-all, /m-cdr/api/call/count-all) để tối ưu hiệu năng và được cập nhật các tính năng mới nhất trong tương lai.

Lấy danh sách lịch sử cuộc gọi (Deprecated) ​

API lấy danh sách lịch sử cuộc gọi (phiên bản cũ).

GET[URL]/api/crm/historycall/getAll?phone={phone}&page={page}&size={size}

Hoặc lọc theo khoảng thời gian:

GET[URL]/api/crm/historycall/getAll?from={from}&to={to}&phone={phone}&page={page}&size={size}

Header

Tham sốGiá trị
X-API-Keytoken-open-api

Tham số

Tham sốKiểuMô tả
phoneStringSố điện thoại
fromIntTừ ngày (timestamp)
toIntĐến ngày (timestamp)
pageIntSố trang
sizeIntSố lượng trên 1 trang

Response

Tham sốKiểuMô tả
errorIntMã lỗi (0: Thành công, khác 0: Có lỗi)
messageStringThông tin
dataObjectDanh sách lịch sử cuộc gọi

Ví dụ response

json
{
  "error": 0,
  "message": "success",
  "data": [
    {
      "hotline_number": "19001001",
      "date_create": "02/27/2026 14:33:47",
      "caller": [
        {
          "phone": "0987654321",
          "date_create": "02/27/2026 14:33:47",
          "disposition": "answer",
          "time_call": "120",
          "postage": 1500.0,
          "duration_call": 135,
          "source": "App_SDK",
          "member_no": "MEM_001"
        }
      ],
      "callee": [
        {
          "phone": "0123456789",
          "date_create": "02/27/2026 14:33:47",
          "disposition": "answer",
          "time_call": "120",
          "postage": 1500.0,
          "duration_call": 135,
          "source": "Phone",
          "member_no": "MEM_002"
        }
      ],
      "time_call": "120",
      "duration_call": "135",
      "type_call": "OUTCALL",
      "group_id": "GRP_98765",
      "disposition": "answer",
      "record_file": ["https://recordings.vbot.vn/sample.mp3"],
      "external_call_id": "sample_ext_id"
    }
  ]
}

Lấy số lượng cuộc gọi (Deprecated) ​

API đếm tổng số lượng cuộc gọi (phiên bản cũ).

GET[URL]/api/crm/historycall/countAll?phone={phone}

Hoặc lọc theo khoảng thời gian:

GET[URL]/api/crm/historycall/countAll?from={from}&to={to}&phone={phone}

Header

Tham sốGiá trị
X-API-Keytoken-open-api

Tham số

Tham sốKiểuMô tả
phoneStringSố điện thoại
fromIntTừ ngày (timestamp)
toIntĐến ngày (timestamp)

Response

Tham sốKiểuMô tả
errorIntMã lỗi (0: Thành công, khác 0: Có lỗi)
messageStringThông tin
dataIntDữ liệu trả về (số lượng cuộc gọi)

Ví dụ response

json
{
  "error": 0,
  "message": "success",
  "data": 128
}