Перейти к содержимому
  • Светлая
  • Тёмная
  • Авто

Верификация клиентов

По умолчанию VivoChat считает посетителя анонимным.

Если на вашем сайте есть авторизация, вы можете связать диалог с клиентом из своей системы:

  • восстановить историю переписки;
  • показать оператору имя, телефон и email клиента;
  • объединять диалоги между устройствами и сессиями.

После авторизации пользователя вызовите:

vivo_api.setUserToken(USER_TOKEN);
vivo_api.run({ withIcon: true });

setUserToken() необходимо вызывать до run().

При первом открытии чата VivoChat отправляет POST-запрос с типом client_check_token на URL верификации клиента.

URL настраивается в интерфейсе:

Настройки → Диалоги → Адрес верификации клиента

Пример запроса:

{
"type": "client_check_token",
"userToken": "USER_TOKEN"
}

Сервер должен:

  • проверить токен;
  • найти клиента;
  • вернуть clientId;
  • при необходимости вернуть контактные данные клиента.

Пример ответа:

{
"result": "ok",
"clientId": "customer_123",
"contactInfo": {
"name": "John Smith",
"phone": "+14084987855",
"email": "[email protected]"
}
}

После получения clientId VivoChat:

  • связывает диалог с клиентом;
  • восстанавливает историю переписки;
  • показывает оператору контактные данные клиента.

Если clientId отсутствует, клиент считается анонимным.

Передача только setUserToken() недостаточна для восстановления истории диалогов.

История переписки восстанавливается только после успешного ответа на client_check_token с корректным clientId.

Рекомендуем использовать сложно-угадываемый идентификатор для clientId для исключения возможности спуфинга.

При выходе пользователя из аккаунта рекомендуется очищать токен:

vivo_api.setUserToken(null);

Если не очистить токен, следующий пользователь за тем же браузером может получить доступ к предыдущей сессии чата.

Разница между client_check_token, setContactInfo и chat_accepted

Заголовок раздела «Разница между client_check_token, setContactInfo и chat_accepted»

Эти механизмы решают разные задачи, но все могут передать контактные данные.

Механизм Для чего используется
setContactInfo() Передаёт контактные данные клиента без верификации
client_check_token Верифицирует клиента и отображает контакты клиента и историю диалогов
chat_accepted Актуализирует контакты клиента после принятия диалога оператором, передача дополнительных данных о клиенте

setContactInfo() позволяет передать контактные данные клиента напрямую из браузера без верификации:

vivo_api.setContactInfo({
name: 'John Smith',
});
/* ... */
vivo_api.run();

Метод:

  • не верифицирует клиента;
  • не восстанавливает историю диалогов;
  • не связывает диалоги между устройствами или сессиями.

setContactInfo() отображает данные клиента только в текущем диалоге в разделе “Контакты”.

Используется для:

  • идентификации клиента;
  • восстановления истории диалогов;
  • первоначального получения данных клиента.

contactInfo из client_check_token отображается в основной карточке клиента у оператора.

Без clientId история диалогов не восстанавливается.

Событие chat_accepted вызывается после принятия диалога оператором.

Используется для:

  • обновления данных клиента;
  • передачи дополнительных данных оператору;
  • актуализации информации из CRM или вашей системы.

В ответе можно вернуть:

  • contactInfo — обновляет основную карточку клиента;
  • customData — отображается во вкладке «Дополнительно».

Пример:

{
"result": "ok",
"contactInfo": {
"name": "John Smith",
"phone": "+14084987855"
},
"customData": [
{
"title": "Plan",
"content": "Premium"
}
]
}
vivo_api.setUserToken(USER_TOKEN);
  • VivoChat вызывает client_check_token;
  • сервер возвращает clientId;
  • VivoChat восстанавливает историю диалогов.
  • сервер через chat_accepted обновляет актуальные данные клиента;
  • дополнительные данные отображаются во вкладке «Дополнительно».
  • очистить токен: vivo_api.setUserToken(null).