Freshdesk 连接器

通过 Tajo 将 Freshdesk 连接到 Brevo,统一支持和营销数据。同步客户支持工单、联系人档案和满意度评分,基于支持互动触发精准沟通。

概览

属性
平台Freshdesk
类别支持
设置复杂度简单
官方集成
同步数据工单、联系人、客服、公司
可用技能6

功能

  • 联系人同步 - Freshdesk 联系人与 Brevo 联系人列表的双向同步
  • 工单事件跟踪 - 将工单创建、更新和解决事件转发到 Brevo
  • CSAT 同步 - 将客户满意度评分同步为 Brevo 联系人属性
  • 公司同步 - 将 Freshdesk 公司映射到 Brevo 联系人细分
  • 客服数据 - 跟踪客服分配,用于内部工作流自动化
  • 自定义字段 - 将 Freshdesk 自定义工单和联系人字段映射到 Brevo 属性

前提条件

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

  1. 具有管理员访问权限的 Freshdesk 账户
  2. 您的 Freshdesk API 密钥(在”个人资料设置”中找到)
  3. 您的 Freshdesk 域名(例如 yourcompany.freshdesk.com
  4. 具有 API 访问权限的 Brevo 账户
  5. 具有 API 凭据的 Tajo 账户

认证

API 密钥认证

Freshdesk 通过 HTTP 基本认证使用 API 密钥。API 密钥作为用户名,任意字符串(通常为 X)作为密码。

Terminal window
curl -u "YOUR_API_KEY:X" \
https://yourcompany.freshdesk.com/api/v2/tickets

或在 Authorization 请求头中使用 Base64 编码:

Terminal window
curl https://yourcompany.freshdesk.com/api/v2/tickets \
-H "Authorization: Basic BASE64_ENCODED_API_KEY:X" \
-H "Content-Type: application/json"

查找您的 API 密钥

  1. 登录您的 Freshdesk 账户
  2. 点击右上角的个人头像
  3. 前往个人资料设置
  4. 您的 API 密钥显示在右侧

配置

基础设置

connectors:
freshdesk:
enabled: true
domain: "yourcompany.freshdesk.com"
api_key: "your-freshdesk-api-key"
# Data sync options
sync:
contacts: true
tickets: true
companies: true
satisfaction_ratings: true
# Brevo list assignment
lists:
all_support_contacts: 30
open_tickets: 31
resolved_tickets: 32

联系人字段映射

将 Freshdesk 联系人字段映射到 Brevo 属性:

contact_mapping:
email: email
name: FULLNAME
phone: SMS
company_id: COMPANY
job_title: JOB_TITLE
twitter_id: TWITTER
language: LANGUAGE
time_zone: TIMEZONE
# Support metrics
total_tickets: TICKET_COUNT
open_tickets: OPEN_TICKETS
avg_csat: CSAT_SCORE
last_ticket_date: LAST_SUPPORT_DATE
# Custom fields
custom_fields.account_type: ACCOUNT_TYPE
custom_fields.subscription_tier: PLAN

工单事件映射

将 Freshdesk 工单事件映射到 Brevo 自动化触发器:

ticket_events:
ticket_created: "support_ticket_created"
ticket_updated: "support_ticket_updated"
ticket_resolved: "support_ticket_resolved"
ticket_closed: "support_ticket_closed"
ticket_reopened: "support_ticket_reopened"
satisfaction_rated: "csat_submitted"
note_added: "support_note_added"

API 端点

方法端点描述
GET/api/v2/tickets列出所有工单
POST/api/v2/tickets创建工单
GET/api/v2/tickets/{id}获取特定工单
PUT/api/v2/tickets/{id}更新工单
DELETE/api/v2/tickets/{id}删除工单
GET/api/v2/contacts列出所有联系人
POST/api/v2/contacts创建联系人
PUT/api/v2/contacts/{id}更新联系人
GET/api/v2/companies列出所有公司
GET/api/v2/agents列出所有客服
GET/api/v2/surveys/satisfaction_ratings列出 CSAT 评分
GET/api/v2/search/tickets?query=搜索工单

代码示例

初始化 Freshdesk 连接器

import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
brevoApiKey: process.env.BREVO_API_KEY
});
// Connect Freshdesk account
await tajo.connectors.connect('freshdesk', {
domain: 'yourcompany.freshdesk.com',
apiKey: process.env.FRESHDESK_API_KEY
});

