Tổng quan hệ thống & Khả năng chịu tải

Bitrix Broker Platform là hệ thống Microservice Gateway đa cổng (Multi-Tenant Broker) được thiết kế đặc biệt cho việc gom đệm batch, khống chế tần suất REST API limit và xử lý các tác vụ khối lượng lớn (Heavy Tasks) giữa các hệ thống bên ngoài / Bitrix Workflows với Bitrix24 CRM.

Hệ số tối ưu REST Batch (50x Optimization)

Tự động gom tối đa 50 request lẻ thành đúng 1 HTTP REST `batch` call gửi tới Bitrix. Giảm 98% chi phí kết nối HTTP và giải phóng băng thông cho server.

Tốc độ xử lý tối đa / Portal Domain

Ở chế độ gom đệm accumulate, mỗi portal có thể xử lý tối đa lên tới 90 CRM items / giây (tương đương 5.400 items / phút per domain) mà không dính lỗi QUERY_LIMIT_EXCEEDED của Bitrix.

📊 Bảng thông số ước tính chịu tải theo cấu hình phần cứng Server:

Cấu hình phần cứng RAM tiêu thụ cơ bản Throughput xử lý / Phút Số Portal đáp ứng
Gói Tiêu Chuẩn (1 vCPU, 1 GB RAM) ~45 MB - 80 MB RAM 1.500 - 3.000 requests / phút 1 - 3 Portals
Gói Khá (2 vCPU, 4 GB RAM) ~120 MB - 250 MB RAM 10.000 - 25.000 requests / phút 5 - 15 Portals
Gói Cao Cấp (4 vCPU, 8 GB RAM) ~300 MB - 600 MB RAM 50.000+ requests / phút 30+ Portals
* Bộ nhớ RAM tự động được giải phóng liên tục nhờ cơ chế Memory Release Cleanup purges các completed jobs sau 1 giờ (giới hạn tối đa 1.000 jobs history).
POST /api/v1/queue/messages

API Proxy hàng đợi chính của hệ thống. Tiếp nhận các message chứa target_url và đẩy lên Bitrix REST API hoặc Webhook đối tác. Mặc định chế độ: async (xử lý nền bất đồng bộ). Ngoài ra hỗ trợ accumulate (gom batch 50 items/delay window) và sync (chờ phản hồi đồng bộ).

INPUT PARAMETERS (Tham số đầu vào):
Tham số (Field) Kiểu dữ liệu Bắt buộc Mô tả chi tiết & Giá trị hợp lệ
x-domain Header / String Bắt buộc Domain / Tenant đích đã đăng ký trên Broker (VD: demo.bitrix24.com). Hỗ trợ alias: x-target-domain, x-portal-domain, x-bitrix-domain.
mode Body / String Tùy chọn Chế độ xử lý: "async" (Mặc định - xử lý nền), "accumulate" (gom batch 50 items/delay), "sync" (chờ đồng bộ).
delay Body / Number Tùy chọn Thời gian chờ gom đệm (giây). Mặc định 30 (Chỉ có hiệu lực ở chế độ accumulate).
callback_url Body / String Tùy chọn URL Webhook tuyệt đối để nhận thông báo khi Job xử lý hoàn tất.
messages / items Body / Array Bắt buộc Mảng danh sách các đối tượng message/request chuyển tiếp.
messages[].target_url Item Field / String Bắt buộc Tên phương thức Bitrix REST API (VD: crm.deal.add, crm.lead.add) hoặc URL Webhook đối tác tuyệt đối để Proxy đẩy dữ liệu tới.
messages[].auth_mode Item Field / String Tùy chọn Phương thức xác thực chọn dùng (cookie, oauth2, webhook) khi target_url là phương thức Bitrix REST API. Nếu bỏ qua, hệ thống tự dùng Auth Mode cấu hình của Portal.
messages[].body / payload Item Field / Object Bắt buộc Đối tượng dữ liệu JSON payload cần chuyển tiếp tới target_url.
Mẫu JSON Request Input (Ví dụ Proxy forward request):
{
  "mode": "async",
  "delay": 30,
  "callback_url": "https://your-webhook.com/callback",
  "messages": [
    {
      "target_url": "crm.deal.add",
      "auth_mode": "oauth2",
      "body": {
        "fields": {
          "TITLE": "Cơ hội kinh doanh mới qua Proxy",
          "OPPORTUNITY": 5000,
          "CURRENCY_ID": "VND"
        }
      }
    }
  ]
}
OUTPUT FIELDS (Dữ liệu trả về):
Trường (Field) Kiểu dữ liệu Mô tả ý nghĩa thông tin
success Boolean Trạng thái thực thi request (true / false).
mode String Chế độ xử lý đã được hệ thống ghi nhận (VD: "async").
jobId String Mã ID duy nhất của Job trong hàng đợi để tra cứu tiến độ.
totalMessages Number Tổng số lượng message/request đã được đưa vào hàng đợi thành công.
message String Thông điệp mô tả kết quả xử lý từ hệ thống Broker.
Mẫu JSON Response Output (HTTP 202 Accepted):
{
  "success": true,
  "mode": "async",
  "domain": "demo.bitrix24.com",
  "jobId": "heavy_job_1786073800100",
  "totalMessages": 1,
  "totalChunks": 1,
  "subJobIds": ["heavy_job_1786073800100"],
  "message": "Job heavy_job_1786073800100 enqueued for background processing."
}
POST /api/v1/webhooks/:key

