Усунення несправностей і контрольний список
Найчастіші проблеми вбудовування reactive.chat: немає кнопки чи з’єднання, джерело відхилено, особу не підтверджено, вебхуки й дані клієнтів не надходять — причини, перевірка та список перед запуском.
Інструменти
- Інструменти розробника → Мережа:
loader.js,core.<hash>.js, з’єднання WebSocket (вкладка «Повідомлення» або «Кадри» показуєinit,init_ok,error) або запити резервного каналу HTTP (h/auf,…/sse,…/tx). - Увімкнути діагностику:
data-rc-debug="true"у тегу завантажувача абоlocalStorage.setItem('rc_debug','1')у консолі, потім перезавантажити. - Консоль:
ReactiveChat('getSession'),ReactiveChat('getEndpoint'),ReactiveChat('isOpen'),ReactiveChat.version.
Кнопки чату не видно
- Ключ сайту відсутній або недійсний. Тоді завантажувач мовчки зупиняється. Перевірте
data-rc-site-key(8–64 символи зA–Z a–z 0–9 _ -) на виконаному тегу: менеджери тегів і допоміжні засоби фреймворків іноді відкидають атрибути. type="module"у тегу скрипту: тоді завантажувач не знаходить свій тег. Вбудовуйте його як класичний скрипт.data-rc-hide-launcher="true"або в обліковому записі задано «Лише через власні посилання (без значка чату)».- У фрагменті немає кольору бренду: без дійсного кольору
data-rc-brandкнопка з’являється лише після встановлення з’єднання. Скопіюйте фрагмент з облікового запису знову. - Проєкт призупинено або ключ сайту невідомий: сервер відповідає
unknown_site_key(закриття 4002); у цій вкладці віджет не повторює спробу десять хвилин. - Ядро не завантажується: консоль показує
[reactive.chat] core.js …. Часто адресу блокуєscript-srcабо блокувальник реклами — див. Власний домен.
Кнопка є, але повідомлення не надходять
- Власне розміщення
loader.jsбезdata-rc-ws-url: віджет шукає сервер чату на вашому домені. На вкладці мережі видно марні спроби підключення доwss://ws.<your-domain>/rc_wss/. Рішення:data-rc-ws-url="wss://ws.reactive.chat/rc_wss/". origin_denied, закриття 1008: домену сторінки немає в Дозволених джерелах. Введіть домен сайту, а не піддомен чату.- CSP блокує: у консолі є повідомлення CSP про
wss://…абоhttps://…/rc_wss/h/auf. Додайте обидва варіанти доconnect-src. - Корпоративна мережа без WebSocket: після двох невдалих спроб віджет переходить на резервний канал HTTP. Якщо він теж не працює, перевірте проксі, що переривають запити раніше ніж за 30 секунд або буферизують відповіді (Транспорт).
- Блокування захистом від зловживань (закриття 1008
blocked): типово за власним проксі без дійсного ключа проксі, бо тоді всі відвідувачі мають одну адресу. - Повідомлення задовге: віджет не надсилає тексти понад ліміт тарифу (1000 або 4000 символів).
Користувач, який увійшов, вважається анонімним
Кадр error містить auth_failed із detail.reason:
- no_hash — у
identifyнемаєuserHash. - no_secret — у проєкті не налаштовано секрет.
- bad_exp —
expу мілісекундах замість секунд або не ціле число. - expired — сторінка довго відкрита або неправильний годинник сервера; обчислюйте хеш заново під час завантаження сторінки.
- exp_too_far — більш як на 24 години вперед.
- bad_hash — секрет, порядок (
userId + "." + exp) або набір символів не збігаються; секрет — це ключ як рядок, а не декодовані байти. Електронну адресу потрібно підписати саме так, як ви її передаєте.
Докладно: Ідентифікація відвідувачів.
Дані клієнтів не надходять
- Асистент просить користувача ввійти, хоча той уже ввійшов:
expвідсутній або прострочений — безexpданих клієнтів немає. - Перевірити з’єднання в обліковому записі називає причину (
http_401,zeitueberschreitung,umleitung,adresse_privat…). Підписаний рядок —X-RC-Zeit + "." + raw body; перевіряйте отримані байти, а не повторно закодований JSON. - У відповіді асистента бракує поля: воно не ввімкнене в обліковому записі або входить до переліку полів, які ніколи не приймаються.
Докладно: Кінцева точка даних клієнтів.
Вебхуки не надходять
- Чи ввімкнено інтеграцію й вибрано подію (немає вибору = усі)? Після ввімкнення зачекайте до 15 секунд.
- Кінцева точка відповідає довше ніж 10 секунд або повертає перенаправлення.
- Кінцева точка одного разу відповіла 410 — це деактивує інтеграцію. Увімкніть її знову.
- Підпис не збігається: обчислюйте за сирим тілом і
X-RC-Timestamp + "." + body, зважайте на префіксsha256=. - У
dataбракує вмісту: поля кожної події наведено в розділі Вебхуки; невибрана подія взагалі не надходить.
Серверний API
- 401
auth_failed: ключ відкликано, введено неправильно або його автор більше не адміністратор. - 403
insufficient_scope: прав недостатньо;required_scopeуказує потрібні. - 429: перевищено 120 запитів за хвилину; дотримуйтеся
Retry-After. - 415/413: немає
Content-Type: application/jsonабо тіло перевищує 64 КіБ.
Текст конфіденційності не з’являється
- Завантажувач відсутній на сторінці або заблокований платформою згоди: вбудуйте
datenschutz.jsбезпосередньо. - Сайт не додано як домен у проєкті або проєкт призупинено.
data-rc-privacy-state="error"на елементі вказує на невдалий запит.
Контрольний список перед запуском
- Усі домени сайту додано до Дозволених джерел.
- Незмінений фрагмент з облікового запису є на всіх сторінках, де має бути чат, зокрема на сторінці конфіденційності.
- CSP:
script-srcдля місця доставки,connect-srcізwss://таhttps://,img-srcдля зображень. - Згода: перевірено
data-rc-consentабо платформу згоди (TCF v2 / consented.eu), протестовано зі згодою та без неї. - Політику конфіденційності доповнено (
<div data-rc-privacy>або текстовий блок). - Ідентифікація:
userHashізexpобчислено на сервері, секрет лише в серверному середовищі,init_ok.identity.verifiedдорівнюєtrue. - Області з конфіденційним текстом позначено
data-rc-private. - Із власним доменом: усі п’ять кроків перевірки «OK», ключ проксі лише в конфігурації проксі,
/rc_wss/h/не потрапляє в журнал доступу. - Вебхуки: перевірено підпис і час, дублікати визначаються через
X-RC-Delivery, швидка відповідь 2xx. - Резервний канал HTTP один раз перевірено з
data-rc-transport="http". - Перевірено мобільний вигляд (нижче 480 пікселів чат відкривається на весь екран) та керування клавіатурою.
Оновлено: