OmiCall API
  • Overview
  • OMICALL API
    • Tổng quan
    • Xác thực
    • Doanh nghiệp
    • Nhân viên
    • Khách hàng
      • v1
      • v2
    • Tổng đài
    • Lịch sử cuộc gọi
      • v1
      • v2
    • Gọi tự động
      • Gọi tự động sử dụng callBot
      • Gọi tự động thông thường - API V2
    • Webhooks
    • Click To Call
    • Ticket
      • v2
    • API tiêu chí kịch bản
    • Đa kênh
    • AI API
      • Text To Speech API
      • Speech To Text API
      • Gọi tự động sử dụng callBot
      • Phân tích cuộc gọi
  • WEBHOOKS
    • Tổng quan
    • Webhook
  • SDK Tích Hợp
    • Web Extension
      • Changelog
      • Pancake
      • Sapo
      • Haravan
      • Nhanh.vn
      • TPos.vn
      • KiotViet
      • Bitrix24
    • Web SDK
      • v3 Integration
      • v3 Changelog
      • v2 Integration
      • v2 Changelog
    • MOBILE SDK
      • Tổng Quan
      • Tại sao lại sử dụng OMICALL
      • Định nghĩa đầu số
      • Các SDK Hỗ Trợ
      • Tài khoản đăng nhập
      • IOS SDK
        • Cấu hình Push Notification
        • Cài đặt
        • Khởi tạo SDK
        • Xử lý các sự kiện
      • Android SDK
        • Cấu hình SDK
        • Cấu hình Push Notification
        • Khởi tạo SDK
        • Lắng nghe các sự kiện
      • Flutter SDK
      • React-Native SDK
    • Deep Links App to App
  • PARTNER
    • Tổng quan
    • Kho đầu số
    • Gói dịch vụ
    • Lịch sử thanh toán
    • Quản lý doanh nghiệp
    • Thông tin đối tác
Powered by GitBook
On this page

Was this helpful?

  1. WEBHOOKS

Webhook

Webhook cuộc gọi

PreviousTổng quanNextWeb Extension

Last updated 4 days ago

Was this helpful?

Nhận dữ liệu cuộc gọi từ Webhook

  • Đối tác khai báo API để nhận dữ liệu cuộc gọi từ WEBHOOK trả về

  • METHOD : POST

  • Content-type : application/json

Webhook data khi cuộc gọi đã kết thúc

Truy cậu cấu hình tại :


{
  "answer_sec": 39, // Số giây trả lời. Dùng để nhận dạng cuộc gọi Trả lời/ Không trả lời (Bao gồm gọi thường và gọi tự động)
  "bill_sec": 41, // Số giây tính tiền
  "bill_sec_forward_out": 0, // Số giây chuyển tiếp 
  "call_out_price": 699.05, // Cước cuộc gọi
  "call_uuid": "ad97a435-659e-49b4-ae83-4484c.....", // Id cuộc gọi
  "create_by": { // Thông tin nhân viên
    "contact_id": "63857253b1fd5112977dfade",
    "id": "63857254b1fd5112977dfadf",
    "name": "Thùy Nhân",
    "type": "agent"
  },
   "collect_info_variables": // CallBot : Thông tin mảng biến thu thập
   [
    {
      "collect_info_executed_time": {
        "end": 17.440811157226562,
        "start": 13.95820426940918
      },
      "entire_user_sentence": "tầm 2 giờ chiều nhá",
      "entity_type_code": "omi_entity_datetime",
      "variable_code": "AeMd2JtJ7O",
      "variable_name": "new_ship_time",
      "variable_value": "02:00"
    }
  ],
  "users_status": [
    {
      "answer_at": 1748832946,
      "auto_answer": false,
      "call_uuid": "602d98ab-a577-4297-a285-7d71aed06171",
      "extension": "100",
      "group_index": 0,
      "group_number": "62714",
      "is_busy": false,
      "is_dnd": false,
      "is_online": true,
      "ring_at": 1748832941,
      "timeout": 30
    }
  ],
  "created_date": 1748310220317, //Ngày tạo record json
  "destination_number": "0966....", // Thuê bao bị gọi (Callee)
  "direction": "outbound", // Hướng gọi. Gọi ra (outbound). Gọi vào (inbound). Gọi nội bộ (local) 
  "domain_fusion": "vihat", // Domain tổng đài doanh nghiệp
  "duration": 44, //Số giây giây khởi tạo cuộc gọi
  "endby_name": "end_call_by_customer", //Hình thức kết thúc
  "from_number": "2022", // Thuê bao người gọi (Caller)
  "hangup_cause": "NORMAL_CLEARING", //Mã HANGUP
  "hangup_cause_q850": 16,
  "hotline": "02873022488", //Hotline
  "is_auto_call": false, // Gọi thủ công (false) / Gọi tự động (true)
  "is_have_forward_out": false, // Cuộc gọi có chuyển tiếp ra SIM (true). Không chuyển tiếp ra SIM (false) 
  "is_same_network": false, // Nội mạng (true) / Ngoại mạng (false)
  "is_same_network_forward_out": false, // Cuộc gọi chuyển tiếp ra SIM cùng mạng (true). Ra SIM ngoại mạng (false). So sánh giữa Hotline và SIM được chuyển)
  "is_voicemail": false, // Cuộc gọi có hộp thư thoại (true). Không có hộp thư thoại (false)
  "ivr": "none",// Cuộc gọi có bấm phím 
  "note": "",// Ghi chú về cuộc gọi 
  "out_of_working_time": false, // Ngoài giờ làm việc (true). Trong giờ làm việc (false)
  "phone_number": "096606....", // Số điện thoại khách hàng
  "provider": "viettel", // Nhà mạng của khách hàng
  "provider_of_number": "fpt", // Nhà mạng của số Hotline
  "record_seconds": 39, // Số giây ghi âm cuộc gọi. Chỉ ghi nhận với những cuộc >3 giây đàm thoại
  "recording_file_url": "https://public-v1-stg.omicrm.com/......", // URL file ghi âm
  "send_num_retry": 1, // Số lần gửi cho đối tác 
  "sip_number": "02873022488", // Hotline 
  "sip_number_tags": [], // Tags phân loại của Hotline, hỗ trợ cho doanh nghiệp phân loại Hotline theo pháp nhân đứng tên
  "sip_user": "2022", // Định danh người gọi (Caller) 
  "source_number": "02873022488", // Định danh thuê bao gọi (Caller) 
  "state": "cdr", // Trạng thái cuộc gọi 
  "tag": [], //Danh sách Tags cuộc gọi đính kèm
  "tenant_id": "5cbfc17a580dd80007ffc....", // Id doanh nghiệp
  "time_end_call": 1748310215, // Thời gian kết thúc cuộc gọi Unix time (seconds)
  "time_start_call": 1748310171, // Thời gian khởi tạo cuộc gọi Unix time (seconds)
  "time_start_to_answer": 1748310171, // Thời gian cuộc gọi bắt đầu được trả lời Unix time (seconds)
  "to_number": "09660....",
  "transaction_id": "ad97a435-659e-49b4-ae83-4484.....",
  "transfer_histories": [], // Lịch sử chuyển tiếp cuộc gọi
  "user": [ //Danh sách nhân viên có tương tác với cuộc gọi
    {
      "full_name": "Thùy Nhân - Admin CS",
      "full_name_unsigned": "Thuy Nhan - Admin CS"
    }
  ]
}

