Webhook

Khi webhook được kích hoạt, các sự kiện sẽ được gửi lại dịch vụ thông qua một POST request.

Kích hoạt webhook

Tại bước tạo/cập nhật ứng dụng, mục webhook, thực hiện nhập thêm URL và headers (nếu có)

Giao diện cập nhật ứng dụng

Định dạng dữ liệu trả về

Thuộc tính
Kiểu dữ liệu
Mô tả

event

String

Tên sự kiện

data

Object

Thông tin sự kiện

import_data

Object

Dữ liệu gốc được đẩy vào hệ thống

(ứng với sự kiện call)

Danh sách các sự kiện hợp lệ

  1. call: Kết quả của cuộc gọi

  2. approve_scenario: Chấp nhận kịch bản

  3. reject_scenario: Từ chối kịch bản

Thông tin sự kiện

Sự kiện call:

Thuộc tính
Kiểu dữ liệu
Mô tả

campaign_id

String

Mã chiến dịch của cuộc gọi (cuộc gọi OTP sẽ không có)

display_id

String

Mã chiến dịch rút gọn, hiển thị trên giao diện người dùng có thể xem được

call_id

String

ID cuộc gọi

caller_id

String

Số gọi đi

callee_id

String

Số gọi đến

duration

Number

Thời gian nghe máy (tính theo giây)

called_at

Date

Thời điểm gọi

key_press

String

Lịch sử bấm phím

record_audio

String

Link file ghi âm cuộc gọi

is_finish_call

Boolean

Cuộc gọi cuối của một liên hệ

contact_id

String

ID liên hệ

answer_at

Date

Thời điểm nghe máy

hangup_at

Date

Thời điểm ngắt máy

hangup_code

String

Mã tổng đài trả về

status

String

Trạng thái cuộc gọi (xem thêm)

application_id

String

ID của ứng dụng

action_code

String

Mã kết thúc cuộc gọi trong trường hợp là cuộc gọi bot

sub_action_code

String

Mã kết thúc phụ củap cuộc gọi trong trường hợp là cuộc gọi bot

messages

Array [tin nhắn]

Luồng hội thoại trong trường hợp là cuộc gọi bot

Luồng hội thoại (messages)

Thuộc tính
Kiểu dữ liệu
Mô tả

id

String

Định danh hội thoại

userSay

String

Lời thoại của khách hàng

actions

Array

Hành động của bot

Hành động của bot (actions)

Thuộc tính
Kiểu dữ liệu
Mô tả

name

String

Tên hành động

attachments.type

String

Hành động đính kèm

attachments.payload.content

String

Lời thoại của bot

attachments.payload.actionCode

String

Mã hành động kèm

attachments.payload.subActionCode

String

Mã hành động phụ kèm

Ví dụ:

