Інтеграція 1С-Бітрікс з Usedesk

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Інтеграція 1С-Бітрікс з Usedesk
Середня
~1-2 тижні
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Інтеграція 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 днів