Верификация клиентов
По умолчанию VivoChat считает посетителя анонимным.
Если на вашем сайте есть авторизация, вы можете связать диалог с клиентом из своей системы:
- восстановить историю переписки;
- показать оператору имя, телефон и email клиента;
- объединять диалоги между устройствами и сессиями.
Как это работает
Заголовок раздела «Как это работает»1. Сайт передаёт токен пользователя
Заголовок раздела «1. Сайт передаёт токен пользователя»После авторизации пользователя вызовите:
vivo_api.setUserToken(USER_TOKEN);
vivo_api.run({ withIcon: true });setUserToken() необходимо вызывать до run().
2. VivoChat запрашивает верификацию клиента
Заголовок раздела «2. VivoChat запрашивает верификацию клиента»При первом открытии чата VivoChat отправляет POST-запрос с типом client_check_token на URL верификации клиента.
URL настраивается в интерфейсе:
Настройки → Диалоги → Адрес верификации клиента
Пример запроса:
{ "type": "client_check_token", "userToken": "USER_TOKEN"}3. Ваш сервер возвращает данные клиента
Заголовок раздела «3. Ваш сервер возвращает данные клиента»Сервер должен:
- проверить токен;
- найти клиента;
- вернуть
clientId; - при необходимости вернуть контактные данные клиента.
Пример ответа:
{ "result": "ok", "clientId": "customer_123", "contactInfo": { "name": "John Smith", "phone": "+14084987855", }}4. VivoChat связывает клиента с диалогами
Заголовок раздела «4. VivoChat связывает клиента с диалогами»После получения 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()
Заголовок раздела «setContactInfo()»setContactInfo() позволяет передать контактные данные клиента напрямую из браузера без верификации:
vivo_api.setContactInfo({ name: 'John Smith',});
/* ... */
vivo_api.run();Метод:
- не верифицирует клиента;
- не восстанавливает историю диалогов;
- не связывает диалоги между устройствами или сессиями.
setContactInfo() отображает данные клиента только в текущем диалоге в разделе “Контакты”.
client_check_token
Заголовок раздела «client_check_token»Используется для:
- идентификации клиента;
- восстановления истории диалогов;
- первоначального получения данных клиента.
contactInfo из client_check_token отображается в основной карточке клиента у оператора.
Без clientId история диалогов не восстанавливается.
chat_accepted
Заголовок раздела «chat_accepted»Событие 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).