Атрибуты профиля и теги: в чём разница и как это работает

В профиле клиента есть два способа что-то о нём запомнить — атрибуты и теги. На первый взгляд разница не очевидна: и то, и другое можно проставить в сценарии, и то, и другое видно оператору в чат-центре, и по тому, и по другому можно собрать сегмент в аудитории. Но использовать их стоит по-разному, и если перепутать — сценарии становятся сложнее, чем должны быть. Разберёмся, что есть что.

Атрибут: ключ и значение

Атрибут — это пара «ключ + значение». В системе он хранится как attributes.profile_название — то есть у каждого атрибута есть техническое имя, по которому к нему обращаются в сценарии.
Доступные типы значений атрибутов:

  • String
  • Text
  • Number
  • Datetime
  • Select
  • Multiselect
  • Boolean
  • UUID

У любого проекта по умолчанию уже есть несколько системных атрибутов — имя, номер телефона, почта, внешний id. Они создаются автоматически. Все остальные атрибуты сначала нужно завести руками — в настройках проекта, в разделе «Атрибуты клиента», — и только после этого их можно заполнять значениями.

Страница атрибутов клиента

Тег: просто ярлык

С тегом всё проще — заводить его заранее не нужно. Присвоить профилю можно любой тег в любой момент, даже если такого тега раньше в проекте вообще не было. У тега нет значения, только его наличие или отсутствие в профиле.

Где проставляются теги и атрибуты

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

Когда что использовать

На этом этапе остановимся подробнее.

Атрибут нужен, когда важно само значение — оно потом либо подставляется в текст сообщения, либо участвует в условии сценария, где сравниваются конкретные величины:

  • город клиента — чтобы подставить в сообщение «Ближайший к вам магазин — на Тверской» вместо магазина в другом городе;
  • дата последней покупки — чтобы сравнить с сегодняшней датой и понять, не пора ли напомнить о себе;
  • тариф подписки — чтобы показывать разный контент в зависимости от уровня.

Тег нужен, когда важен сам факт — без всякого значения:

  • пометить, что клиент написал жалобу, чтобы потом легко найти такие диалоги;
  • проверить в сценарии «есть ли у профиля такой тег» и пустить диалог по одной или другой ветке;
  • отметить принадлежность к группе (auth, waiting_for_call).

Оба варианта участвуют в сегментации аудитории, просто по-разному: сегмент можно собрать и по значению атрибута (город = Москва, дата последней покупки старше 30 дней), и по наличию тега (все, у кого стоит тег auth).

Пример на практике

Клиент оставляет в боте номер телефона и город — это ложится в атрибуты, потому что и то, и другое пригодится потом: город — для персонализации сообщений, телефон — чтобы вообще идентифицировать человека. В какой-то момент клиент пишет «хочу отменить заказ» — оператор в чат-центре присваивает тег «отмена», просто чтобы этот диалог потом было легко найти и посчитать, сколько всего было отмен за месяц. Значение тега при этом никого не интересует — важен сам факт, что он стоит.

Через неделю можно собрать сегмент «город = Москва» и отправить рассылку про акцию в московских точках, а отдельно — сегмент «есть тег отмена» и посмотреть, что вообще происходит с этими клиентами дальше.

Работа с атрибутами:

  1. Значения атрибутов, отображаемых в карточке профиля клиента, можно менять в Чат-центре или в разделе Аудитория
  2. Значения атрибутов можно менять в редакторе процедур с помощью следующих функций:
    • Изменить значение атрибута:
      {% set_attribute "profile_name" "value" %}
    • Очистить атрибут:
      {% clear_attribute "profile_name" "value" %}
  3. Условие с проверкой значения атрибута:
    {% if attributes.profile_name == "value" %}

Работа с тегами:

  1. Добавление и удаление тегов доступно в карточке профиля клиента в Чат-центре или в разделе Аудитория
  2. Добавлять и удалять теги также можно в редакторе процедур:
    • Добавить тег:
      {% profile.set_tag "tag_name" %}
    • Удалить тег:
      {% profile_clear_tag "tag_name" %}
  3. Условие с проверкой наличия тега:
    {% if profile.tags.tag_name %}

Коротко

Если нужно значение, с которым потом что-то делать (сравнивать, подставлять в текст) — это атрибут, и его сначала нужно завести в настройках. Если нужно просто пометить профиль без всякого значения — это тег, и его можно присвоить прямо сейчас, ничего заранее не создавая.