Личный кабинет покупателей это раздел сайта, где клиент видит заказы, бонусы, записи, тарифы и общается с магазином. Сейл, ИИ-сотрудник проекта, умеет настраивать кабинет и строить автоматизации на его события, не заходя в конструктор.

Что умеет Сейл

  • Видеть состав кабинета. Какие модули включены, какие события кабинет отправляет боту, тарифы, услуги, поля регистрации.
  • Настраивать кабинет с нуля. Поставить сайту короткий поддомен, включить кабинет, включить нужные модули, создать чат кабинета и кнопку входа в шапке сайта.
  • Включать и выключать события для схемы бота.
  • Собирать автоматизации одним запросом. Блок в схеме, который реагирует на событие кабинета: пишет клиенту, ставит задачу сотруднику, начисляет бонусы.
  • Создать магазин. Интернет-магазин с витриной, товарами и кабинетом.

Создать магазин через Сейла

Если сайта ещё нет, магазин можно создать одним запросом. Пример:

Создай интернет-магазин «Одежда Demo» с двумя товарами: футболка за 1500 рублей и худи за 3500 рублей

Сейл создаст магазин с витриной, каталогом и подвалом, заведёт товары с ценами и подберёт фото, поставит короткий поддомен и подготовит настройки кабинета. В ответе будет адрес магазина. Дальше можно попросить добавить описания, фото или доставку.

Сейл создаёт магазин

Как включить кабинет

Напишите Сейлу, какой кабинет нужен. Пример:

Включи в магазине личный кабинет покупателей с заказами, бонусами, брошенной корзиной и чатом

Сейл поставит поддомен, если у сайта нет домена, включит кабинет и модули, создаст чат кабинета и добавит кнопку входа в шапку. В ответе будет адрес кабинета.

Если сайта ещё нет, попросите создать магазин: он появится с витриной, товарами и кабинетом.

Сейл включает кабинет

События кабинета

Кабинет отправляет боту события: клиент зарегистрировался, вошёл, оформил заказ, оплатил, списал или получил бонусы, брошенная корзина, статус доставки, отмена заказа, изменение профиля и другие. Каждое событие относится к своему модулю и приходит только когда модуль включён.

События уходят в схему только по переключателю. Переключатели лежат в настройках сайта, вкладка «Кабинет покупателя», раздел «Общее», карточка «События». Сейл включает нужные события сам, когда строит автоматизацию.

Переключатели событий

Основные события:

Событие Когда приходит
cabinet_registered клиент зарегистрировался
cabinet_login клиент вошёл в кабинет
cabinet_messenger_linked клиент привязал мессенджер
cabinet_order_created клиент оформил заказ
cabinet_order_paid заказ оплачен
cabinet_bonus_spent клиент списал бонусы при оплате
cabinet_bonus_earned клиенту начислены бонусы за заказ
cabinet_order_stage сменился статус доставки
cabinet_order_cancelled клиент отменил заказ
cabinet_cart_abandoned корзина брошена
cabinet_profile_updated клиент изменил профиль
cabinet_access_expiring доступ по тарифу заканчивается
cabinet_request_stage заявка на услугу сменила этап

Автоматизации одним запросом

Опишите, что должно происходить при событии. Примеры:

При регистрации в кабинете начисли 200 бонусов и напиши приветствие с балансом

При брошенной корзине напомни о товарах со ссылкой на корзину

При оплате заказа поблагодари клиента и поставь задачу ответственному проверить оплату

При входе в кабинет поставь клиенту метку «Активный»

Сейл включит событие и создаст в схеме блок с условием по событию. В блоке будет текст клиенту, задача сотруднику или начисление бонусов, смотря что вы попросили. Несколько автоматизаций можно попросить одним сообщением.

Сейл собирает автоматизации

Блок появляется в конструкторе, его можно править как любой другой.

Блок в конструкторе

Что получает клиент

Текст блока уходит клиенту в привязанный мессенджер: Telegram, WhatsApp* или ВКонтакте. Если мессенджер не привязан, текст приходит в чат кабинета, когда модуль «Чат» включён. Задачи, бонусы и метки работают в любом случае.

*WhatsApp принадлежит Meta inc., деятельность которой признана в России экстремистской и запрещена.

Сообщения в чате кабинета

Переменные и функции в текстах

В тексте блока можно подставлять значения:

