Когда тикеты техподдержки живут отдельно от заказов, оператору приходится прыгать между Usedesk и Битрикс, чтобы понять историю клиента?
Это замедляет ответ, увеличивает процент ошибок и снижает LTV. Мы решаем эту проблему: связываем тикеты с заказами в реальном времени, автоматически передаём данные клиента и персонализируем виджет. Результат — оператор видит всю картину в одном окне, а клиент получает быстрый ответ без лишних вопросов. Интегрируем ваш хелпдеск Usedesk с Битрикс через REST API — экономия времени оператора до 80%.
Проблемы, которые решает интеграция
- Разрыв данных: заказ есть в Битрикс, но в тикете его не видно. Клиент пишет «где мой заказ?» — оператор ищет номер вручную. Каждый третий клиент повторяет запрос, теряя до 15% LTV.
- Ручной перенос: операторы копируют email, телефон, историю из одной системы в другую — тратя до 30 секунд на каждый тикет. При 100 тикетах в день это 50 минут пустой работы. Стоимость ошибок оценивается в около $90–130 ежемесячно.
- Отсутствие контекста: без интеграции невозможно автоматически предложить скидку повторному клиенту или отправить опрос после закрытия тикета.
Как мы связываем тикеты с заказами: синхронизация и передача данных
Используем REST API Usedesk и события 1С-Битрикс (OnAfterUserRegister, OnSaleOrderSaved). Всё работает на штатных механизмах: агенты для фоновых задач, тегированное кэширование для списка тикетов. Стек: PHP 8.1+, инфоблоки v2.0, MySQL.
Синхронизация клиентов
При регистрации пользователя в Битрикс (событие OnAfterUserRegister) создаём или находим клиента в Usedesk. Сохраняем маппинг в пользовательское поле UF_USEDESK_CLIENT_ID:
AddEventHandler('main', 'OnAfterUserRegister', function(&$fields) { $email = $fields['LOGIN']; // В Битрикс логин часто = email // Ищем существующего клиента по email $response = $usedesk->get('/clients', ['email' => $email]); if (!empty($response['clients'])) { $udClientId = $response['clients'][0]['id']; } else { // Создаём нового $response = $usedesk->post('/clients', [ 'name' => $fields['NAME'] . ' ' . $fields['LAST_NAME'], 'email' => $email, 'phone' => $fields['PERSONAL_PHONE'] ?? '', 'custom_fields' => [ ['id' => USEDESK_CF_BITRIX_USER_ID, 'value' => $fields['ID']], ], ]); $udClientId = $response['client']['id']; } // Сохраняем маппинг \CUser::SetUserField([], $fields['ID'], 'UF_USEDESK_CLIENT_ID', $udClientId); }); Передача данных заказа в тикет
При создании нового заказа (событие OnSaleOrderSaved) записываем данные в кастомные поля клиента Usedesk. Это обогащает карточку клиента историей покупок:
AddEventHandler('sale', 'OnSaleOrderSaved', function(\Bitrix\Main\Event $event) { $order = $event->getParameter('ENTITY'); if ($order->isNew()) { $userId = $order->getUserId(); $udClientId = \CUser::GetByID($userId)->Fetch()['UF_USEDESK_CLIENT_ID'] ?? null; if (!$udClientId) return; // Добавляем заметку к клиенту в Usedesk $usedesk->post("/clients/{$udClientId}/comments", [ 'message' => sprintf( 'Новый заказ #%d на сумму %s руб. Статус: %s', $order->getId(), number_format($order->getPrice(), 2, ',', ' '), $order->getField('STATUS_ID') ), 'type' => 'note', ]); } }); Как связать тикеты с заказами в реальном времени?
Используем кастомные поля Usedesk. Для каждого тикета можно задать ID заказа Битрикс. Webhook при создании тикета обновляет это поле. Оператор в интерфейсе Usedesk видит ссылку на заказ и может перейти в Битрикс одним кликом. Обратный поток: при изменении статуса заказа — отправляем комментарий в тикет.
Почему стоит выбрать API-интеграцию вместо ручного импорта?
Интеграция через API обрабатывает запросы в 10 раз быстрее, чем ручной импорт данных. Ошибки в данных сводятся к нулю, тогда как при ручном переносе их уровень достигает 5%. Для магазина с тысячью заказов в день ручной импорт занимает до 2 часов работы оператора — против 5 минут автоматической синхронизации.
Виджет Usedesk и личный кабинет
Персонализация виджета
Usedesk предоставляет JS-виджет. Для персонализации при авторизованном пользователе передаём его данные:
(function(d, w, c) { w.usedeskSettings = { company_id: "<?= USEDESK_COMPANY_ID ?>", <?php if ($USER->IsAuthorized()): ?> user: { name: "<?= htmlspecialchars($USER->GetFullName()) ?>", email: "<?= htmlspecialchars($USER->GetEmail()) ?>", fields: { custom_id: "<?= $USER->GetID() ?>" } }, <?php endif; ?> }; var s = d.createElement("script"); s.type = "text/javascript"; s.async = true; s.src = "https://secure.usedesk.ru/widget.js"; d.getElementsByTagName("head")[0].appendChild(s); })(document, w, c); Это позволяет Usedesk автоматически связать чат-сессию с карточкой клиента по email.
Отображение тикетов в личном кабинете
В ЛК Битрикс добавляем раздел «Мои обращения». Компонент запрашивает тикеты клиента через Usedesk API по client_id:
$udClientId = $USER->GetParam('UF_USEDESK_CLIENT_ID'); $tickets = $usedesk->get('/tickets', [ 'client_id' => $udClientId, 'per_page' => 20, 'page' => (int)$_GET['page'] ?: 1, ]); Список тикетов кэшируется на 60 секунд (\Bitrix\Main\Data\Cache).
Обработка webhooks из Usedesk
Пример обработчика webhook
При изменении статуса тикета Usedesk отправляет webhook на наш обработчик. Типичное применение: при закрытии тикета (статус `resolved`) отправить клиенту email из Битрикс с предложением оставить отзыв.// /api/usedesk-webhook.php $payload = json_decode(file_get_contents('php://input'), true); // Верификация подписи $sig = hash_hmac('sha256', file_get_contents('php://input'), USEDESK_WEBHOOK_SECRET); if (!hash_equals($sig, $_SERVER['HTTP_X_USEDESK_SIGNATURE'] ?? '')) { http_response_code(403); exit; } if ($payload['event'] === 'ticket.resolved') { $email = $payload['ticket']['client']['email'] ?? ''; if ($email) { \Bitrix\Main\Mail\Event::send([ 'EVENT_NAME' => 'SUPPORT_RESOLVED_REVIEW_REQUEST', 'LID' => SITE_ID, 'C_FIELDS' => ['EMAIL' => $email, 'TICKET_ID' => $payload['ticket']['id']], ]); } } Сравнение: интеграция через API vs ручной импорт
| Параметр | Интеграция через API | Ручной импорт/экспорт |
|---|---|---|
| Скорость обновления | Реальное время | Раз в сутки |
| Ошибки в данных | 0% (автоматика) | до 5% (человеческий фактор) |
| Нагрузка на оператора | Минимальная | 10–15 минут в день |
| Масштабирование | Не ограничено | Требует найма персонала |
Что входит в работу
- Настройка API-клиента — создание библиотеки для работы с Usedesk на PHP (Guzzle или cURL).
- Синхронизация клиентов — маппинг пользователей Битрикс в Usedesk через события регистрации.
- Передача заказов — автоматическое обогащение карточки клиента историей покупок.
- Виджет с персонализацией — передача имени, email и ID пользователя в виджет.
- Обработчик webhook — приём событий от Usedesk (статусы тикетов, новые сообщения).
- Личный кабинет — компонент для вывода тикетов на сайте Битрикс.
- Документация и обучение — описание архитектуры, инструкция для операторов.
Процесс работы и сроки
Мы работаем итерациями: аналитика → проектирование → реализация → тестирование → деплой.
| Этап | Длительность |
|---|---|
| Анализ и сбор требований | 1 день |
| Проектирование схемы данных | 1 день |
| Разработка (API-клиент, события, виджет, webhook, личный кабинет) | 4–5 дней |
| Тестирование на тестовом контуре | 1 день |
| Деплой и мониторинг | 0.5 дня |
| Итого | 7–9 дней |
Ориентировочный срок — от 7 до 9 рабочих дней. Стоимость рассчитывается индивидуально под ваш проект. Мы гарантируем стабильную работу интеграции и предоставляем постпроектное сопровождение: исправление ошибок, доработки, консультации.
Закажите интеграцию сейчас — свяжитесь с нами для консультации. Получите персональный расчёт сроков и стоимости.







