Trình Kết Nối Zendesk
Kết nối Zendesk Support instance của bạn với Brevo qua Tajo để unified customer support data, ticket-based segmentation, satisfaction scoring và support-triggered marketing automation.
Tổng Quan
| Thuộc Tính | Giá Trị |
|---|---|
| Nền Tảng | Zendesk |
| Danh Mục | Support |
| Độ Phức Tạp Thiết Lập | Trung Bình |
| Tích Hợp Chính Thức | Có |
| Dữ Liệu Đồng Bộ | Tickets, Users, Organizations, Sự Kiện |
| URL API Cơ Sở | https://{subdomain}.zendesk.com/api/v2 |
Tính Năng
- Đồng bộ user - Đồng bộ Zendesk end-users và agents với contacts Brevo
- Theo dõi ticket - Đồng bộ dữ liệu ticket để phân đoạn marketing dựa trên support
- Ánh xạ organization - Liên kết contacts với organizations cho B2B workflows
- Satisfaction scores - Đồng bộ dữ liệu CSAT và NPS sang thuộc tính Brevo
- Ticket events - Theo dõi ticket creation, resolution và escalation cho automation triggers
- Tích hợp help center - Theo dõi lượt xem bài viết và hành vi tìm kiếm
- Hỗ trợ đa kênh - Đồng bộ dữ liệu từ email, chat, voice và messaging channels
- Custom fields - Ánh xạ Zendesk custom ticket và user fields sang Brevo
Yêu Cầu
Trước khi bắt đầu, hãy đảm bảo bạn có:
- Tài khoản Zendesk Support (Team, Professional, hoặc Enterprise)
- Quyền admin vào Zendesk instance của bạn
- API token hoặc OAuth app được cấu hình
- Tài khoản Brevo với quyền truy cập API
- Tài khoản Tajo
Xác Thực
Xác Thực API Token
Dùng email/token authentication để thiết lập nhanh.
curl https://{subdomain}.zendesk.com/api/v2/users.json \ -u {email}/token:{api_token} \ -H "Content-Type: application/json"Tạo API token từ Zendesk Admin > Apps and Integrations > APIs > Zendesk API.
OAuth 2.0
Dùng OAuth cho multi-instance integrations với delegated user access.
# Authorization URLhttps://{subdomain}.zendesk.com/oauth/authorizations/new? response_type=code& client_id={client_id}& redirect_uri={redirect_uri}& scope=read%20writePhạm Vi Cần Thiết
read # Quyền đọc tất cả tài nguyênwrite # Quyền ghi tất cả tài nguyêntickets:read # Đọc tickets (chi tiết)users:read # Đọc users (chi tiết)organizations:read # Đọc organizations (chi tiết)Cấu Hình
Thiết Lập Cơ Bản
connectors: zendesk: enabled: true subdomain: "yourcompany" auth: api_token: "${ZENDESK_API_TOKEN}"
# Tùy chọn đồng bộ dữ liệu sync: users: true tickets: true organizations: true satisfaction_ratings: true
# Gán danh sách Brevo lists: all_customers: 30 active_tickets: 31 satisfied_customers: 32Ánh Xạ Trường
Ánh xạ trường user Zendesk sang thuộc tính liên hệ Brevo:
Ánh Xạ Mặc Định
| Parameter | Type | Description |
|---|---|---|
email required | string | Địa chỉ email user (định danh duy nhất) |
name optional | string | Tên đầy đủ, tách thành FIRSTNAME/LASTNAME |
phone optional | string | Ánh xạ sang thuộc tính SMS cho WhatsApp/SMS |
organization_id optional | integer | Organization liên kết cho B2B mapping |
role optional | string | Vai trò user (end-user, agent, admin) |
tags optional | array | User tags từ Zendesk |
ticket_restriction optional | string | Cấp độ truy cập ticket |
custom_fields optional | object | Giá trị custom user field |
Ánh Xạ Custom Field
field_mapping: # Trường tiêu chuẩn email: email name: FULLNAME phone: SMS
# Số liệu support open_tickets: OPEN_TICKETS total_tickets: TOTAL_TICKETS avg_satisfaction: CSAT_SCORE last_ticket_date: LAST_SUPPORT_DATE
# Trường organization organization.name: COMPANY_NAME organization.tags: COMPANY_TAGS
# Custom fields user_fields.customer_type: CUSTOMER_TYPE user_fields.account_tier: ACCOUNT_TIERAPI Endpoints
Ticketing API
| Phương Thức | Endpoint | Mô Tả |
|---|---|---|
GET | /api/v2/tickets | Liệt kê tickets |
POST | /api/v2/tickets | Tạo ticket |
PUT | /api/v2/tickets/{id} | Cập nhật ticket |
GET | /api/v2/tickets/{id} | Xem ticket |
GET | /api/v2/search.json?query={query} | Tìm kiếm tickets |
Users API
| Phương Thức | Endpoint | Mô Tả |
|---|---|---|
GET | /api/v2/users | Liệt kê users |
POST | /api/v2/users | Tạo user |
PUT | /api/v2/users/{id} | Cập nhật user |
GET | /api/v2/users/{id} | Xem user |
GET | /api/v2/users/search.json?query={query} | Tìm kiếm users |
Organizations API
| Phương Thức | Endpoint | Mô Tả |
|---|---|---|
GET | /api/v2/organizations | Liệt kê organizations |
POST | /api/v2/organizations | Tạo organization |
GET | /api/v2/organizations/{id}/users | Liệt kê thành viên organization |
Satisfaction Ratings API
| Phương Thức | Endpoint | Mô Tả |
|---|---|---|
GET | /api/v2/satisfaction_ratings | Liệt kê satisfaction ratings |
GET | /api/v2/satisfaction_ratings/{id} | Xem một rating |
Sự Kiện
Sự Kiện Ticket
| Sự Kiện | Kích Hoạt | Trường Hợp Sử Dụng |
|---|---|---|
ticket.created | Ticket mới được gửi | Xác nhận support |
ticket.updated | Ticket status thay đổi | Thông báo trạng thái |
ticket.solved | Ticket được đánh dấu solved | Kích hoạt CSAT survey |
ticket.reopened | Ticket đã giải quyết được mở lại | Cảnh báo escalation |
Sự Kiện User
| Sự Kiện | Kích Hoạt | Trường Hợp Sử Dụng |
|---|---|---|
user.created | User mới đăng ký | Chào mừng đến support |
user.updated | Profile user thay đổi | Đồng bộ thuộc tính |
user.merged | Users được merge | Loại bỏ trùng lặp |
Sự Kiện Satisfaction
| Sự Kiện | Kích Hoạt | Trường Hợp Sử Dụng |
|---|---|---|
satisfaction_rating.created | CSAT được gửi | Xử lý phản hồi |
satisfaction_rating.bad | Rating tiêu cực | Outreach phục hồi |
satisfaction_rating.good | Rating tích cực | Advocacy campaigns |
Ví Dụ Code
Khởi Tạo Trình Kết Nối
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Kết nối Zendeskawait tajo.connectors.connect('zendesk', { subdomain: 'yourcompany', apiToken: process.env.ZENDESK_API_TOKEN});Đồng Bộ Users Và Tickets
// Full sync users và dữ liệu ticketawait tajo.connectors.sync('zendesk', { type: 'full', resources: ['users', 'tickets', 'organizations'], since: '2023-01-01'});
// Kiểm tra trạng thái syncconst status = await tajo.connectors.status('zendesk');console.log(status);// {// connected: true,// lastSync: '2024-01-15T10:30:00Z',// usersSynced: 8400,// ticketsSynced: 34200,// organizationsSynced: 1200// }Xử Lý Zendesk Webhooks
app.post('/webhooks/zendesk', async (req, res) => { const signature = req.get('X-Zendesk-Webhook-Signature');
// Xác minh webhook signature if (!verifyZendeskSignature(req.body, signature)) { return res.status(401).send('Unauthorized'); }
await tajo.connectors.handleWebhook('zendesk', { type: req.body.type, ticketId: req.body.ticket_id, userId: req.body.user_id, payload: req.body });
res.status(200).send('OK');});Giới Hạn Tốc Độ
Giới hạn tốc độ Zendesk thay đổi theo gói:
| Gói | Giới Hạn Tốc Độ | Chi Tiết |
|---|---|---|
| Team | 200 yêu cầu/phút | Mỗi API token |
| Professional | 400 yêu cầu/phút | Mỗi API token |
| Enterprise | 700 yêu cầu/phút | Mỗi API token |
| High Volume Add-on | 2.500 yêu cầu/phút | Mỗi API token |
Giới hạn bổ sung:
- Search API: 6 yêu cầu/phút cho anonymous, 100/phút cho authenticated
- Incremental exports: 10 yêu cầu/phút
- Batch API: 100 bản ghi mỗi batch request
- Webhook delivery: Tự động retry với exponential backoff
Header Giới Hạn Tốc Độ
Theo dõi header X-Rate-Limit-Remaining và Retry-After để quản lý mức sử dụng API của bạn.
Khắc Phục Sự Cố
Sự Cố Phổ Biến
| Sự Cố | Nguyên Nhân | Giải Pháp |
|---|---|---|
| 401 Unauthorized | API token không hợp lệ | Tạo lại token trong Zendesk Admin |
| 403 Forbidden | Quyền không đủ | Kiểm tra yêu cầu vai trò agent hoặc admin |
| User không đồng bộ | User là agent, không phải end-user | Lọc theo role trong cấu hình sync |
| Webhook không nhận | Trigger/target chưa cấu hình | Thiết lập webhook target trong Zendesk Admin |
| Tìm kiếm trả về trống | Độ trễ indexing | Chờ 1-2 phút để search index cập nhật |
Chế Độ Debug
Bật verbose logging:
connectors: zendesk: debug: true log_level: verbose log_webhooks: trueKiểm Tra Kết Nối
tajo connectors test zendesk# ✓ API connection successful# ✓ Users readable# ✓ Tickets readable# ✓ Organizations readable# ✓ Webhooks configuredThực Hành Tốt Nhất
- Dùng incremental exports - Dùng Incremental API để đồng bộ dữ liệu quy mô lớn
- Chỉ lọc end-users - Loại trừ agents và admins khỏi đồng bộ contact Brevo
- Đồng bộ dữ liệu CSAT - Dùng satisfaction scores để phân đoạn customer health
- Ánh xạ organizations - Tận dụng dữ liệu organization cho B2B marketing campaigns
- Triển khai webhook retries - Xử lý temporary failures một cách tinh tế
- Dùng side-loading - Bao gồm related records trong API responses để giảm số lượng request
Bảo Mật
- Xác Thực API Token - Truy cập dựa trên token gắn với admin email
- OAuth 2.0 - Truy cập delegated dựa trên token với kiểm soát phạm vi
- Webhook signing - Xác minh chữ ký HMAC cho webhook payloads
- Mã hóa TLS - Tất cả giao tiếp API được mã hóa qua HTTPS
- IP whitelisting - Hạn chế truy cập API theo dải IP