Интеграция 1С-Битрикс с Usedesk

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Интеграция 1С-Битрикс с Usedesk
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Интеграция 1С-Битрикс с Usedesk

Usedesk — российский хелпдеск: единая очередь тикетов из email, чата, телефона, соцсетей. Интеграция с Битрикс нужна прежде всего для связи тикетов с заказами. Оператор не должен переключаться между Usedesk и Битрикс, чтобы понять, что конкретно купил клиент, написавший в поддержку.

API Usedesk

REST API Usedesk: https://api.usedesk.ru/. Авторизация — API-ключ в параметре api_token или заголовке Authorization: Token {api_token}. Основные сущности:

  • tickets — тикеты (обращения)
  • clients — клиенты
  • comments — сообщения в тикете
  • custom_fields — кастомные поля

Webhooks настраиваются в разделе «Настройки → Интеграции → API» Usedesk.

Синхронизация клиентов

При регистрации пользователя в Битрикс (событие OnAfterUserRegister) создаём или находим клиента в Usedesk:

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 на сайте с персонализацией

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, window);

Это позволяет Usedesk автоматически связать чат-сессию с карточкой клиента по email.

Обработка webhooks из Usedesk

При изменении статуса тикета 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']],
        ]);
    }
}

Отображение тикетов в личном кабинете

В ЛК Битрикс добавляем раздел «Мои обращения». Компонент запрашивает тикеты клиента через 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).

Сроки

Этап Срок
API-клиент и синхронизация клиентов 2 дня
Передача данных заказов в Usedesk 1 день
Виджет с персонализацией 0.5 дня
Обработчик webhooks 1 день
Раздел «Обращения» в ЛК 2 дня
Тестирование 1 день
Итого 7–9 дней