Skip to content

Lịch sử gọi Campaign ​

API tra cứu lịch sử cuộc gọi trong chiến dịch tự động và các sự kiện Webhook nhận dữ liệu cuộc gọi.

Webhook: Cuộc gọi tự động hoàn tất ​

Khi một cuộc gọi tự động (auto call) hoàn tất, hệ thống sẽ gửi webhook event AUTO_CALL_COMPLETE tới URL đã đăng ký. Bản tin chứa đầy đủ thông tin: lịch sử cuộc gọi, ghi âm và dữ liệu AI trích xuất.

Event: AUTO_CALL_COMPLETE

Phương thức: POST — Hệ thống gửi tới webhook URL đã cấu hình

Cấu trúc payload ​

Payload gồm 3 phần chính:

PhầnKiểuMô tả
autoCallLogObjectThông tin chi tiết cuộc gọi
autoCallAIExtractionObjectDữ liệu AI trích xuất từ cuộc hội thoại
autoCallRecordingObjectThông tin ghi âm cuộc gọi

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

Tham sốKiểuMô tả
phoneStringSố điện thoại khách hàng
durationIntTổng thời lượng cuộc gọi (giây)
billsecIntThời lượng tính cước (giây)
dispositionStringTrạng thái cuộc gọi (xem tại Bảng tra cứu trạng thái)
hotlineCodeStringMã hotline (số tổng đài)
inputLogStringLog tương tác DTMF của khách hàng
voiceTextStringNội dung thoại đã chuyển thành văn bản (STT)
postageDoubleCước phí cuộc gọi
serviceChargeDoublePhí dịch vụ
memberNameStringTên thành viên thực hiện
memberAccIdStringAccount ID thành viên
answerAtLongThời điểm nghe máy (Unix timestamp ms)
endCallAtLongThời điểm kết thúc cuộc gọi (Unix timestamp ms)
botIdStringID của bot xử lý cuộc gọi
campaignNameStringTên chiến dịch
campaignGroupNameStringTên nhóm chiến dịch
templateScriptCodeStringMã kịch bản template
templateScriptNameStringTên kịch bản template
transIdStringMã giao dịch cuộc gọi (duy nhất)
createAtLongThời điểm tạo cuộc gọi (Unix timestamp ms)
postageServiceDoubleCước dịch vụ bổ sung
postageBotServiceDoubleCước dịch vụ bot
telcoCodeStringMã nhà mạng (VTL, VNP, VMS, ...)
projectCodeStringMã dự án
callNetStringLoại cuộc gọi (OFFNET, ONNET)
metaDataStringDữ liệu meta (JSON string) — các biến đầu vào kịch bản
metaDataDescriptionStringMô tả các trường meta (JSON string)
externalCallIdStringMã cuộc gọi từ hệ thống bên ngoài
callCollectedDataStringDữ liệu thu thập từ cuộc gọi (JSON string) — bao gồm cả kết quả AI

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

Dưới đây là các trạng thái disposition và ý nghĩa chi tiết:

dispositionÝ nghĩa
NOT_FOUND_PRICEKhông đủ tiền
NOT_FOUND_TELCOKhông tìm thấy nhà mạng
ANSWERNghe máy
NOANSWERNgười nhận tạm thời không liên lạc được
BUSYNgười nhận tạm thời đang bận
NOT_MONEYSố dư tài khoản không đủ để thực hiện cuộc gọi
SERVER_ERRORLỗi kết nối

autoCallAIExtraction — Dữ liệu AI trích xuất ​

Tham sốKiểuMô tả
transIdStringMã giao dịch cuộc gọi
externalCallIdStringMã cuộc gọi từ hệ thống bên ngoài
callCollectedDataStringKết quả AI trích xuất (JSON string) — danh sách các trường dữ liệu

Cấu trúc mỗi item trong callCollectedData:

Tham sốKiểuMô tả
cfkeyStringKey của trường dữ liệu
cfnameStringTên hiển thị
cfvalueStringGiá trị AI trích xuất được
descriptionStringMô tả trường dữ liệu

autoCallRecording — Ghi âm cuộc gọi ​