```json
{
   "event":"call",
   "data":{
      "campaign_id":"646e20b0f76ec57dc3326302",
      "display_id":"1000",
      "call_id":"64707555f09f1e6a0ad9edbc",
      "caller_id":"842888886***",
      "callee_id":"0987654321",
      "duration":1,
      "called_at":"2023-05-26T09:01:14.517Z",
      "key_press":"",
      "record_audio":"https://pbx-zone8-api.vbeecore.com/records/2023/05/26/nil-0981457690-ae525496-5847-4391-b8e9-b580955cf***.wav",
      "retry":1,
      "is_finish_call":true,
      "contact_id":"69c76450-500d-404d-8b7d-1dc0422ca564",
      "answer_at":"2023-05-26T09:01:13.653Z",
      "hangup_at":"2023-05-26T09:01:15.553Z",
      "hangup_code":"NORMAL_CLEARING",
      "status":"ANSWER",
      "application_id":"646f61c4f4a58c66a3792d55",
      "action_code":"END_CALL",
      "sub_action_code":"SUB_END_CALL",
      "messages":[
         [
            {
               "id": "653a2aa01af9624c6302b547",
               "userSay":"bắt đầu",
               "actions":[
                  {
                     "name":"q1c_verify_cus",
                     "attachment":{
                        "type":"PERSONALIZE_TEXT",
                        "payload":{
                           "content":"Chào {ne_gender}, em là Phương Vy. em gọi từ phòng dịch vụ khách hàng FE Credit. Đây là cuộc gọi quan trọng ảnh hưởng đến quyền lợi của khách hàng, mong anh chị phản hồi rõ ràng năm câu hỏi sau."
                         }
                     }
                  },
                  {
                     "name":"q1c_verify_cus",
                     "attachment":{
                        "type":"PERSONALIZE_TEXT",
                        "payload":{
                           "content":"cho em hỏi có phải {ne_gender} {ne_customer_name} đang nghe máy đúng không ạ?"
                        }
                     }
                  },
                  {
                     "name":"q1c_verify_cus",
                     "attachment":{
                        "type":"ACTION_TAG",
                        "payload":{
                           "actionCode":"WC_CODE_15",
                           "subActionCode":"WC_CODE_15.1"
                        }
                     }
                  }
               ],
               "createdAt": "2023-05-26T09:01:15.553Z"
            },
            {
              "id": "653a2ab21af9624c6302b54a",
              "userSay": "đúng rồi",
              "actions": [
                {
                  "name": "q1c_yes",
                  "attachment": {
                    "type": "PERSONALIZE_TEXT",
                    "payload": {
                      "content": "Dạ vâng. Em chào {ne_gender} {ne_customer_name}. {ne_gender} vui lòng lưu ý không cung cấp mã OTP đã được gửi cho {ne_gender}, hoặc các thông tin cá nhân cho người thứ 3, kể cả nhân viên công ty để tránh bị giả danh lừa đảo. Mọi giao dịch phát sinh liên quan đến việc cung cấp OTP, {ne_gender} phải chịu hoàn toàn trách nhiệm."
                      }
                  }
                },
                {
                  "name": "q1c_yes",
                  "attachment": {
                    "type": "ACTION_TAG",
                    "payload": {
                      "actionCode": "WC_CODE_15",
                      "subActionCode": "WC_CODE_15.1"
                    }
                  }
                },
                {
                  "name": "q2c_address",
                  "attachment": {
                    "type": "PERSONALIZE_TEXT",
                    "payload": {
                      "content": "Em xin xác nhận một số thông tin về hợp đồng {ne_product_type}, số {ne_contract_number} của {ne_gender}. \nCó phải địa chỉ hiện tại của {ne_gender} là: {ne_current_addr} đúng không ạ?"
                      }
                  }
                },
                {
                  "name": "q2c_address",
                  "attachment": {
                    "type": "ACTION_TAG",
                    "payload": {
                      "actionCode": "WC_CODE_15",
                      "subActionCode": "WC_CODE_15.1"
                    }
                  }
                }
              ],
              "createdAt": "2023-05-26T09:01:15.553Z"
            }
         ]
      ]
   },
   "import_data":{
      "so_dien_thoai":"+84987654321",
      "ho_ten":"David Thiêm",
      "danh_xung":"Anh"
   }
}
```

Sự kiện approve_scenario hoặc reject_scenario:

Thuộc tính
Kiểu dữ liệu
Mô tả

scenario_id

String

Mã của kịch bản được duyệt

status

String

Trạng thái của kịch bản sau khi duyệt

app_id

String

Mã ứng dụng

timestamp

Number

Thời điểm gửi sự kiện

Ví dụ:

{
    "event": "approve_scenario",
    "data": {
        "scenario_id": "",
        "status": "ACTIVE"
    },
    "app_id": "",
    "timestamp": 1698748717000
}
// hoặc
{
    "event": "reject_scenario",
    "data": {
        "scenario_id": "",
        "status": "REJECT"
    },
    "app_id": "",
    "timestamp": 1698748717000
}

Phụ lục

Chi tiết mã trạng thái của cuộc gọi (status):

Tên
Mô tả

ANSWER

Nghe máy

Khách hàng bắt máy

VOICE_MAIL

Vào thư thoại

Khách hàng không bắt máy, cuộc gọi dơi vào trạng thái voice mail

NO_ANSWER

Không nghe máy

Có 2 trường hợp: - Tổng đài của nhà mạng không gọi ra được - Khách hàng không bắt máy

BUSY

Máy bận

Máy bận

FAILED

Không liên lạc được

Lỗi hệ thống SMART IVR hoặc tổng đài

DO_NOT_CALL

Không được phép gọi

Danh sách DNC của Bộ thông tin

BLACKLIST_SYSTEM

Danh sách hạn chế

Blacklist hệ thống

ERROR

Lỗi

Lỗi

Nếu Webhook API gọi không thành công, chúng tôi sẽ gọi lại sau 5 phút, tối đa 2 lần gọi lại. Một request không thành công được định nghĩa là trả về HTTP Status Code khác 200

Last updated