Переменные
Статья рассказывает о переменных в системе, как их использовать, где их можно использовать. Продемонстрирует результат их работы
Как работать с переменными
Рассмотрим, что такое переменные и как их использовать при создании чат-ботов на конструкторе Salebot.
Обращаем внимание!
Необходимо учитывать лимиты по переменным и константам в проекте:
Максимальное количество шаблонных переменных — 100;
Название шаблонной переменной не может превышать 100 символов;
Максимальное количество констант проекта — 50;
Название константы не может превышать 100 символов;
Значение константы не может превышать 5000 символов.
Переменная - это хранилище данных. Переменной присваивается некое текстовое имя:

Рис. 1. Пример переменной под названием payment_sum, в которой лежит сумма для платежа
В Salebot существуют несколько типов переменных:
Пользовательские переменные — это те, которые Вы сами задаете в проекте.
Объявить переменную - значит присвоить некое значение поименованному хранилищу: то есть запись вида a=0 и есть то самое объявление переменной a. Мы только что сказали (объявили) конструктору, что в переменной a мы будем хранить число, пока это значение 0. Присвоить переменной значение имеет такой же смысл .
Также используют выражение Присвоить переменной значение функции, Приравнять переменную к функции. Принцип тот же, после знака равно ставим не конкретное значение, а функцию. Например, s_id = vk_send_message(platform_id, "Привет"). В этом случае в переменную запишется результат выполнения функции.
Обнулить переменную - значит присвоить этой переменной значение 0.
Функции и методы — это определенный набор команд, который заранее установлен Сейлботом. Для большинства функций указываются параметры — значения, которые понимает функция или метод. Как только бот получит значения для функции/метода, далее выполняется определенная команда.
vk_send_message(platform_id, "Привет")
— это функция, которая отправляет сообщение вконтакте "Привет".

Рис. 2. Пример переменной под названием s_id с приравненной функцией
ПРАВИЛА РАБОТЫ С ПЕРЕМЕННЫМИ:
Переменная может начинаться только с буквы, с цифры нельзя
Возраст1 - ✅ правильно
1Возраст - ❌ неправильно
age1 - ✅ правильно - рекомендуемый вариант
Переменная не может содержать пробелы и иные спецсимволы, кроме нижнего подчеркивания
Имя_Фамилия - ✅ правильно
Имя Фамилия - ❌ неправильно
имяФамилия - ✅ правильно - рекомендуемый вариант
В имени переменной нельзя использовать зарезервированные слова языков программирования, например: print, true, false, count, sum и т.д.
КАТЕГОРИЧЕСКИ НЕЛЬЗЯ использовать для имен пользовательских переменных имена встроенных и служебных переменных. С перечнем таких переменных Вы познакомитесь здесь
Рекомендуем:
используйте латинские наименования для переменных
используйте короткие, но смысловые названия переменных, например: totalSum, pay_name, fio, name_client и т.д.
Как получить значение переменной?
#{} - внутри фигурных скобок укажите имя переменной. Так мы можно обращаться к значению в поле текст сообщения, а в Калькуляторе к значению переменной обращаться нужно просто по имени, без каких-либо дополнительных конструкций.
Конструкция #{} позволяет получить значение переменной. Используется эта конструкция в поле Текст сообщения для вставки значения переменной в текст.
Пример:
Система понимает вложенные переменные, где значение одной переменной входит в имя переменной другой. Например: #{q#{test#{i}}}
В поле "Калькулятор" к переменной обращаемся по имени, без использования конструкции #{}.
Например, у нас есть две переменные: цена (sum) и количество (num).
num = 10
sum = 1500

Как вывести итоговую сумму?
Прописываем в калькуляторе:
total_sum = sum * num
✅ правильно

Как нельзя:
total_sum = #{sum} * #{num}
- ❌ неправильно
Как сравнивать значения переменных?
В настройках соединения в поле Переменная для сравнения введите:

