Коннектор Freshdesk
Подключите Freshdesk к Brevo через Tajo для объединения данных службы поддержки и маркетинга. Синхронизируйте тикеты поддержки, профили контактов и оценки удовлетворённости для таргетированных коммуникаций на основе обращений в поддержку.
Обзор
| Свойство | Значение |
|---|---|
| Платформа | Freshdesk |
| Категория | Support |
| Сложность настройки | Простая |
| Официальная интеграция | Нет |
| Синхронизируемые данные | Тикеты, контакты, агенты, компании |
| Доступных скиллов | 6 |
Возможности
- Синхронизация контактов, двунаправленная синхронизация контактов Freshdesk со списками контактов Brevo
- Отслеживание событий тикетов, пересылка событий создания, обновления и закрытия тикетов в Brevo
- Синхронизация CSAT, синхронизация оценок удовлетворённости клиентов как атрибутов контактов Brevo
- Синхронизация компаний, маппинг компаний Freshdesk для сегментации контактов Brevo
- Данные агентов, трекинг назначений агентов для внутренней автоматизации рабочих процессов
- Пользовательские поля, маппинг пользовательских полей тикетов и контактов Freshdesk в атрибуты Brevo
Предварительные требования
Прежде чем начать, убедитесь, что у вас есть:
- Аккаунт Freshdesk с правами администратора
- API-ключ Freshdesk (в Profile Settings)
- Домен Freshdesk (например,
yourcompany.freshdesk.com) - Аккаунт Brevo с доступом к API
- Аккаунт Tajo с API-учётными данными
Аутентификация
Аутентификация по API Key
Freshdesk использует аутентификацию по API-ключу через HTTP Basic Auth. API-ключ используется как имя пользователя с любой строкой (обычно X) в качестве пароля.
curl -u "YOUR_API_KEY:X" \ https://yourcompany.freshdesk.com/api/v2/ticketsИли с использованием кодировки Base64 в заголовке Authorization:
curl https://yourcompany.freshdesk.com/api/v2/tickets \ -H "Authorization: Basic BASE64_ENCODED_API_KEY:X" \ -H "Content-Type: application/json"Как найти API Key
- Войдите в аккаунт Freshdesk
- Нажмите на аватар профиля в правом верхнем углу
- Перейдите в Profile Settings
- Ваш API Key отображается в правой части страницы
Конфигурация
Базовая настройка
connectors: freshdesk: enabled: true domain: "yourcompany.freshdesk.com" api_key: "your-freshdesk-api-key"
# Параметры синхронизации данных sync: contacts: true tickets: true companies: true satisfaction_ratings: true
# Назначение листов Brevo 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
# Метрики поддержки total_tickets: TICKET_COUNT open_tickets: OPEN_TICKETS avg_csat: CSAT_SCORE last_ticket_date: LAST_SUPPORT_DATE
# Пользовательские поля 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});
// Подключение аккаунта Freshdeskawait tajo.connectors.connect('freshdesk', { domain: 'yourcompany.freshdesk.com', apiKey: process.env.FRESHDESK_API_KEY});Синхронизация контактов в Brevo
// Получение контактов Freshdesk и синхронизация с Brevoconst 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();// Каждый контакт:// {// "id": 12345,// "name": "Jane Kim",// "email": "[email protected]",// "phone": "+15551234567",// "company_id": 678,// "job_title": "Product Manager",// "created_at": "2024-01-15T10:30:00Z"// }Трекинг событий тикетов
// Настройка вебхука Freshdesk для пересылки событий тикетов// Настройте в Freshdesk Admin > Automations > Webhook
// Обработчик вебхука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');});Поиск тикетов по клиенту
// Поиск всех тикетов конкретного клиента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();Ограничения скорости
| План | Лимит | Детали |
|---|---|---|
| Sprout | 50 запросов/мин | Бесплатный план |
| Blossom | 200 запросов/мин | Стартовый план |
| Garden | 400 запросов/мин | Базовый план |
| Estate | 700 запросов/мин | Профессиональный план |
| Forest | 1 000 запросов/мин | Корпоративный план |
Дополнительные ограничения:
| Ресурс | Лимит |
|---|---|
| Список эндпоинтов | 30 страниц на запрос |
| На страницу | Максимум 100 записей |
| Search API | 2 запроса/сек |
| Пакетные операции | 10 записей/запрос |
Заголовки ограничений скорости
Freshdesk возвращает информацию об ограничениях скорости в заголовках ответа. Следите за X-RateLimit-Remaining и реализуйте задержку при приближении к лимитам.
Устранение неполадок
| Проблема | Причина | Решение |
|---|---|---|
401 Unauthorized | Недействительный API-ключ | Проверьте API-ключ в Freshdesk Profile Settings |
403 Forbidden | Недостаточно разрешений | Убедитесь, что API-ключ принадлежит аккаунту администратора |
| Контакты не синхронизируются | Отсутствует поле email | Контакты Freshdesk требуют email-адрес |
| Тикеты не появляются | Неверный домен | Проверьте правильность URL домена Freshdesk |
| Поиск возвращает пустой результат | Ошибка синтаксиса запроса | Используйте синтаксис поисковых запросов Freshdesk с двойными кавычками |
429 Too Many Requests | Превышен лимит скорости | Реализуйте ограничение скорости в соответствии с уровнем плана |
| Отсутствуют пользовательские поля | Поле не включено | Убедитесь, что пользовательские поля включены в администраторской панели Freshdesk |
Лучшие практики
- Используйте вебхуки для синхронизации в реальном времени, настройте Freshdesk Automations для отправки вебхуков при событиях тикетов
- Синхронизируйте CSAT-оценки, отслеживайте оценки удовлетворённости как атрибуты Brevo для сегментации
- Маппируйте статусы тикетов в списки, автоматически перемещайте контакты между списками Brevo на основе статуса тикета
- Отслеживайте метрики поддержки, синхронизируйте количество тикетов, среднее время ответа и скорость закрытия на контакт
- Используйте Search API экономно, Search API имеет более строгие лимиты; кешируйте результаты при необходимости
- Пагинируйте крупные экспорты, используйте пагинацию с параметрами
pageиper_pageдля начальной синхронизации
Безопасность
- Аутентификация по API Key, HTTP Basic Auth с API-ключом
- Только HTTPS, все API-коммуникации требуют TLS-шифрования
- IP-разрешение, доступно на планах Estate и Forest
- Доступ на основе ролей, разрешения API-ключа привязаны к роли агента
- SOC 2 Type II, Freshdesk сертифицирован по SOC 2 Type II
- Соответствие GDPR, поддержка экспорта и удаления данных