Коннектор Zendesk
Подключите инстанс Zendesk Support к Brevo через Tajo для единых данных о поддержке клиентов, сегментации на основе тикетов, скоринга удовлетворённости и маркетинговой автоматизации на основе событий поддержки.
Обзор
| Свойство | Значение |
|---|---|
| Платформа | Zendesk |
| Категория | Support |
| Сложность настройки | Средняя |
| Официальная интеграция | Да |
| Синхронизируемые данные | Тикеты, пользователи, организации, события |
| Базовый URL API | https://{subdomain}.zendesk.com/api/v2 |
Возможности
- Синхронизация пользователей, синхронизация конечных пользователей и агентов Zendesk с контактами Brevo
- Отслеживание тикетов, синхронизация данных тикетов для сегментации в маркетинге с учётом поддержки
- Маппинг организаций, привязка контактов к организациям для B2B-рабочих процессов
- Оценки удовлетворённости, синхронизация данных CSAT и NPS в атрибуты Brevo
- События тикетов, трекинг создания, закрытия и эскалации тикетов для триггеров автоматизации
- Интеграция с центром помощи, отслеживание просмотров статей и поискового поведения
- Многоканальная поддержка, синхронизация данных из email, чата, голоса и мессенджеров
- Пользовательские поля, маппинг пользовательских полей тикетов и пользователей Zendesk в Brevo
Предварительные требования
Прежде чем начать, убедитесь, что у вас есть:
- Аккаунт Zendesk Support (Team, Professional или Enterprise)
- Права администратора в инстансе Zendesk
- Настроенный API-токен или OAuth-приложение
- Аккаунт Brevo с доступом к API
- Аккаунт Tajo
Аутентификация
Аутентификация по API Token
Используйте аутентификацию email/token для быстрой настройки.
curl https://{subdomain}.zendesk.com/api/v2/users.json \ -u {email}/token:{api_token} \ -H "Content-Type: application/json"Генерируйте API-токен в Zendesk Admin > Apps and Integrations > APIs > Zendesk API.
OAuth 2.0
Используйте OAuth для интеграций с несколькими инстансами с делегированным доступом пользователей.
# URL авторизацииhttps://{subdomain}.zendesk.com/oauth/authorizations/new? response_type=code& client_id={client_id}& redirect_uri={redirect_uri}& scope=read%20writeНеобходимые scope
read # Доступ на чтение всех ресурсовwrite # Доступ на запись всех ресурсовtickets:read # Чтение тикетов (детальный)users:read # Чтение пользователей (детальный)organizations:read # Чтение организаций (детальный)Конфигурация
Базовая настройка
connectors: zendesk: enabled: true subdomain: "yourcompany" auth: api_token: "${ZENDESK_API_TOKEN}"
# Параметры синхронизации данных sync: users: true tickets: true organizations: true satisfaction_ratings: true
# Назначение листов Brevo lists: all_customers: 30 active_tickets: 31 satisfied_customers: 32Сопоставление полей
Сопоставьте поля пользователей Zendesk с атрибутами контактов Brevo:
Сопоставления по умолчанию
| Parameter | Type | Description |
|---|---|---|
email required | string | Email-адрес пользователя (уникальный идентификатор) |
name optional | string | Полное имя, разделяется на FIRSTNAME/LASTNAME |
phone optional | string | Сопоставляется с атрибутом SMS для WhatsApp/SMS |
organization_id optional | integer | Связанная организация для B2B-маппинга |
role optional | string | Роль пользователя (end-user, agent, admin) |
tags optional | array | Теги пользователя из Zendesk |
ticket_restriction optional | string | Уровень доступа к тикетам |
custom_fields optional | object | Значения пользовательских полей |
Сопоставление пользовательских полей
field_mapping: # Стандартные поля email: email name: FULLNAME phone: SMS
# Метрики поддержки open_tickets: OPEN_TICKETS total_tickets: TOTAL_TICKETS avg_satisfaction: CSAT_SCORE last_ticket_date: LAST_SUPPORT_DATE
# Поля организации organization.name: COMPANY_NAME organization.tags: COMPANY_TAGS
# Пользовательские поля user_fields.customer_type: CUSTOMER_TYPE user_fields.account_tier: ACCOUNT_TIERЭндпоинты API
Ticketing 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} | Поиск тикетов |
Users 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} | Поиск пользователей |
Organizations API
| Метод | Эндпоинт | Описание |
|---|---|---|
GET | /api/v2/organizations | Список организаций |
POST | /api/v2/organizations | Создание организации |
GET | /api/v2/organizations/{id}/users | Участники организации |
Satisfaction Ratings 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.created | CSAT отправлен | Обработка обратной связи |
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});
// Подключение Zendeskawait tajo.connectors.connect('zendesk', { subdomain: 'yourcompany', apiToken: process.env.ZENDESK_API_TOKEN});Синхронизация пользователей и тикетов
// Полная синхронизация пользователей и данных тикетовawait tajo.connectors.sync('zendesk', { type: 'full', resources: ['users', 'tickets', 'organizations'], since: '2023-01-01'});
// Проверка статуса синхронизации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
app.post('/webhooks/zendesk', async (req, res) => { const signature = req.get('X-Zendesk-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 варьируются в зависимости от плана:
| План | Лимит | Детали |
|---|---|---|
| Team | 200 запросов/мин | На API-токен |
| Professional | 400 запросов/мин | На API-токен |
| Enterprise | 700 запросов/мин | На API-токен |
| High Volume Add-on | 2 500 запросов/мин | На API-токен |
Дополнительные ограничения:
- Search API: 6 запросов/мин для анонимных, 100/мин для авторизованных
- Инкрементальный экспорт: 10 запросов/мин
- Batch API: 100 записей на batch-запрос
- Доставка вебхуков: автоматические повторные попытки с экспоненциальной задержкой
Заголовки ограничений скорости
Следите за заголовками X-Rate-Limit-Remaining и Retry-After для управления использованием API.
Устранение неполадок
Частые проблемы
| Проблема | Причина | Решение |
|---|---|---|
| 401 Unauthorized | Недействительный API-токен | Перегенерируйте токен в Zendesk Admin |
| 403 Forbidden | Недостаточно разрешений | Проверьте требования к роли агента или администратора |
| Пользователь не синхронизирован | Пользователь является агентом, а не конечным пользователем | Фильтруйте по роли в конфигурации синхронизации |
| Вебхук не получен | Триггер/цель не настроены | Настройте цель вебхука в Zendesk Admin |
| Поиск возвращает пустой результат | Задержка индексации | Подождите 1–2 минуты для обновления поискового индекса |
Режим отладки
Включение подробного логирования:
connectors: zendesk: debug: true log_level: verbose log_webhooks: trueПроверка подключения
tajo connectors test zendesk# ✓ API connection successful# ✓ Users readable# ✓ Tickets readable# ✓ Organizations readable# ✓ Webhooks configuredЛучшие практики
- Используйте инкрементальный экспорт, применяйте Incremental API для крупномасштабной синхронизации данных
- Фильтруйте только конечных пользователей, исключайте агентов и администраторов из синхронизации контактов Brevo
- Синхронизируйте CSAT-данные, используйте оценки удовлетворённости для сегментации здоровья клиентов
- Маппируйте организации, используйте данные организаций для B2B-маркетинговых кампаний
- Реализуйте повторные попытки вебхуков, корректно обрабатывайте временные сбои
- Используйте side-loading, включайте связанные записи в ответы API для уменьшения количества запросов
Безопасность
- Аутентификация по API Token, доступ на основе токена, привязанного к email администратора
- OAuth 2.0, делегированный доступ на основе токенов с контролем scope
- Подпись вебхуков, верификация HMAC-подписи для полезных нагрузок вебхуков
- TLS-шифрование, все API-коммуникации зашифрованы через HTTPS
- IP-разрешение, ограничение доступа к API по диапазону IP