Переменная Что содержит
#{callback_order_id} номер заказа или заявки, о которой событие
#{cabinet_bonus} текущий баланс бонусов клиента
#{bonus_applied} баланс после начисления в этом же блоке
#{cabinet_cart_url} ссылка на восстановление брошенной корзины

Функции калькулятора для кабинета

Функции работают в любом блоке схемы, в калькуляторе и в условиях блоков. Сейл подбирает их сам, когда строит автоматизацию, но их можно писать и руками.

Общие правила:

  • Функции с параметром client_id без него работают с клиентом текущего диалога. client_id нужен, чтобы посмотреть другого клиента проекта, например в рассылке.
  • Функции, которые меняют данные (начисление, списание, скидка, журнал), всегда работают с клиентом текущего диалога.
  • Если клиент не зарегистрирован в кабинете, числовые функции возвращают 0, текстовые пусто.
  • Id тарифов и услуг Сейл видит в составе кабинета. Вручную их можно взять в настройках сайта, вкладка «Кабинет покупателя».

Регистрация

Проверить, есть ли у клиента кабинет

cabinet_registered(client_id) возвращает 1, если клиент зарегистрирован в кабинете сайта, иначе 0.

Параметр Описание
client_id id клиента проекта. Если пусто, проверяется клиент текущего диалога

Пример: условие блока cabinet_registered() == 0 пропустит только тех, у кого кабинета ещё нет, и бот предложит зарегистрироваться.

Бонусы

Узнать баланс бонусов

cabinet_bonus_balance(client_id) возвращает баланс бонусного счёта клиента.

Параметр Описание
client_id id клиента проекта. Если пусто, берётся клиент текущего диалога

Пример: balance = cabinet_bonus_balance(), дальше в тексте У вас #{balance} бонусов.

Начислить или списать бонусы

cabinet_bonus_add(amount, comment) начисляет бонусы клиенту текущего диалога. Отрицательная сумма списывает. Счёт не уходит ниже нуля, поэтому функция возвращает фактически применённую сумму, а при списании больше баланса спишет только то, что есть.

Параметр Описание
! amount сумма. Положительная начисляет, отрицательная списывает
comment подпись операции в истории бонусов клиента. Если пусто, запишется «По сценарию бота»

Возвращает применённую сумму. 0, если клиент не зарегистрирован или сумма нулевая.

Примеры:

  • cabinet_bonus_add(100, 'Бонус за регистрацию') начислит 100.
  • cabinet_bonus_add(-50, 'Списание за заказ') спишет 50.

Визиты абонемента

Узнать остаток визитов

cabinet_visits_balance(client_id) возвращает, сколько визитов осталось по абонементу клиента.

Параметр Описание
client_id id клиента проекта. Если пусто, берётся клиент текущего диалога

Начислить или списать визиты

cabinet_visits_add(amount, comment) добавляет визиты абонемента клиенту текущего диалога. Отрицательное число списывает. Дробные значения округляются до целого.

Параметр Описание
! amount количество визитов. Положительное начисляет, отрицательное списывает
comment подпись операции в истории визитов

Возвращает применённое количество.

Пример: cabinet_visits_add(-1, 'Посещение занятия') спишет один визит после записи.

Персональная скидка

Узнать скидку

cabinet_discount(client_id) возвращает персональную скидку клиента в процентах. 0, если скидки нет.

Параметр Описание
client_id id клиента проекта. Если пусто, берётся клиент текущего диалога

Установить скидку

cabinet_discount_set(percent) выставляет персональную скидку клиенту текущего диалога. Скидка применяется при оформлении заказа в магазине.

Параметр Описание
! percent итоговый процент скидки. 0 убирает скидку

Возвращает установленное значение.

Пример: cabinet_discount_set(10) даст постоянную скидку 10 %.

Тарифы

Проверить тариф

cabinet_has_tariff(tariff_id, client_id) возвращает 1, если у клиента активен тариф с указанным id, иначе 0. Тариф с истёкшим доступом считается неактивным.

Параметр Описание
! tariff_id id тарифа кабинета
client_id id клиента проекта. Если пусто, берётся клиент текущего диалога

Пример: условие cabinet_has_tariff(12) == 1 пропустит только клиентов с тарифом 12.

Узнать активный тариф

cabinet_tariff(client_id) возвращает id активного тарифа клиента. Пусто, если тарифа нет.