client_type == 3 переход, если значение переменной равно 3 attachments != None переход, если значение переменной заполнено любым содержимым attachments == None переход, если значение переменной не задано количество_товара >= 100 переход, если количество товара больше или равно 100 количество_товара <= 100 переход, если количество товара меньше или равно 100 имя == "Вася" переход, если значение переменной имя равно Вася
Как удалить переменную из бота?
Для удаления переменной (очищения) в поле Калькулятор введите одно из двух: Название_вашей_переменной = Название_вашей_переменной = ""
После знака = либо пробел, либо двойные (одинарные) кавычки.
Обратите внимание! Важно указывать приставку для места определения принадлежности переменной.
Для переменных проекта (тогда переменная будет записана в настройки проекта) - это project: project.Название_вашей_переменной = или project.Название_вашей_переменной = ""
Для переменных клиента client: client.Название_вашей_переменной = или client.Название_вашей_переменной = ""
Для переменных сделки приставка не указывается.
Встроенные переменные
Список встроенных переменных:
#{none} - проигнорировать сообщение #{api_key} - токен API. Он передается в вызовах API Salebot #{attachment_url} - в этой переменной содержится ссылка на вложение #{attachments} - url вложений к сообщению пользователя в формате JSON массива #{avatar} - ссылка на аватар пользователя (которая отображается в разделе Клиенты) #{client_id} - id клиента в конструкторе. Он передается в вызовы API. #{client_type} - тип мессенджера, откуда пришел клиент. Значения описаны тут #{current_date} - текущая дата в формате dd.mm.yyyy по часовому поясу проекта #{current_time} - время проекта в формате hh:mm по часовому поясу проекта #{custom_answer} - ответ, полученный с сервера, указанного в поле 'URL для ответа с сервера' #{message_from_outside} - тип входящего сообщения, может быть: Обычное сообщение = 0 Сообщение отправленное через API = 1 Сообщение из CRM (Амо, Битрикс) = 2 Уведомление Callback (желтоватый фон в диалоге) = 3 Уведомление телефонии(светло синий фон в диалоге) = 5 Переменная появляется при каждом входящем сообщении, в карте клиента НЕ отображается. Можно использовать в поле переменная для сравнения для настройки срабатывания блоков с условием и стрелок. #{date_of_creation} - дата, когда человек был добавлен в бота или написал ему первый раз #{full_name} - имя и фамилия собеседника #{group} - бот, к которому привязан клиент (В карточке клиента называется "Привязан к боту") #{main_client_id} - ID основного клиента, идентификатор основного клиента среди связанных между собой карточек клиентов #{message_id} - текущее состояние диалога с клиентом. Идентификатор состояния. По умолчанию NONE. #{messenger} - название мессенджера, откуда пришел клиент #{name} - имя собеседника #{next_day} - завтрашняя дата в формате dd.mm.yyyy. Удобно для отправки сообщения завтра. #{order_id} - идентификатор заявки(идентификатор клиента и внутренний идентификатор заявки через дефис) #{order} - содержимое заявки, созданной пользователем #{platform_id} - id клиента в мессенджере #{question} - сообщение пользователя #{timestamp} - текущий timestamp c учетом милисекунд #{time_of_creation} - время, когда человек был добавлен в бота или написал ему первый раз #{wa_bot} - номер Whatsapp, на который написал пользователь (удобно передавать его в поля СРМ, чтобы распределять заявки между менеджерами) #{weekday} - день недели в виде числа, понедельник - 1, вторник -2, и тд
Значения client_type
0
для Вконтакте
1
для Telegram
2
для Viber
3
для Facebook*
5
для онлайн-чата
6
7
авито
8
одноклассники
10
в Instagram*
12
Юла
13
Телефония
14
16
Telegram Business Account
19
для Циан
20
Max
*Принадлежит компании Meta, запрещенной в России и признанной экстремисткой.
Служебные переменные
Дополнительно к встроенным переменным, в ходе работы бота, могут появляться переменные, указанные ниже. Вы их можете использовать в процессе создания бота. Эти переменные появляются автоматически. Ниже перечислены те, которые могут быть вам полезны.
avito_profile - ссылка на профиль покупателя в Avito avito_order_id - идентификатор объявления avito_order_url - ссылка на объявление в Avito
phone - номер телефона
notSubscribed - если переменная равна 1, то клиент отписался от сообщений и ни одно сообщение ему не будет отправлено clientBlocked - клиент заблокирован и бот для него не работает story_url - идентификатор сторис, на который ответил клиент в Instagram ok_user_id - идентификатор пользователи в Одноклассниках viewed_page - страница, с которой человек пишет в онлайн-чат wa_bot - номер телефона Whatsapp-бота
Пользовательские переменные
Пользовательские переменные делятся на - переменные проекта или общие переменные - переменные клиента или клиентские переменные - переменные сделки или обычные переменные - константы
Каждый из видов переменных мы рассмотрим ниже.
ID в мессенджере (platform_id)
ID в мессенджере (platform_id) - идентификатор пользователя/чата/канала в мессенджере. В разделе Клиенты откройте диалог с интересующим клиентом. В правой части экрана диалога есть вкладка О клиенте - Системные переменные или вкладка Все.
ID в мессенджере (переменная platform_id) является служебной (встроенной) переменной и постоянна. Даже если вы удалите пользователя из конструктора, то при новой регистрации в боте ID в мессенджере будет тот же. Этот ID пользователь получает при регистрации в самом мессенджере. Как выглядит platform_id (ID в мессенджере) в карточке клиента:

