Zendesk 连接器

通过 Tajo 将您的 Zendesk Support 实例连接到 Brevo,实现统一的客户支持数据、基于工单的细分、满意度评分以及支持触发的营销自动化。

概览

属性
平台Zendesk
类别支持
设置复杂度中等
官方集成
同步数据工单、用户、组织、事件
API 基础 URLhttps://{subdomain}.zendesk.com/api/v2

功能

  • 用户同步 - 将 Zendesk 终端用户和客服与 Brevo 联系人同步
  • 工单跟踪 - 同步工单数据,用于支持感知营销细分
  • 组织映射 - 将联系人与组织关联,实现 B2B 工作流
  • 满意度评分 - 将 CSAT 和 NPS 数据同步到 Brevo 属性
  • 工单事件 - 跟踪工单创建、解决和升级,用于自动化触发
  • 帮助中心集成 - 跟踪文章浏览和搜索行为
  • 多渠道支持 - 同步来自邮件、聊天、语音和消息渠道的数据
  • 自定义字段 - 将 Zendesk 自定义工单和用户字段映射到 Brevo

前提条件

开始之前,请确保您已具备:

  1. Zendesk Support 账户(Team、Professional 或 Enterprise 版本)
  2. 对 Zendesk 实例的管理员访问权限
  3. 已配置 API 令牌或 OAuth 应用
  4. 具有 API 访问权限的 Brevo 账户
  5. Tajo 账户

认证

API 令牌认证

使用邮箱/令牌认证快速设置。

Terminal window
curl https://{subdomain}.zendesk.com/api/v2/users.json \
-u {email}/token:{api_token} \
-H "Content-Type: application/json"

从 Zendesk 管理 > 应用和集成 > API > Zendesk API 生成 API 令牌。

OAuth 2.0

用于具有委托用户访问权限的多实例集成。

Terminal window
# Authorization URL
https://{subdomain}.zendesk.com/oauth/authorizations/new?
response_type=code&
client_id={client_id}&
redirect_uri={redirect_uri}&
scope=read%20write

所需范围

read # Read access to all resources
write # Write access to all resources
tickets:read # Read tickets (granular)
users:read # Read users (granular)
organizations:read # Read organizations (granular)

配置

基础设置

connectors:
zendesk:
enabled: true
subdomain: "yourcompany"
auth:
api_token: "${ZENDESK_API_TOKEN}"
# Data sync options
sync:
users: true
tickets: true
organizations: true
satisfaction_ratings: true
# Brevo list assignment
lists:
all_customers: 30
active_tickets: 31
satisfied_customers: 32

字段映射

将 Zendesk 用户字段映射到 Brevo 联系人属性:

默认映射

Parameter Type Description
email required
string

用户邮箱地址(唯一标识符)

name optional
string

全名,拆分为 FIRSTNAME/LASTNAME

phone optional
string

映射到 SMS 属性,用于 WhatsApp/短信

organization_id optional
integer

用于 B2B 映射的关联组织

role optional
string

用户角色(终端用户、客服、管理员)

tags optional
array

来自 Zendesk 的用户标签

ticket_restriction optional
string

工单访问级别

custom_fields optional
object

自定义用户字段值

自定义字段映射

field_mapping:
# Standard fields
email: email
name: FULLNAME
phone: SMS
# Support metrics
open_tickets: OPEN_TICKETS
total_tickets: TOTAL_TICKETS
avg_satisfaction: CSAT_SCORE
last_ticket_date: LAST_SUPPORT_DATE
# Organization fields
organization.name: COMPANY_NAME
organization.tags: COMPANY_TAGS
# Custom fields
user_fields.customer_type: CUSTOMER_TYPE
user_fields.account_tier: ACCOUNT_TIER

API 端点

工单 API

方法端点描述
GET/api/v2/tickets列出工单
POST/api/v2/tickets创建工单
PUT/api/v2/tickets/{id}更新工单
GET/api/v2/tickets/{id}显示工单
GET/api/v2/search.json?query={query}搜索工单

用户 API

方法端点描述
GET/api/v2/users列出用户
POST/api/v2/users创建用户
PUT/api/v2/users/{id}更新用户
GET/api/v2/users/{id}显示用户
GET/api/v2/users/search.json?query={query}搜索用户

组织 API