Endpoint tiếp nhận Outbound Webhooks tự động từ Bitrix24 theo mã Key duy nhất. Người dùng chỉ cần dán URL này vào Bitrix24 mà không cần cấu hình thêm tham số nào trong payload. Các thông số xử lý (Target Url, Chế độ async/sync/accumulate, Delay gom, Secret Token) đã được thiết lập và lưu trữ sẵn trong hệ thống Broker khi tạo Webhook Receiver.

THÔNG TIN ENDPOINT & BẢO VỆ TỰ ĐỘNG:
Thành phần Vị trí Bắt buộc Mô tả chi tiết
:key URL Path Bắt buộc Mã Hex định danh duy nhất của Webhook Receiver (VD: 083ac1f91fb8d4f9). Broker tự tra cứu Target Url và Chế độ đã lưu.
Bitrix Payload HTTP Body Tự động Dữ liệu thô do Bitrix24 tự gửi sang (chứa event, data[FIELDS][ID], auth[domain]...).
Ví dụ Webhook Handler URL dán vào Bitrix24 Outbound Webhook:
https://your-broker-domain.com/api/v1/webhooks/083ac1f91fb8d4f9
OUTPUT FIELDS (Phản hồi từ Broker):
Mẫu JSON Response Output (HTTP 200 OK):
{
  "success": true,
  "mode": "async",
  "domain": "demo.bitrix24.com",
  "webhook": "Đồng bộ Deal mới",
  "jobId": "job_1786073800100",
  "message": "Raw Bitrix webhook received & enqueued for async processing."
}
GET PATCH /api/v1/portals

Quản lý các Portal và Webhook Receiver Endpoints trong hệ thống Broker. Yêu cầu Authorization: Bearer <admin_token>.

DANH SÁCH ENDPOINT QUẢN LÝ:
Method Endpoint Mô tả tính năng
GET /api/v1/portals Lấy danh sách tất cả Portals đã đăng ký trong DB.
POST /api/v1/portals/upsert Đăng ký mới hoặc Cập nhật thông tin Portal (hỗ trợ authMode, webhookUrl, errorNotifyUrl).
PATCH /api/v1/portals/:domain/status Tạm khóa (HTTP 403 Forbidden) hoặc Mở khóa hoạt động của Portal (body: { "enabled": false }).
GET /api/v1/portals/:domain/webhooks Lấy danh sách tất cả Webhook Receivers của Portal.
POST /api/v1/portals/:domain/webhooks Tạo mới Webhook Receiver cho Portal.
PATCH /api/v1/portals/:domain/webhooks/:webhookId/status Tạm khóa hoặc Mở khóa Webhook Receiver (body: { "enabled": false }).
Mẫu JSON Response (GET /api/v1/portals):
{
  "success": true,
  "portals": [
    {
      "domain": "eqvn.bitrix24.com",
      "name": "EQVN Demo Portal",
      "authMode": "oauth2",
      "oauthConnected": true,
      "errorNotifyUrl": "https://n8n.dtx.vn/webhook/bitrix-error-alert",
      "enabled": true,
      "webhooks": [
        {
          "id": "wh_6357b94ab19f",
          "key": "6357b94ab19fc00b44a40fe9",
          "name": "Nhận Webhook CRM Deal",
          "targetUrl": "https://n8n.dtx.vn/webhook/deal-update",
          "mode": "async",
          "enabled": true
        }
      ]
    }
  ]
}
POST GET /api/v1/events /api/v1/automation Mô-đun mở rộng

Mô-đun mở rộng hỗ trợ đăng ký Event Handlers tự động trong Bitrix24 (CRM Events, Chatbot/ImBot, Telephony/Calls, SMS/Message Services, Tasks) và đăng ký Automation Rules / Robots / BizProc Activities trong quy trình tự động hóa của Bitrix24.