Tham sốKiểuMô tả
transIdStringMã giao dịch cuộc gọi
externalCallIdStringMã cuộc gọi từ hệ thống bên ngoài
recordUrlStringURL tải file ghi âm (yêu cầu Bearer token)
Lưu ý về giá trị externalCallId:
Giá trị externalCallId được truyền vào cần thỏa mãn các điều kiện sau:
  • Độ dài tối đa: 32 ký tự.
  • Chỉ sử dụng các ký tự chữ thường (a–z) và chữ số (0–9).
  • Không chứa các ký tự đặc biệt, chữ in hoa hoặc khoảng trắng.

Webhook: AI trích xuất cuộc gọi tự động ​

Khi AI hoàn tất trích xuất dữ liệu từ cuộc gọi tự động, hệ thống sẽ gửi webhook event AUTO_CALL_AI_EXTRACTION tới URL đã đăng ký.

Event: AUTO_CALL_AI_EXTRACTION

Phương thức: POST — Hệ thống gửi tới webhook URL đã cấu hình

Cấu trúc payload ​

Tham sốKiểuMô tả
transIdStringMã giao dịch cuộc gọi
externalCallIdStringMã cuộc gọi từ hệ thống bên ngoài
callCollectedDataStringKết quả AI trích xuất (JSON string) — danh sách các trường dữ liệu
Lưu ý về giá trị externalCallId:
Giá trị externalCallId được truyền vào cần thỏa mãn các điều kiện sau:
  • Độ dài tối đa: 32 ký tự.
  • Chỉ sử dụng các ký tự chữ thường (a–z) và chữ số (0–9).
  • Không chứa các ký tự đặc biệt, chữ in hoa hoặc khoảng trắng.

Cấu trúc mỗi item trong callCollectedData:

Tham sốKiểuMô tả
cfkeyStringKey của trường dữ liệu
cfnameStringTên hiển thị
cfvalueStringGiá trị AI trích xuất được
descriptionStringMô tả trường dữ liệu

Webhook: Ghi âm cuộc gọi tự động ​

Khi file ghi âm cuộc gọi tự động sẵn sàng, hệ thống sẽ gửi webhook event AUTO_CALL_RECORDING tới URL đã đăng ký.

Event: AUTO_CALL_RECORDING

Phương thức: POST — Hệ thống gửi tới webhook URL đã cấu hình

Cấu trúc payload ​

Tham sốKiểuMô tả
transIdStringMã giao dịch cuộc gọi
externalCallIdStringMã cuộc gọi từ hệ thống bên ngoài
recordUrlStringURL tải file ghi âm (yêu cầu Bearer token)
Lưu ý về giá trị externalCallId:
Giá trị externalCallId được truyền vào cần thỏa mãn các điều kiện sau:
  • Độ dài tối đa: 32 ký tự.
  • Chỉ sử dụng các ký tự chữ thường (a–z) và chữ số (0–9).
  • Không chứa các ký tự đặc biệt, chữ in hoa hoặc khoảng trắng.

Lấy hội thoại bot ​

Lấy nội dung chi tiết hội thoại của bot AI trong cuộc gọi. Dùng cho các kịch bản có tích hợp bot AI.

GET[URL]/m-auto-call/api/cdr/get-bot-conversation?trans_id={trans_id}&bot_id={bot_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ừ CDR)
bot_idStringKhôngMã bot AI. Nếu không truyền, hệ thống tự lấy từ CDR theo trans_id

Response

Tham sốKiểuMô tả
statusIntHTTP Status code (200 - Thành công)
msgStringThông điệp phản hồi (Success)
errorCodeIntMã lỗi nghiệp vụ (0 - Thành công)
dataStringNội dung cuộc hội thoại giữa bot AI và khách hàng

Ví dụ response

Thành công:

json
{
  "status": 200,
  "msg": "Success",
  "errorCode": 0,
  "data": "assistant: Xin chào, tôi là trợ lý ảo của công ty ABC. Hôm nay tôi gọi để nhắc anh/chị về khoản thanh toán. | user: Vâng, tôi biết rồi. | assistant: Anh/chị có muốn thanh toán ngay không ạ? | user: Để tôi thanh toán chiều nay. | assistant: Dạ vâng, cảm ơn anh/chị. Chúc anh/chị một ngày tốt lành. |"
}

Lỗi (không tìm thấy CDR hoặc bot):