方法端点描述
GET/api/v2/organizations列出组织
POST/api/v2/organizations创建组织
GET/api/v2/organizations/{id}/users列出组织成员

满意度评分 API

方法端点描述
GET/api/v2/satisfaction_ratings列出满意度评分
GET/api/v2/satisfaction_ratings/{id}显示评分

事件

工单事件

事件触发条件使用场景
ticket.created新工单提交支持确认
ticket.updated工单状态变更状态通知
ticket.solved工单标记为已解决CSAT 调查触发
ticket.reopened已解决工单重新打开升级提醒

用户事件

事件触发条件使用场景
user.created新用户注册欢迎到支持中心
user.updated用户档案变更属性同步
user.merged用户合并去重

满意度事件

事件触发条件使用场景
satisfaction_rating.createdCSAT 已提交反馈处理
satisfaction_rating.bad负面评分挽回外联
satisfaction_rating.good正面评分倡导活动

代码示例

初始化连接器

import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
brevoApiKey: process.env.BREVO_API_KEY
});
// Connect Zendesk
await tajo.connectors.connect('zendesk', {
subdomain: 'yourcompany',
apiToken: process.env.ZENDESK_API_TOKEN
});

同步用户和工单

// Full sync of users and ticket data
await tajo.connectors.sync('zendesk', {
type: 'full',
resources: ['users', 'tickets', 'organizations'],
since: '2023-01-01'
});
// Check sync status
const status = await tajo.connectors.status('zendesk');
console.log(status);
// {
// connected: true,
// lastSync: '2024-01-15T10:30:00Z',
// usersSynced: 8400,
// ticketsSynced: 34200,
// organizationsSynced: 1200
// }

处理 Zendesk Webhook

app.post('/webhooks/zendesk', async (req, res) => {
const signature = req.get('X-Zendesk-Webhook-Signature');
// Verify 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');
});

速率限制

Zendesk 速率限制因计划而异:

计划速率限制详情
Team200 请求/分钟每个 API 令牌
Professional400 请求/分钟每个 API 令牌
Enterprise700 请求/分钟每个 API 令牌
高容量附加组件2,500 请求/分钟每个 API 令牌

附加限制:

  • 搜索 API:匿名 6 请求/分钟,已认证 100 请求/分钟
  • 增量导出:10 请求/分钟
  • 批量 API:每次批量请求 100 条记录
  • Webhook 投递:带指数退避的自动重试

速率限制响应头

监控 X-Rate-Limit-RemainingRetry-After 请求头以管理您的 API 使用情况。

故障排除

常见问题

问题原因解决方案
401 UnauthorizedAPI 令牌无效在 Zendesk 管理中重新生成令牌
403 Forbidden权限不足检查客服或管理员角色要求
用户未同步用户是客服,而非终端用户在同步配置中按角色筛选
未收到 Webhook触发器/目标未配置在 Zendesk 管理中设置 Webhook 目标
搜索返回空索引延迟等待 1-2 分钟让搜索索引更新

调试模式

启用详细日志记录:

connectors:
zendesk:
debug: true
log_level: verbose
log_webhooks: true

测试连接

Terminal window
tajo connectors test zendesk
# ✓ API connection successful
# ✓ Users readable
# ✓ Tickets readable
# ✓ Organizations readable
# ✓ Webhooks configured

最佳实践

  1. 使用增量导出 - 使用增量 API 进行大规模数据同步
  2. 仅筛选终端用户 - 从 Brevo 联系人同步中排除客服和管理员
  3. 同步 CSAT 数据 - 使用满意度评分进行客户健康度细分
  4. 映射组织 - 利用组织数据进行 B2B 营销活动
  5. 实施 Webhook 重试 - 优雅地处理临时故障
  6. 使用侧加载 - 在 API 响应中包含相关记录,减少请求次数

安全

  • API 令牌认证 - 与管理员邮箱绑定的基于令牌的访问
  • OAuth 2.0 - 带范围控制的基于令牌的委托访问
  • Webhook 签名 - HMAC 签名验证 Webhook 负载
  • TLS 加密 - 所有 API 通信通过 HTTPS 加密
  • IP 白名单 - 按 IP 范围限制 API 访问

相关资源

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AI 助手

你好!关于文档有任何问题都可以问我。