Một vài biến JSON quan trọng cần lưu ý lúc tích hợp

Field
Type
Description

transaction_id

String

Là Id cuộc gọi. OMI có thể sẽ bắn nhiều lần cho đối tác, do cuộc gọi có thể chuyển tiếp ra nhiều lớp trong kịch bản. Và đối tác cần Get Update lại dữ liệu. Vì Id cuộc gọi là duy nhất

create_by

Object

Nhân viên chịu trách nhiệm về cuộc gọi. Trường hợp create_by.name = 'create_default_by_tenant' được dùng để định danh cuộc gọi KHÔNG XÁC ĐỊNH, KHÔNG KẾT NỐI tới nhân viên

direction

String

Hướng gọi : outbound : Gọi ra inbound : Gọi vào local : Gọi nội bộ (2 nhân viên với nhau)

answer_sec

Number

Là số giây để nhận dạng cuộc gọi TRẢ LỜI (answer_sec >0) hoặc KHÔNG TRẢ LỜI (answer_sec=0)

time_start_call

Number

Là thời gian khởi tạo cuộc gọi (x 1000 = Unix time milisecond)

time_end_call

Number

Là thời gian kết thúc cuộc (x 1000 = Unix time milisecond)

time_start_to_answer

Number

Là thời gian bắt đầu trả lời (x 1000 = Unix time milisecond)

phone_number

String

Số điện thoại khách hàng

hotline

String

Số Hotline

bill_sec

Number

Số giây tính tiền (hay Thời Lượng Cuộc Gọi)

duration

Number

Là số giây được tính từ lúc : Khởi tạo cuộc gọi -> Kết thúc

note

String

Ghi chú về cuộc gọi

tags

List

Danh sách Tags được đính kèm với cuộc gọi

sip_user

String

Là số máy lẻ của nhân viên, chịu trách nhiệm về cuộc gọi

recording_file_url

String

Đường dẫn file ghi âm

record_seconds

Number

Số giây ghi âm

user_status

List

Mảng trạng thái của nhân viên, khi có cuộc gọi đi qua

Danh sách thuộc tính mảng user_status

Field
Type
Description

extension

String

Số máy lẻ nhân viên

is_busy

Boolean

Nhân viên có đang bận (true), không bận (false)

is_dnd

Boolean

Nhân viên có đang ở trạng thái không làm phiền (true), Sẵn sàng (false)

is_online

Boolean

Nhân viên có đang trực tuyến (true), không trực tuyến (false)

group_number

String

Nhóm nội bộ (id hàng đợi)