cabinet_tariff_name(client_id) возвращает название активного тарифа.

cabinet_tariff_until(client_id) возвращает дату и время окончания доступа по тарифу в формате «ГГГГ-ММ-ДД ЧЧ:ММ:СС». Пусто, если тариф бессрочный или его нет.

Параметр Описание
client_id id клиента проекта. Если пусто, берётся клиент текущего диалога

Пример: Ваш тариф «#{cabinet_tariff_name()}» действует до #{cabinet_tariff_until()}.

Месячная квота операций

Квота это лимит операций в месяц, который задаётся у тарифа кабинета.

Узнать остаток квоты

cabinet_quota_left(client_id) возвращает, сколько операций осталось в этом месяце.

Параметр Описание
client_id id клиента проекта. Если пусто, берётся клиент текущего диалога

Возвращает остаток. −1, если у тарифа безлимит. 0, если тарифа нет или лимит исчерпан.

Списать операции квоты

cabinet_quota_use(amount, client_id) списывает операции из квоты.

Параметр Описание
amount сколько операций списать, целое число. Если пусто, списывается 1
client_id id клиента проекта. Если пусто, берётся клиент текущего диалога

Возвращает остаток после списания. −1 при безлимите. 0, если тарифа нет или лимит исчерпан, списания в этом случае не было.

Пример: left = cabinet_quota_use(1), и если left == 0, бот предложит продлить тариф.

Заявки на услуги

Заявка это сделка, которую клиент создал в кабинете через модуль «Услуги». Заказы магазина и записи сюда не входят.

Сколько заявок открыто

cabinet_requests_open(client_id) возвращает число открытых заявок клиента.

Параметр Описание
client_id id клиента проекта. Если пусто, берётся клиент текущего диалога

Есть ли неоплаченная заявка

cabinet_request_waiting(client_id) возвращает 1, если у клиента есть открытая заявка с ценой, которую он ещё не оплатил, иначе 0.

Параметр Описание
client_id id клиента проекта. Если пусто, берётся клиент текущего диалога

Статус заявки

cabinet_request_state(request_id, client_id) возвращает статус заявки: название этапа воронки, done для успешно закрытой или cancelled для отменённой.

Параметр Описание
request_id номер заявки. Если пусто, берётся последняя заявка клиента
client_id id клиента проекта. Если пусто, берётся клиент текущего диалога

Возвращает пусто, если заявки нет или этап не задан.

Пример: в блоке на событие cabinet_request_stage state = cabinet_request_state(callback_order_id).

Журнал клиента

Записать сообщение в кабинет

cabinet_notify(title, text, url, var) добавляет запись в журнал клиента, раздел «Результаты» в кабинете. Так бот может оставить клиенту результат, инструкцию или ссылку, которые останутся в кабинете.

Параметр Описание
! title заголовок записи, до 120 символов
text текст записи, до 4000 символов
url ссылка. Принимаются адреса с http, https или относительные, начинающиеся с «/»
var своя переменная журнала. Если пусто, запись идёт в основной журнал кабинета

Возвращает 1, если запись сделана. 0, если клиент не зарегистрирован или все три поля пустые. HTML из заголовка и текста вырезается.

Пример: cabinet_notify('Заявка принята', 'Менеджер свяжется в течение дня', 'https://example.com/faq').

Где смотреть, что сделал Сейл

Правки настроек кабинета и сайта видны в разделе «Действия ассистента», там же их можно отменить. Созданные блоки видны в конструкторе и в «Истории изменений» схемы.

Журнал действий

Что важно знать

  • Событие приходит только когда включён его модуль и включён переключатель события.
  • Кнопка «Отметить оплаченным» в карточке заказа даёт клиенту те же события и бонусы, что онлайн-оплата.
  • Текст блока не дойдёт до клиента без привязанного мессенджера и без модуля «Чат». Сейл предупредит об этом.

Примеры запросов

  • Включи кабинет в магазине с бонусами и чатом
  • Какие события кабинета включены?
  • Выключи событие входа в кабинет
  • При регистрации начисли 100 бонусов и поздоровайся
  • При оплате заказа поставь задачу менеджеру позвонить клиенту завтра
  • При окончании доступа по тарифу напомни клиенту продлить
  • Создай магазин «Название» с товарами и включи в нём кабинет