DANH SÁCH ENDPOINTS NÂNG CẤP:
Method Endpoint Mô tả tính năng
POST /api/v1/events/bind Đăng ký Event Handler mới trên Bitrix24 (body: domain, event, handlerUrl, authMode).
POST /api/v1/events/unbind Hủy đăng ký Event Handler trên Bitrix24 server.
GET /api/v1/events/list Lấy danh sách các Event đã được lưu trong DB local.
GET /api/v1/events/remote-list Lấy danh sách System Events trực tiếp từ Bitrix24 server (query: domain, authMode).
POST /api/v1/automation/robot/add Đăng ký Custom Automation Robot / BizProc Activity mới cho quy trình CRM Automation rules.
POST /api/v1/automation/robot/unbind Hủy đăng ký Automation Robot khỏi Bitrix24 server.
GET /api/v1/automation/robot/list Lấy danh sách Automation Robots đã được lưu trong DB local.
GET /api/v1/automation/robot/remote-list Lấy danh sách Automation Robots trực tiếp từ Bitrix24 server (query: domain, authMode).
Ví dụ Request Input Đăng ký Event Chatbot (POST /api/v1/events/bind):
{
  "domain": "demo.bitrix24.com",
  "event": "ONIMBOTMESSAGEADD",
  "handlerUrl": "https://your-broker-domain.com/api/v1/webhooks/083ac1f91fb8d4f9"
}
Ví dụ Request Input Đăng ký CRM Automation Robot với hỗ trợ SPA & Return Properties (POST /api/v1/automation/robot/add):
{
  "domain": "eqvn.bitrix24.com",
  "code": "broker_deal_sync_robot",
  "name": "Robot Đồng Bộ CRM & SPA Sang ERP",
  "description": "Kích hoạt tự động trong CRM Stage Rules khi Deal/SPA đổi trạng thái",
  "handlerUrl": "https://bx-sync.dtx.vn/api/v1/webhooks/6357b94ab19fc00b44a40fe9",
  "authMode": "oauth2",
  "authUserId": 1,
  "filter": {
    "INCLUDE": [
      ["crm", "CCrmDocumentDeal"],
      ["crm", "CCrmDocumentLead"],
      ["crm", "crm.dynamic_128"],
      ["crm", "Bitrix\\Crm\\Integration\\BizProc\\Document\\Dynamic", "DYNAMIC_128"]
    ]
  },
  "properties": {
    "target_system": {
      "Name": "Hệ thống nhận",
      "Type": "string",
      "Required": "Y",
      "Default": "ERP System"
    }
  },
  "returnProperties": {
    "result_status": {
      "Name": "Trạng thái xử lý",
      "Type": "string"
    }
  }
}
POST /api/v1/orders/deal Mô-đun mở rộng

API mở rộng chuyên dụng tạo đơn hàng cho **Bitrix CRM Deals**. Mặc định mode: "async".

INPUT PARAMETERS (Tham số đầu vào):
Tham số (Field) Kiểu dữ liệu Bắt buộc Mô tả chi tiết
workflow_id String Bắt buộc Mã quy trình Workflow Bitrix24 tạo đơn (VD: wf_deal_101).
document_id[2] String Bắt buộc Mã ID Deal trong Bitrix CRM (VD: DEAL_1234 hoặc 1234).
properties[orderTopic] String Tùy chọn Tiêu đề / Tên đơn hàng hiển thị trong Bitrix Store.
properties[amount] Number Bắt buộc Tổng giá trị đơn hàng (VD: 1500).
properties[createPayment] String Tùy chọn Tự động sinh chứng từ thanh toán Payment ("Y" / "N").
Mẫu JSON Request Input:
{
  "mode": "accumulate",
  "delay": 30,
  "items": [
    {
      "workflow_id": "wf_deal_101",
      "document_id[2]": "DEAL_1234",
      "properties": {
        "orderTopic": "Đơn hàng Deal #1234",
        "amount": 1500,
        "currency": "VND",
        "createPayment": "Y"
      }
    }
  ]
}
OUTPUT FIELDS (Dữ liệu trả về):
Mẫu JSON Response Output (HTTP 202 Accepted):
{
  "success": true,
  "orderType": "deal",
  "mode": "accumulate",
  "domain": "demo.bitrix24.com",
  "totalOrders": 1,
  "delay": 30,
  "message": "Enqueued 1 DEAL order(s) into batch accumulator (Flush window: 30s or max 50 items)."
}
POST /api/v1/orders/spa Mô-đun mở rộng

API mở rộng chuyên dụng tạo đơn hàng cho **Bitrix Smart Process Automation (SPA)**. Mặc định mode: "async".

INPUT PARAMETERS (Tham số đầu vào):
Tham số (Field) Kiểu dữ liệu Bắt buộc Mô tả chi tiết
workflow_id String Bắt buộc Mã quy trình Workflow Bitrix24 tạo đơn SPA.
document_id[2] String Bắt buộc Mã Định danh SPA Entity (VD: DYNAMIC_1052_5001).
properties[amount] Number Bắt buộc Tổng giá trị đơn hàng SPA (VD: 2500).
Mẫu JSON Request Input:
{
  "mode": "accumulate",
  "delay": 30,
  "items": [
    {
      "workflow_id": "wf_spa_202",
      "document_id[2]": "DYNAMIC_1052_5001",
      "properties": {
        "orderTopic": "Đơn hàng SPA #5001",
        "amount": 2500,
        "createPayment": "Y"
      }
    }
  ]
}
OUTPUT FIELDS (Dữ liệu trả về):
Mẫu JSON Response Output (HTTP 202 Accepted):
{
  "success": true,
  "orderType": "spa",
  "mode": "accumulate",
  "domain": "demo.bitrix24.com",
  "totalOrders": 1,
  "delay": 30,
  "message": "Enqueued 1 SPA order(s) into batch accumulator (Flush window: 30s or max 50 items)."
}