Переменная platform_id есть как у обычных пользователей, так и у сообществ, каналов чатов.
Чтобы получить platform_id (ID канала в мессенджере) для канала Телеграм, в котором бот является администратором, достаточно написать в канал сообщение (со своего личного аккаунта напишите сообщение в канал).
Будет автоматически создан диалог бота с каналом. И в разделе О клиенте можно скопировать значение platform_id канала. В Телеграм для каналов значение ID в мессенджере идёт со знаком минус. В функциях используем всё значение вместе с минусом.

Как использовать переменные
Переменные можно использовать в условиях, заявках, ответах пользователю, блоках и т.д. Давайте рассмотрим конкретный пример при создании воронки для агентства недвижимости.
Итак, создадим блок "Стартовое условие", в котором спросим, как зовут пользователя:

Дальше создаем еще один блок, где благодарим пользователя за предоставленную информацию. В условии перехода в этот блок включим переключатель "Пользователь вводит данные" и в поле "Вводимые данные" напишем "Имя":

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

Бот будет отрабатывать следующим образом:

Теперь давайте усложним задачу. В этом же блоке спросим пользователя, его интересует первичное жилье или вторичное:

Затем добавим два блока, где в стрелках в условиях укажем текст кнопок:


Теперь рассмотрим второй вариант использования переменных: в блоках. Для этого выделим правый блок, в поле "Калькулятор" введем следующий текст: "Клиента_интересует = Первичное жилье". В левом блоке соответственно "Клиента_интересует = Вторичное жилье":

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

А из блоков "Какой у вас бюджет" создадим условие с проверкой введенных данных через встроенную переменную #{question} (в данном случае эта переменная является введенным ответом пользователя).
Выражение "question <= 1000000" в поле "Переменная для сравнения" как раз помогает проверить ответ клиента, распределить его в зависимости от бюджета и переместить по воронке в нужный блок. При этом также нужно активировать чекбокс "Пользователь вводит данные" и назначить переменную, в которую запишется ответ клиента.
Теперь сменим тип последних двух блоков на "Закрыть сделку" и посмотрим что получилось:

Теперь проверим схему в действии:

При переходе в раздел "Клиенты" в диалог с клиентом вы увидите созданную сделку с переменными сделки, которые хранят данные клиента:

Теперь Вы умеете использовать переменные как минимум тремя разными способами:
Присваивать введенным пользователем данным названия переменных ("Имя", "Бюджет")
Присваивать название переменной при переходе в блок (Клиента интересует = Первичное жилье)
Сравнивать переменные с ответом пользователя (question >= 1000001)
Как посмотреть переменные
Переменные можно просмотреть в карточке клиента в разделе Клиенты

Каждая переменная указывается с новой строки, слева имя переменной, справа - значение. При наведении указателя мыши на переменную появляется кнопка , при нажатии на которую можно отредактировать как имя переменной, так и ее значение или удалить переменную:


Как задать переменные клиента
Задать переменную клиента можно двумя способами - явно и неявно.
Явный способ объявления переменной - это прописать ее в Калькуляторе одного из блоков воронки.
Например, клиент.возраст = 28
или client.возраст = 28:

Неявный способ - это задать переменную в поле ввода данных стрелки:
Пример:
Создадим блок, в котором спросим имя клиента, а также создадим блок ниже, соединенный стрелкой:


Далее переходим в настройки стрелки (соединения) и активируем переключатель "Пользователь вводит данные":