将联系人同步到 Brevo

// Fetch Freshdesk contacts and sync to Brevo
const response = await fetch(
'https://yourcompany.freshdesk.com/api/v2/contacts?page=1&per_page=100',
{
headers: {
'Authorization': 'Basic ' + btoa(`${API_KEY}:X`),
'Content-Type': 'application/json'
}
}
);
const contacts = await response.json();
// Each contact:
// {
// "id": 12345,
// "name": "Jane Kim",
// "email": "[email protected]",
// "phone": "+15551234567",
// "company_id": 678,
// "job_title": "Product Manager",
// "created_at": "2024-01-15T10:30:00Z"
// }

跟踪工单事件

// Set up Freshdesk webhook to forward ticket events
// Configure in Freshdesk Admin > Automations > Webhook
// Webhook handler
app.post('/webhooks/freshdesk', async (req, res) => {
const { ticket, event_type } = req.body;
await tajo.connectors.handleWebhook('freshdesk', {
topic: event_type,
payload: {
ticketId: ticket.id,
subject: ticket.subject,
status: ticket.status,
priority: ticket.priority,
requesterEmail: ticket.requester.email,
createdAt: ticket.created_at
}
});
res.status(200).send('OK');
});

按客户搜索工单

// Search for all tickets from a specific customer
const query = encodeURIComponent('"email:[email protected]"');
const response = await fetch(
`https://yourcompany.freshdesk.com/api/v2/search/tickets?query=${query}`,
{
headers: {
'Authorization': 'Basic ' + btoa(`${API_KEY}:X`)
}
}
);
const { results, total } = await response.json();

速率限制

计划限制详情
Sprout50 请求/分钟免费计划
Blossom200 请求/分钟入门计划
Garden400 请求/分钟增长计划
Estate700 请求/分钟专业计划
Forest1,000 请求/分钟企业计划

附加限制:

资源限制
列表端点每次查询 30 页
每页最多 100 条记录
搜索 API2 请求/秒
批量操作每次请求 10 条记录

速率限制响应头

Freshdesk 在响应头中返回速率限制信息。监控 X-RateLimit-Remaining,在接近限制时实施退避策略。

故障排除

问题原因解决方案
401 UnauthorizedAPI 密钥无效在 Freshdesk 个人资料设置中验证 API 密钥
403 Forbidden权限不足确保 API 密钥属于管理员账户
联系人未同步缺少邮箱字段Freshdesk 联系人需要邮箱地址
工单未显示域名错误验证 Freshdesk 域名 URL 是否正确
搜索返回空查询语法错误使用带双引号的 Freshdesk 搜索查询语法
429 Too Many Requests超出速率限制根据计划层级实施速率限制
自定义字段缺失字段未启用确保在 Freshdesk 管理中启用自定义字段

最佳实践

  1. 使用 Webhook 进行实时同步 - 配置 Freshdesk 自动化,在工单事件时触发 Webhook
  2. 同步 CSAT 评分 - 将客户满意度评分作为 Brevo 属性跟踪,用于细分
  3. 将工单状态映射到列表 - 根据工单状态自动在 Brevo 列表间移动联系人
  4. 跟踪支持指标 - 同步每个联系人的工单数量、平均响应时间和解决率
  5. 谨慎使用搜索 API - 搜索 API 有更严格的速率限制;尽可能缓存结果
  6. 分页处理大型导出 - 初始同步时使用 pageper_page 参数进行分页

安全

  • API 密钥认证 - 使用 API 密钥的简单 HTTP 基本认证
  • 仅 HTTPS - 所有 API 通信均需要 TLS 加密
  • IP 白名单 - Estate 和 Forest 计划可用
  • 基于角色的访问 - API 密钥权限与客服角色绑定
  • SOC 2 Type II - Freshdesk 通过 SOC 2 Type II 认证
  • GDPR 合规 - 支持数据导出和删除请求

相关资源

Subscribe to updates

developer-docs

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

auto-detect
AI 助手

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