Інтеграція 1С-Бітрікс з Chatra
Chatra — онлайн-чат із фокусом на простоту та швидкість розгортання. З нетривіального: офлайн-форма замість закритого віджета, автоповідомлення за поведінкою користувача, перегляд тексту, що набирається, у реальному часі. Інтеграція з Бітрікс — це передусім ідентифікація користувача та передача даних про його сесію в операторський інтерфейс.
Установка коду Chatra
<!-- У шаблоні Бітрікс перед </body> -->
<script>
(function(d, w, c) {
w.ChatraID = 'YOUR_CHATRA_ID';
var s = d.createElement('script');
w[c] = w[c] || function() { (w[c].q = w[c].q || []).push(arguments); };
s.async = true;
s.src = 'https://call.chatra.io/chatra.js';
if (d.head) d.head.appendChild(s);
}(document, window, 'Chatra'));
</script>
Ідентифікація авторизованого користувача
Chatra підтримує попередню ідентифікацію через об'єкт ChatraSetup:
<?php if ($USER->IsAuthorized()):
$userId = $USER->GetID();
$userEmail = $USER->GetEmail();
$userName = $USER->GetFullName();
?>
<script>
window.ChatraSetup = {
clientId: 'bitrix-user-<?= $userId ?>', // стабільний ID для історії чатів
};
Chatra('setIntegrationData', {
name: <?= json_encode($userName) ?>,
email: <?= json_encode($userEmail) ?>,
phone: <?= json_encode(getUserPhone($userId)) ?>,
'ID користувача': <?= $userId ?>,
'Замовлень': <?= getUserOrdersCount($userId) ?>,
'Сума покупок': <?= getUserTotalSpent($userId) ?> + ' грн.',
});
</script>
<?php endif; ?>
clientId — ключовий параметр: з ним історія переписки зберігається при повторних візитах одного користувача. Без нього кожен сеанс — анонімний новий діалог.
Автоматичні повідомлення за поведінкою
Chatra дозволяє налаштовувати автоповідомлення прямо в інтерфейсі — за часом на сторінці, за розділом, за кількістю відвідувань. Для Бітрікс-специфічних тригерів (наприклад, «користувач дивиться сторінку оформлення більше 60 секунд») потрібен JavaScript:
// Якщо користувач завис на checkout довше 60 секунд
<?php if (strpos($_SERVER['REQUEST_URI'], 'order') !== false): ?>
<script>
setTimeout(function() {
Chatra('sendAutoMessage', 'Потрібна допомога з оформленням замовлення? Готовий відповісти на запитання.');
}, 60000);
</script>
<?php endif; ?>
sendAutoMessage доступне лише в тарифі Chatra Full Suite.
Передача даних кошика
<?php
\Bitrix\Main\Loader::includeModule('sale');
$basket = \Bitrix\Sale\Basket::loadItemsForFUser(\Bitrix\Sale\Fuser::getId(), SITE_ID);
$basketTotal = $basket->getPrice();
$basketCount = count($basket);
?>
<script>
Chatra('setIntegrationData', {
'Кошик: сума': <?= $basketTotal ?> + ' грн.',
'Кошик: товарів': <?= $basketCount ?>,
});
</script>
Webhook Chatra: створення лідів у Бітрікс
Chatra надсилає Webhook при закритті діалогу (тариф Full Suite). Налаштування: Dashboard → Settings → Integrations → Webhooks.
// /local/api/chatra-webhook.php
$payload = json_decode(file_get_contents('php://input'), true);
if (isset($payload['trigger']) && $payload['trigger'] === 'chat.done') {
$chat = $payload['chat'];
$visitor = $payload['visitor'];
$transcript = '';
foreach ($chat['messages'] as $msg) {
$transcript .= "[{$msg['authorName']}]: {$msg['text']}\n";
}
// Створюємо задачу або лід у Бітрікс24
$leadTitle = 'Chatra: ' . ($visitor['name'] ?? $visitor['email'] ?? 'Гість');
createBitrix24Lead([
'TITLE' => $leadTitle,
'NAME' => $visitor['name'] ?? '',
'EMAIL' => $visitor['email'] ?? '',
'PHONE' => $visitor['phone'] ?? '',
'COMMENTS' => $transcript,
'SOURCE_DESCRIPTION' => 'Chatra #' . $chat['id'],
]);
}
http_response_code(200);
Відключення віджета на службових сторінках
У Бітрікс є сторінки, де чат небажаний: адміністративна частина /bitrix/admin/, сторінка оплати з редиректом, сторінка помилки. Обмежте підключення в шаблоні:
<?php
$excludePaths = ['/bitrix/', '/local/ajax/', '/api/'];
$showChatra = true;
foreach ($excludePaths as $path) {
if (strpos($_SERVER['REQUEST_URI'], $path) === 0) {
$showChatra = false;
break;
}
}
if ($showChatra):
?>
<!-- код Chatra тут -->
<?php endif; ?>
Склад робіт: установка та ідентифікація користувача — 4–8 годин. Дані кошика та контекст сторінки — ще півдня. Webhook і інтеграція з CRM — 1 день. Загальний термін — 2–3 робочі дні з тестуванням.