json
{
  "status": 500,
  "msg": "error",
  "errorCode": 500,
  "data": null
}

Bảng mã lỗi

errorCodestatusMô tả
0200Thành công
500500Lỗi hệ thống
Lưu ý:
  • Nội dung hội thoại trả về dạng chuỗi, các lượt nói được phân cách bằng ký tự |.
  • Mỗi lượt nói có định dạng: role: content |, trong đó role là assistant (bot AI) hoặc user (khách hàng).
  • Nếu không truyền bot_id, hệ thống sẽ tự động tra cứu từ bản ghi CDR theo trans_id.

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

Lấy danh sách chi tiết cuộc gọi có phân trang, hỗ trợ nhiều bộ lọc mở rộng (theo từ khóa, thời gian, trạng thái, kịch bản, cước phí, kết quả nhận diện bot AI...).

GET[URL]/m-auto-call/api/cdr/get-all?key_search={key_search}&input_log_search={input_log_search}&disposition_search={disposition_search}&project_code={project_code}&bot_id={bot_id}&campaign_code={campaign_code}&member={member}&template_script_code={template_script_code}&status={status}&hotline={hotline}&min_postage={min_postage}&max_postage={max_postage}&start_date={start_date}&end_date={end_date}&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ĐT, customerUid, tên)
input_log_searchStringLọc theo nội dung nhận dạng bot / phím bấm
disposition_searchStringLọc theo trạng thái cuộc gọi (xem tại Bảng tra cứu trạng thái)
project_codeStringMã dự án. Tự lấy từ X-API-Key nếu không truyền
bot_idStringMã bot AI
campaign_codeStringMã chiến dịch
memberStringMemberUid người tạo (member chỉ xem CDR của mình)
template_script_codeStringMã kịch bản gọi
statusIntTrạng thái CDR, mặc định: -1 (tất cả)
hotlineStringMã hotline gọi ra
min_postageDoubleCước phí tối thiểu
max_postageDoubleCước phí tối đa
start_dateLongThời gian bắt đầu (Unix timestamp - epoch milliseconds)
end_dateLongThời gian kết thúc (Unix timestamp - epoch milliseconds)
pageIntSố trang (mặc định: 1)
sizeIntSố lượng trên 1 trang (mặc định: 10)

Response

Tham sốKiểuMô tả
statusIntHTTP Status code (200 - Thành công)
msgStringThông điệp phản hồi (Success)
errorCodeIntMã lỗi nghiệp vụ (0 - Thành công)
dataArray<CdrDetails>Danh sách bản ghi CDR

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

Tham sốKiểuMô tả
phoneStringSố điện thoại nhận cuộc gọi
nameStringTên khách hàng
customerUidStringMã khách hàng
durationIntTổng thời lượng cuộc gọi (giây)
billsecIntThời gian đàm thoại tính cước (giây)
sipCodeStringMã SIP phản hồi (xem tại Bảng tra cứu trạng thái)
dispositionStringTrạng thái cuộc gọi (xem tại Bảng tra cứu trạng thái)
hotlineObjectThông tin hotline gọi ra
inputLogStringNội dung nhận dạng bot / phím bấm
voiceTextStringNội dung chuyển đổi giọng nói sang văn bản
statusIntTrạng thái CDR
botMemberStatusConnectStringTrạng thái kết nối bot-member
postageDoubleCước phí cuộc gọi
serviceChargeDoublePhí dịch vụ
postageBotServiceDoubleCước phí bot AI
externalCallIdStringMã cuộc gọi từ hệ thống bên ngoài
memberObjectThông tin member phụ trách
answerAtLongThời điểm trả lời (Unix timestamp - ms)
endCallAtLongThời điểm kết thúc (Unix timestamp - ms)
botIdStringMã bot AI
campaignIdLongID chiến dịch
campaignCodeStringMã chiến dịch
campaignNameStringTên chiến dịch
campaignGroupIdLongID nhóm chiến dịch
campaignGroupCodeStringMã nhóm chiến dịch
campaignGroupNameStringTên nhóm chiến dịch
templateScriptIdLongID kịch bản
templateScriptCodeStringMã kịch bản
templateScriptNameStringTên kịch bản
transIdStringMã giao dịch cuộc gọi (duy nhất)
createAtLongThời điểm tạo (Unix timestamp - ms)
isRecordBooleanCó file ghi âm hay không
scoreFloatĐiểm đánh giá cuộc gọi
callCollectedDataArrayDữ liệu thu thập / AI trích xuất từ cuộc gọi

Cấu trúc mỗi phần tử trong callCollectedData:

Tham sốKiểuMô tả
cfkeyStringKey của trường tuỳ chỉnh
cfnameStringTên trường tuỳ chỉnh
cfvalueStringGiá trị thu thập / AI trích xuất
descriptionStringMô tả trường

Ví dụ response

json
{
  "status": 200,
  "msg": "Success",
  "errorCode": 0,
  "data": [
    {
      "phone": "0987654321",
      "name": "Nguyen Van A",
      "customerUid": "CUST_001",
      "duration": 45,
      "billsec": 30,
      "sipCode": "200",
      "disposition": "ANSWERED",
      "status": 1,
      "postage": 500.0,
      "externalCallId": "extcall001",
      "campaignCode": "CAMP_001",
      "campaignName": "Chiến dịch 1",
      "templateScriptCode": "SCRIPT_001",
      "templateScriptName": "Kịch bản 1",
      "transId": "trans_abc123",
      "createAt": 1695254400000,
      "answerAt": 1695254410000,
      "endCallAt": 1695254440000,
      "isRecord": true,
      "callCollectedData": [
        {
          "cfkey": "cf_ho_ten",
          "cfname": "Họ tên",
          "cfvalue": "Nguyen Van A",
          "description": ""
        }
      ]
    }
  ]
}

Bảng mã lỗi

errorCodestatusMô tả
0200Thành công
803500Không có quyền xem
500500Lỗi hệ thống

Lấy số lượng số lịch sử gọi ​

Trả về tổng số bản ghi lịch sử gọi tự động theo các điều kiện lọc

GET[URL]/m-auto-call/api/cdr/count?key_search={key_search}&input_log_search={input_log_search}&disposition_search={disposition_search}&project_code={project_code}&bot_id={bot_id}&campaign_code={campaign_code}&member={member}&template_script_code={template_script_code}&status={status}&hotline={hotline}&min_postage={min_postage}&max_postage={max_postage}&start_date={start_date}&end_date={end_date}&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ĐT, customerUid, tên)
input_log_searchStringLọc theo nội dung nhận dạng bot
disposition_searchStringLọc theo trạng thái cuộc gọi (xem tại Bảng tra cứu trạng thái)
project_codeStringMã dự án. Tự lấy từ X-API-Key nếu không truyền
bot_idStringMã bot AI
campaign_codeStringMã chiến dịch
memberStringMemberUid người tạo (member chỉ xem CDR của mình)
template_script_codeStringMã kịch bản gọi
statusIntTrạng thái CDR. Mặc định: -1 (tất cả)
hotlineStringMã hotline
min_postageDoubleCước phí tối thiểu
max_postageDoubleCước phí tối đa
start_dateLongThời gian bắt đầu (Unix timestamp - epoch milliseconds)
end_dateLongThời gian kết thúc (Unix timestamp - epoch milliseconds)
pageIntTrang hiện tại (mặc định: 1)
sizeIntSố bản ghi mỗi trang (mặc định: 10)

Response

Tham sốKiểuMô tả
statusIntHTTP Status code (200 - Thành công)
msgStringThông điệp phản hồi (Success)
errorCodeIntMã lỗi nghiệp vụ (0 - Thành công)
dataIntTổng số bản ghi CDR thỏa điều kiện

Ví dụ response

json
{
  "status": 200,
  "msg": "Success",
  "errorCode": 0,
  "data": 1250
}

Bảng mã lỗi

errorCodestatusMô tả
0200Thành công
500500Lỗi hệ thống

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

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

sipCodedispositionÝ nghĩa
101NOT_FOUND_PRICEKhông đủ tiền
102NOT_FOUND_TELCOKhông tìm thấy nhà mạng
200ANSWERNghe máy
480NOANSWERNgười nhận tạm thời không liên lạc được
486BUSYNgười nhận tạm thời đang bận
402NOT_MONEYSố dư tài khoản không đủ để thực hiện cuộc gọi
500SERVER_ERRORLỗi kết nố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 sử dụng các API phiên bản mới ở trên (/m-auto-call/api/cdr/get-all, /m-auto-call/api/cdr/count, /m-auto-call/api/cdr/get-bot-conversation) để 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ử gọi (Deprecated) ​