В поле прописываем приставку client. и название переменной (в примере client.name) — таким образом, когда клиент напишет свое имя, бот запишет имя в клиентскую переменную name.
Далее переменную можно вывести в следующем сообщении:

Переменные клиента используются идентично обычным в конструкторе уже без приставки client.
Как задать общие переменные
Общие переменные доступны всем пользователям бота. С их помощью можно управлять ботом или обеспечить взаимодействие клиентов между собой. Например, один клиент размещает объявление, все его видят и кто-то на него откликается.
Записать переменную можно используя приставку проект., например: проект.количество_обращений = 28
или project.возраст = 28

Использовать их можно без префикса.
Отредактировать общие переменные можно в настройках проекта:

Пример использования общих переменных
Для примера сделаем систему присвоение номера по порядку каждому входящему в бот клиенту.
Перейдем в настройки проекта и создадим новую переменную:

Откроется окно, где нужно добавить переменную со значением 0, что означает "Нет клиентов в боте":

Далее в стартовом блоке бота будем увеличивать значение переменной на 1 и отписывать полученное значение в клиентскую переменную нашего клиента.


Как задать константные переменные
Константные переменные или просто константы — это постоянные переменные, значения которых редко меняются в проекте (или не меняются вовсе). В отличие от общих переменных, доступ к ним имеет только один текущий клиент и в случае перезаписи переменной изменения применятся только для него. В константные переменные можно записывать стоимость товаров, скидку для покупателя, токены доступа к интеграциям, контактные данные продавца и т.д.
Пример использования константных переменных
В качестве примера представим, что скидка для нового клиента по умолчанию 10%, но если ввести промокод - становится 25%.
В "Настройках проекта" -> "Константы" запишем Скидка : 10

Для ввода промокода добавим блок “Не состояние с условием”, где присвоим переменной "Скидка" значение 25.

А в зеленом блоке выведем переменную с размером скидки:

И проведем стрелку с таймером в ноль секунд из серого блока, чтобы скидка была применена и клиенту пришло сообщение из стартового блока.
Теперь напишем боту:

Без промокода наша скидка равна 10%. Но если мы напишем промокод, то ситуация изменится:

Таким образом, переменная "скидка" после ввода промокода для данного клиента стала равна 25.
Так произошло, потому что запись вида скидка = 25 задала значение для переменной сделки, а не изменила значение одноименной константы.
Основные переменные сделки
Название / Name - название сделки. Наименование Name используется для международной версии проекта.
Описание / Description - описание сделки. Наименование Description используется для международной версии проекта.
budget - Стоимость сделки (число).
Для редактирования переменных с помощью api-запроса /set_order_vars необходимо использовать наименования из данной инструкции с учетом регистра и версии проекта.
Функции для работы с переменными
Лимиты
Максимальная длина названия переменной: 500 Максимальная длина переменной: 100.000 Максимальное количество переменных у клиента или сделки: 1000
Как правильно работать с переменными
Когда нужно в переменных закрывать в кавычки значение переменной?
Например, client_id = 1202020202 или client_id = '1202020202'?
Верны оба способа. Постановка кавычек в значение переменной влияет только на подсветку кода в калькуляторе. Но хорошей практикой будет для числовых значений не использовать кавычки, а для строковых (то есть для текста) использовать, поскольку это также упрощает чтение кода.


Если передавать ID клиента, сайта, блока в конструкторе, сертификата и тд (наши внутренние переменные, которые создаются по умолчанию), нужно ли их закрывать в кавычки?
Тут имелось ввиду использование скобок по типу #{}? при использовании переменных в калькуляторе, их не нужно оборачивать в фигурные скобки. Например вот это будет работать:
result = some_function(client_id, message_id)
Что использовать: двойные кавычки или одинарные?
Разницы между использованием одинарных и двойных кавычек нет, но рекомендуем использовать двойные кавычки. В таком случае, например, при вставке переменной внутрь строки, переменная будет подсвечена другим цветом и её проще будет заметить.

Как расставлять пробелы?
Одинаково ли работает, если между переменной и равенством есть пробел (например, 'ans="yes", 'ans = "yes" ', 'ans= "yes", 'ans ="yes"?

Постановка пробелов не влияет на работу методов, переменных и функций. Рекомендуется расставлять пробелы в коде, чтобы он был более читаем.
Last updated
Was this helpful?