Как передать имя и email пользователя в онлайн-чат
Как передать данные пользователя в онлайн-чат: вызов identify, пример кода, готовые плагины для WordPress и 1С-Битрикс, типичные ошибки и вопросы безопасности.
Если у сайта есть личный кабинет, ваш оператор не должен начинать разговор с вопроса «Как вас зовут и на какую почту оформлен аккаунт?». Пользователь уже вошёл — сайт знает, кто он. Задача в том, чтобы передать данные пользователя в онлайн-чат: имя, email, идентификатор, а при желании тариф или номер последнего заказа. Ниже разберём, зачем это нужно, какие данные передавать, как выглядит код и о чём стоит подумать с точки зрения безопасности.
Что даёт идентификация посетителей
Анонимный посетитель — это просто «Гость» с номером. Идентифицированный — человек с историей. Разница заметна сразу:
- Не нужно переспрашивать. Оператор видит имя и почту рядом с перепиской и сразу переходит к сути.
- Единая история между устройствами. Если человек написал с ноутбука, а продолжил с телефона, при передаче одного и того же идентификатора это будет один диалог, а не два разных «гостя».
- Контекст для ответа. Тариф, статус подписки, город доставки — всё, что вы передадите, помогает ответить точнее без переключения в админку.
- Персональное обращение. Ответ «Анна, проверил ваш заказ» воспринимается совсем иначе, чем безличное «Уточните данные».
Какие данные передавать, а какие нет
Правило простое: передавайте то, что помогает оператору ответить, и ничего сверх этого.
Стоит передавать:
- внутренний идентификатор пользователя;
- имя, под которым человек зарегистрирован;
- email — чтобы оператор мог найти аккаунт или отправить письмо;
- аватар, если он есть;
- рабочие атрибуты: тариф, дату регистрации, номер последнего заказа, роль в компании.
Не стоит передавать:
- пароли, токены доступа, ключи API — ни в каком виде;
- платёжные данные, номера карт;
- паспортные и другие чувствительные данные;
- всё, что пользователь не ожидает увидеть у сотрудника поддержки.
Помните, что всё переданное отображается оператору. Если вы не готовы показать поле сотруднику поддержки, не передавайте его.
Как работает вызов identify: пример кода
В ChatDeck данные передаются вызовом chatdeck('identify', …). Обязательное по смыслу поле — userId: по нему связываются сессии одного человека. Остальные поля необязательны, а любые дополнительные ключи оператор увидит рядом с чатом.
chatdeck('identify', {
userId: '42', // ваш внутренний идентификатор
name: 'Анна Смирнова',
email: 'anna@example.ru',
avatar: 'https://…/anna.jpg',// показывается в списке диалогов
plan: 'pro', // любое дополнительное поле видно оператору
})Вызов делают на страницах, где пользователь авторизован, — обычно в общем шаблоне личного кабинета. Значения подставляет ваш сервер или фронтенд из данных текущей сессии.
Если вызов срабатывает раньше загрузки виджета
Код виджета загружается асинхронно, поэтому identify может выполниться до того, как скрипт чата успел загрузиться. Чтобы вызов не потерялся, перед кодом установки ставят короткую заглушку-очередь: она запоминает все вызовы и передаёт их виджету, как только он загрузится.
<script>window.chatdeck=window.chatdeck||function(){(window.chatdeck.q=window.chatdeck.q||[]).push(arguments);return false}</script>
<script src="https://chatdeck.ru/widget.js" data-chatdeck-key="pk_…" async></script>
<script>
chatdeck('identify', { userId: '42', name: 'Анна Смирнова', email: 'anna@example.ru' })
</script>Одностраничные приложения
В SPA на React, Vue или Next.js пользователь может войти без перезагрузки страницы. Вызывайте identify в момент, когда приложение получило данные профиля, — например, после успешного входа. Повторный вызов дополняет ранее переданные поля, поэтому при смене тарифа достаточно вызвать его снова с новым значением.
Готовые решения в WordPress и 1С-Битрикс
Если сайт работает на популярной CMS, писать код не нужно.
- WordPress. Плагин ChatDeck добавляет виджет на сайт по ключу из настроек и автоматически передаёт оператору имя и email вошедших пользователей. Инструкция — на странице установки в WordPress, подробный разбор — в статье онлайн-чат для WordPress.
- 1С-Битрикс. Готовый модуль делает то же самое: ключ указывается в настройках модуля, данные авторизованных пользователей передаются в чат сами. Смотрите инструкцию для 1С-Битрикс.
На других платформах — конструкторах сайтов, интернет-магазинах, самописных сайтах — identify добавляют в шаблон вручную по примеру выше.
Проверка и типичные ошибки
После внедрения проверьте работу по короткому сценарию:
- Войдите на сайт под тестовым пользователем.
- Откройте чат и отправьте сообщение.
- Во входящих оператора убедитесь, что вместо «Гостя» отображаются имя, почта и дополнительные поля.
- Откройте сайт на другом устройстве под тем же пользователем и проверьте, что переписка продолжилась в том же диалоге.
- Выйдите из аккаунта и убедитесь, что
identifyбольше не вызывается.
Частые ошибки:
- В `userId` попадает пустое значение или «undefined». Тогда разные люди могут оказаться в одном диалоге. Вызывайте
identifyтолько при наличии реального идентификатора. - Вызов до загрузки виджета без заглушки. Данные теряются, оператор видит анонимного посетителя.
- Передача данных на публичных страницах для всех. Например, в шаблон по ошибке подставляются данные администратора, который его сохранял. Проверяйте под разными учётными записями.
- Лишние поля. Объект профиля целиком, со служебными флагами и токенами, отправляется в чат. Передавайте только нужные ключи.
Безопасность и персональные данные
Данные в identify передаются из браузера пользователя. Это значит, что технически подкованный человек может вызвать функцию с любыми значениями. Отсюда несколько практических выводов:
- Не доверяйте переданным данным как подтверждению личности. Перед тем как сообщить что-то конфиденциальное или изменить заказ, оператор должен проверить пользователя так же, как при звонке.
- Используйте трудноугадываемый идентификатор. Поскольку
userIdсвязывает историю переписки, порядковый номер вроде42лучше заменить на случайный UUID или другое значение, которое нельзя подобрать перебором. - Не передавайте секреты. Пароли, токены сессии и ключи никогда не должны попадать в чат.
Имя и email — персональные данные, поэтому их передача в сервис онлайн-чата должна быть отражена в вашей политике обработки персональных данных, а сам сервис — обеспечивать надлежащее хранение. ChatDeck хранит данные в российских дата-центрах. Общие требования мы разобрали в статье онлайн-чат и 152-ФЗ; для вашего конкретного случая лучше проконсультироваться с юристом.
Частые вопросы
Нужен ли программист для передачи данных?
На WordPress и 1С-Битрикс — нет: готовые плагин и модуль передают имя и email вошедших пользователей сами. На других платформах нужен человек, который может добавить несколько строк в шаблон личного кабинета и подставить туда данные текущего пользователя.
Можно ли передать номер заказа или тариф?
Да. Любое дополнительное поле в объекте identify, например plan или lastOrder, оператор увидит рядом с перепиской. Называйте поля понятно, чтобы сотрудник сразу понимал, что это.
Что будет, если пользователь вышел из аккаунта?
Если на страницах для гостей identify не вызывается, после перезагрузки страницы виджет работает с посетителем как с анонимным. Переписка, привязанная к идентификатору пользователя, снова станет доступна, когда он войдёт в аккаунт.
Нужно ли согласие на передачу данных в чат?
Передача персональных данных стороннему сервису должна быть предусмотрена вашей политикой обработки данных и основанием для обработки. Конкретные формулировки и необходимость отдельного согласия зависят от вашего сценария — уточните это у юриста.
Итог
Идентификация посетителей — небольшая доработка, которая заметно ускоряет ответы и избавляет клиентов от лишних вопросов. В ChatDeck это один вызов identify или готовый плагин для WordPress и 1С-Битрикс. Создайте рабочее пространство и подключите передачу данных по инструкции для WordPress. Как устроен вызов identify и где оператор видит переданные данные — в уроке «Передайте данные о посетителе».