GET[URL]/api/campaignCall/cdr/getAll?bot_id={bot_id}&campaign_code={campaign_code}&member={member}&template_script_code={template_script_code}&disposition={disposition}&key={key}&end_date={end_date}&start_date={start_date}&hotline={hotline}&input_log_search={input_log_search}&status={status}&page={page}&size={size}

Header

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

Tham số

Tham sốKiểuMô tả
bot_idStringMã bot
campaign_codeStringMã chiến dịch
memberStringThành viên
template_script_codeStringMã template kịch bản
dispositionStringTrạng thái cuộc gọi (xem tại Bảng tra cứu trạng thái)
keyStringTừ khóa tìm kiếm
end_dateIntNgày kết thúc
start_dateIntNgày bắt đầu
hotlineStringHotline
input_log_searchStringTìm kiếm log
statusIntTrạng thái
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
dataArrayDanh sách lịch sử cuộc gọi

Ví dụ response

json
{
  "error": 0,
  "message": "Success",
  "data": [
    {
      "phone": "0987654321",
      "name": "Nguyễn Văn A",
      "customer_uid": "CUST_001",
      "duration": 45,
      "billsec": 30,
      "sip_code": "200",
      "disposition": "answer",
      "input_log": "",
      "status": 1,
      "postage": 500.0,
      "service_charge": 0.0,
      "postage_bot_service": 100.0,
      "member": {
        "name": "Admin",
        "color": "#19b24f"
      },
      "hotline": {
        "code": "HL01",
        "name": "Hotline CSKH",
        "phone_number": "02473001234"
      },
      "call_collected_data": [
        {
          "cfkey": "cf_ho_ten",
          "cfname": "Họ tên",
          "cfvalue": "Nguyễn Văn A",
          "description": ""
        }
      ],
      "answer_at": 1695254410000,
      "end_call_at": 1695254440000,
      "campaign_name": "Chiến dịch xác nhận đơn hàng",
      "campaign_code": "CAMP_001",
      "campaign_group_name": "Nhóm CSKH",
      "campaign_group_code": "GRP_001",
      "template_script_name": "Kịch bản xác nhận",
      "template_script_code": "SCRIPT_001",
      "voice_text": "Khách hàng đồng ý nhận hàng",
      "create_at": 1695254400000,
      "bot_id": "BOT_001",
      "trans_id": "TRANS_123456",
      "create_by": "user01",
      "score": 5.0,
      "is_record": true
    }
  ]
}

Lấy số lượng lịch sử gọi (Deprecated) ​

GET[URL]/api/campaignCall/cdr/countAll?bot_id={bot_id}&campaign_code={campaign_code}&member={member}&template_script_code={template_script_code}&disposition={disposition}&key={key}&end_date={end_date}&start_date={start_date}&hotline={hotline}&input_log_search={input_log_search}&status={status}&page={page}&size={size}

Header

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

Tham số

Tham sốKiểuMô tả
bot_idStringMã bot
campaign_codeStringMã chiến dịch
memberStringThành viên
template_script_codeStringMã template kịch bản
dispositionStringTrạng thái cuộc gọi (xem tại Bảng tra cứu trạng thái)
keyStringTừ khóa tìm kiếm
end_dateIntNgày kết thúc
start_dateIntNgày bắt đầu
hotlineStringHotline
input_log_searchStringTìm kiếm log
statusIntTrạng thái
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
dataIntTổng số bản ghi CDR

Ví dụ response

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

Lấy hội thoại bot (Deprecated) ​

Lấy nội dung chi tiết hội thoại của bot AI trong cuộc gọi (phiên bản cũ).

GET[URL]/api/campaignCall/cdr/getBotConversation?bot_id={bot_id}&trans_id={trans_id}

Header

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

Tham số

Tham sốKiểuMô tả
bot_idStringMã bot
trans_idStringMã giao dịch

Response

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

Ví dụ response

json
{
  "error": 0,
  "message": "Success",
  "data": "Nội dung cuộc hội thoại"
}