ring_at

Number

Thời gian bắt đầu rung chuông ở nhân viên

answer_at

Number

Thời gian bắt đầu nhân viên trả lời

timeout

Number

Thời gian TimeOut của nhóm

auto_answer

Boolean

Hàng đợi bật trạng thái đếm giây(true)., không bật (false)

Webhook khi cuộc gọi đang diễn ra

  • Gửi thông tin cuộc gọi đang diễn ra cho đối tác tích hợp

  • Trạng thái gồm : ringing(Đổ chuông), answered (Kết nối) , hangup (Kết thúc)

Cấu trúc JSON Event Gọi Ra

{
  "to_number": "0966060...", // Thuê bao người bị gọi (Callee), Số điện thoại khách hàng
  "created_time": 1748310171450, // Thời gian tạo dữ liệu json
  "extension": "2022", // Số máy lẻ nhân viên 
  "unique_id": "c5885d6d-3fb1-4393-9e1e-8b325b771191", // Id Event
  "hotline": "02873022488", // Số hotline
  "source": "webhookEvent", // Loại Webhook 
  "date_time": 1748310172296, // Thời gian gửi dữ liệu json cho đối tác 
  "from_number": "2022", // Thuê bao người gọi (Caller)
  "call_uuid": "ad97a435-659e-49b4-ae83-4484c0c3f4c6", // Id cuộc gọi
  "phone_number": "0966060...", // Số điện thoại khách hàng 
  "state": "ringing", // Trạng thái cuộc gọi
  "device": "OmiWebV2-eb2cc7f4afbd/ Chrome/ 136.0.0.0/ Windows NT 10.0; Win64; x64", // Thiết bị của Caller 
  "event_time": 1748310172250, // Thời gian khởi tao của Event
  "direction": "outbound" // Hướng gọi 
}

Cấu trúc JSON Event Gọi Vào

{
  "to_number": "33659",// Thuê bao người bị gọi (Callee), Số máy lẻ nhân viên
  "created_time": 1748312242480, // Thời gian khởi tạo JSON
  "extension": "33659", // Số máy lẻ nhân viên
  "unique_id": "55638ccf-d18e-4246-9543-ddce371e0f9f", // Id Event
  "hotline": "842871010898", // Số hotline
  "source": "webhookEvent", // Loại Webhook 
  "date_time": 1748312314530, // Thời gian gửi JSON cho đối tác
  "from_number": "0906022...", // Thuê bao người gọi (Caller), thuê bao khách hàng
  "call_uuid": "55638ccf-d18e-4246-9543-ddce371e0f9f", // Id cuộc gọi
  "phone_number": "0906022...", // Số điện thoại khách hàng
  "state": "ringing", // Trạng thái cuộc gọi
  "device": "VOS3000 V2.1.9.07", // Thiết bị 
  "event_time": 1748312314480, //Thời gian khởi tạo Event
  "direction": "inbound" // Hướng gọi 
}

Một vài chú ý với Webhook Event

  • Một cuộc gọi sẽ có 2 Leg (Leg Khách hàng , Leg Nhân viên)

  • Webhook Event hỗ trợ việc callback data json, trạng thái trên mỗi Leg cho đối tác

  • Nếu một cuộc gọi thành công, có kết nối máy với khách hàng, có trả lời sẽ có 3 trạng thái : ringing (Rung chuông), answered (Trả lời) , hangup (Kết thúc)

  • Một vài chú ý khi gọi vào (Inbound)

    • Nếu cuộc gọi đổ vào hệ thống sẽ đi qua nhiều kịch bản mà doanh nghiệp setup

    • to_number có thể là các giá trị

      • Giá trị rỗng (empty)

        • Kịch bản chỉ phát lời chào

        • Kịch bản kết thúc không hành động,

        • Kịch bản hộp thư thoại

        • Cuộc gọi khởi tạo thành công xuống máy nhân viên, nhưng không nhận được phản hồi từ nhân viên (Do thiết bị không online, thiết bị có vấn đề)

      • Số định danh của nhóm hàng đợi nếu cuộc gọi đi vào NHÓM NỘI BỘ

      • Số định danh của kịch bản phím bấm khi cuộc gọi vào KỊCH BẢN BẤM PHÍM

      • Số định danh máy nhánh của nhân viên khi cuộc gọi vào NHÂN VIÊN (EXTENSION)

      • Số định danh của nhóm ngoài khi cuộc gọi đổ ra NHÓM NGOÀI

  • from_number, to_number : Là giá trị định danh của người gọi và người bị gọi cho 2 hướng, gọi ra và gọi vào. from_number và to_number chỉ có giá trị khi có tín hiệu được khởi tạo trên mỗi Leg

    • Nếu gọi ra (outbound)

      • from_number: Số máy nhánh nhân viên

      • to_number: Số điện thoại khách hàng

    • Nếu gọi vào đổ tới nhân viên (inbound)

      • from_number : Số điện thoại khách hàng

      • to_number : Số máy nhánh nhân viên