Ключи посетителя
Ключ — непрозрачная для чата строка вида пространство:значение, которой вы обозначаете человека у себя: user:98765, client:ACME, phone:9f2c… (хэш, а не сам номер). Чат ключ не толкует и не нормализует — он только сравнивает ключи между собой и передаёт их вашему серверу.
Вызов на странице #
Очередь window.DirectDialog можно наполнять до загрузки виджета — команды выполнятся, как только он загрузится. Порядок подключения сниппета и вашего кода значения не имеет.
window.DirectDialog = window.DirectDialog || [];
// Посетитель вошёл в личный кабинет: ПОЛНЫЙ текущий набор его ключей.
DirectDialog.push(['identify', { keys: ['user:98765', 'email:3f9c1b…'] }]);
// Посетитель вышел: снять ключи, данные и метки.
DirectDialog.push(['logout']);
Правила #
- Каждый вызов — полный набор. Ключ пропал из набора — он снят с посетителя. Не пользуйтесь
identifyкак «добавить ключ». - Формат: пространство —
a–z,0–9,_,-(до 32 символов), дальше двоеточие и значение из латиницы, цифр и. _ ~ @ + = / -(до 128 символов). Кириллицы в ключах нет — если идентификатор нелатинский, передавайте его хэш. - Регистр значим:
user:ABCиuser:abc— разные ключи. Приводите к одному виду на своей стороне. - До 200 ключей на посетителя; лишние отбрасываются.
- Звать можно часто: виджет берёт последний вызов за полсекунды и отправляет на сервер только изменения набора.
- Мобильная версия живёт в iframe, но вызов остаётся один и тот же: виджет сам пересылает состояние внутрь. Отдельного кода не нужно.
- Ошибки формата видны в консоли браузера как предупреждения
[DirectDialog] …; в ответе наPOST /chat/identityполеkeys— сколько ключей принято,dropped— сколько отброшено.
Ключ со страницы — это заявление, а не доказательство. Его можно подставить из консоли браузера. Пока ключи влияют только на подсказку оператору, это терпимо; если по ним показывается что-то чувствительное — включайте подпись.
Ещё одна команда очереди #
Тем же способом открывается чат с заранее подставленным вопросом — удобно для кнопок «Задать вопрос о доставке»:
DirectDialog.push(['ask', 'Здравствуйте! Вопрос по заказу RU-554433']);
Текст попадает в поле ввода, отправляет его посетитель сам — за человека чат не пишет.