Переменные
Статья рассказывает о переменных в системе, как их использовать, где их можно использовать. Продемонстрирует результат их работы
Как работать с переменными
Рассмотрим что такое переменные и как их использовать при создании чат-ботов на конструкторе Salebot.
Переменная - это хранилище данных, которому мы присваиваем некое текстовое имя. А далее в это хранилище мы запоминаем вводимые пользователем данные и можем ими воспользоваться в любом месте воронки. В конструкторе есть не только встроенные и служебные переменные, но и пользовательские - это те, которые Вы сами задаете (объявляете) в проекте.
Объявить переменную - значит присвоить некое значение поименованному хранилищу, а если по-русски, то запись вида a=0 и есть то самое объявление переменной a. Мы только что сказали (объявили) конструктору, что в переменной a мы будем хранить число, пока это значение 0. Присвоить переменной значение имеет такой же смысл .
Также используют выражение Присвоить переменной значение функции, Приравнять переменную к функции. Принцип тот же, после знака равно ставим не конкретное значение, а функцию. Например, s_id = vk_send_message(platform_id, "Привет"). В этом случае в переменную запишется результат выполнения функции.
Обнулить переменную - значит присвоить этой переменной значение 0.
ПРАВИЛА РАБОТЫ С ПЕРЕМЕННЫМИ:
Переменная может начинаться только с буквы, с цифры нельзя
Возраст1 - ✅ правильно
1Возраст - ❌ неправильно
age1 - ✅ правильно - рекомендуемый вариант
Переменная не может содержать пробелы и иные спецсимволы, кроме нижнего подчеркивания
Имя_Фамилия - ✅ правильно
Имя Фамилия - ❌ неправильно
имяФамилия - ✅ правильно - рекомендуемый вариант
В имени переменной нельзя использовать зарезервированные слова языков программирования, например: print, true, false, count, sum и т.д.
КАТЕГОРИЧЕСКИ НЕЛЬЗЯ использовать для имен пользовательских переменных имена встроенных и служебных переменных. С перечнем таких переменных Вы познакомитесь здесь
Рекомендуем:
используйте латинские наименования для переменных
используйте короткие, но смысловые названия переменных, например: totalSum, pay_name, fio и т.д.
Конструкция #{} позволяет получить значение переменной. Используется эта конструкция в поле Текст сообщения для вставки значения переменной в текст.
Пример:
В поле "Калькулятор" к переменной обращаемся по имени, без использования конструкции #{}.
totalSum = cena * kolvo - ✅ правильно
totalSum = #{cena} * #{kolvo} - ❌ неправильно
Как сравнивать значения переменных?
В настройках соединения в поле Переменная для сравнения введите:
client_type == 3 переход, если значение переменной равно 3 attachments != None переход, если значение переменной заполнено любым содержимым attachments == None переход, если значение переменной не задано количество_товара >= 100 переход, если количество товара больше или равно 100 количество_товара <= 100 переход, если количество товара меньше или равно 100 имя == "Вася" переход, если значение переменной имя равно Вася
Конструктор понимает вложенные переменные, где значение одной переменной входит в имя переменной другой. Например: #{q#{test#{i}}}
Как удалить переменную из бота?
Для удаления переменной (очищения) в поле Калькулятор введите одно из двух: Название_вашей_переменной = Название_вашей_переменной = ""
После знака = либо пробел, либо двойные (одинарные) кавычки.
Обратите внимание! Важно указывать приставку для места определения принадлежности переменной. Для переменных проекта - это 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 в whatsapp 7 в авито 8 в одноклассниках 10 в Instagram* 12 Юла 13 Телефония 14 e-mail 16 Telegram Business Account 19 для Циан
*Принадлежит компании Meta, запрещенной в России и признанной экстремисткой.
Служебные переменные
Дополнительно к встроенным переменным, в ходе работы бота, могут появляться переменные, указанные ниже. Вы их можете использовать в процессе создания бота. Эти переменные появляются автоматически. Ниже перечислены те, которые могут быть вам полезны.
Дополнительные служебные переменные вы можете увидеть в документации. Они расположены в тех разделах, к которым имеют отношение.
amo_client_id - идентификатор клиента в амо amo_lead_id - идентификатор лида в амо amo_unsorted_id - идентификатор неразобранного в амо
avito_profile - ссылка на профиль покупателя в Avito avito_order_id - идентификатор объявления avito_order_url - ссылка на объявление в Avito
bitrix_lead_id - идентификатор лида в битрикс bitrix_deal_id - идентификатор сделки в битрикс
phone - номер телефона
notSubscribed - если переменная равна 1, то клиент отписался от сообщений и ни одно сообщение ему не будет отправлено clientBlocked - клиент заблокирован и бот для него не работает story_url - идентификатор сторис, на который ответил клиент в Instagram ok_user_id - идентификатор пользователи в Одноклассниках viewed_page - страница, с которой человек пишет в онлайн-чат wa_bot - номер телефона Whatsapp-бота
Пользовательские переменные
Пользовательские переменные делятся на - переменные проекта или общие переменные - переменные клиента или клиентские переменные - переменные сделки или обычные переменные - константы
Каждый из видов переменных мы рассмотрим ниже.
Не используйте одинаковые имена для разных видов переменных, чтобы не сталкиваться с недопониманием, когда Конструктор вытягивает не то значение, которое Вы ожидали
При присвоении значения переменной важно указать её вид, используя соответствующие префиксы клиент. (client.) или проект. (project.), для переменных сделки префикс не используется.
При получении значения переменной такой префикс опускается.
Пример:
Допустим, мы хотим задать общую переменную лайк, которую будем использовать как счетчик лайков наших клиентов.
проект.лайк = 0 - объявление, выполняется единожды
в блоке, где необходимо проводить подсчет лайков, пишем:
проект.лайк = лайк + 1
Приоритет срабатывания у переменных: переменные сделки (самый высокий), переменные клиента, переменные проекта
Как использовать переменные
Переменные можно использовать в условиях, заявках, ответах пользователю, блоках и т.д. Давайте рассмотрим конкретный пример при создании воронки для агентства недвижимости.
Итак, создадим приветственное сообщение и через 1 секунду спросим пользователя как его зовут (Рисунок 1).
Дальше создаем еще один блок, где благодарим пользователя за предоставленную информацию. В условии перехода в этот блок включим переключатель "Пользователь вводит данные" и в поле "Вводимые данные" напишем "Имя".(Рисунок 2). В нашем случае "Имя" - это как раз и есть переменная, в которую бот запишет имя пользователя. Здесь может быть любое слово как на русском так и на английском языках, в том числе и цифры.
После этого мы можем использовать введенные данные. В следующем блоке мы благодарим пользователя и обращаемся к нему по имени, использую нашу переменную, не забыв при этом добавить скобки и решетку. Выглядит это вот так: Спасибо, #{Имя}!
Теперь давайте усложним задачу. В этом же блоке спросим пользователя, его интересует первичное жилье или вторичное и добавим два блока. Условия перехода в первый блок - это ответ "Первичное", во второй - "Вторичное" (Рисунок 3).
Теперь рассмотрим второй вариант использования переменных: в блоках. Для этого выделим левый блок, нажмем на "Расширенные настройки" и в поле "Калькулятор" введем следующий текст: "Клиента_интересует = Первичное жилье". Вписываем это без кавычек (Рисунок 4). В правом блоке соответственно "Клиента_интересует = Вторичное жилье"
Для чего это сделано: при переходе в любой из блоков пользователю присваивается переменная, которую мы сможем использовать при создании заявки.
Дальше в блоках давайте спросим ценовой диапазон для недвижимости. А из этих блоков создадим условие с проверкой введенных данных через встроенную переменную #{question} (в данном случае эта переменная является введенным ответом пользователя) ну и в этих же стрелках давайте назначим введенному числу переменную "бюджет"(Рисунок 5).
Теперь подробнее о том как это будет работать: встроенная переменная "question" содержит в себе ответ пользователя. Мы берем его ответ и сравниваем. Если введенное им число больше 1 млн, то он переходит вправо, если меньше то влево. Так же мы присвоили ответу нашего пользователя новую переменную и назвали ее "бюджет", чтобы в итоговой заявке все выглядело понятно и красиво. Теперь сменим тип последних двух блоков на "Конец сбора данных" и посмотрим что получилось (Рисунок 6)
На почту приходит финальная заявка вот в таком виде (Рисунок 7):
Теперь Вы умеете использовать переменные как минимум тремя разными способами:
Присваивать введенным пользователем данным названия переменных ("Имя", "Бюджет")
Присваивать название переменной при переходе в блок (Клиента интересует = Первичное жилье)
Сравнивать переменные с ответом пользователя (question >= 1000001)
Как посмотреть переменные
Переменные можно просмотреть в карточке клиента в разделе Клиенты
Отредактировать системные переменные нельзя!
Как задать переменные клиента
Переменные клиента не удаляются, не обнуляются и не пропадают при использования блока Конец сбора данных (красный блок)
Задать переменную клиента можно двумя способами - явно и неявно.
Явный способ объявления переменной - это прописать ее в Калькуляторе одного из блоков воронки. Например, клиент.возраст = 28
или client.возраст = 28
Неявный способ - это задать переменную в поле ввода данных стрелки
Переменные клиента используются идентично обычным.
Как задать общие переменные
Общие переменные не удаляются, не обнуляются и не пропадают при использования блока Конец сбора данных (красный блок)
Общие переменные доступны всем пользователям бота. С их помощью можно управлять ботом или обеспечить взаимодействие клиентов между собой. Например, один клиент размещает объявление, все его видят и кто-то на него откликается.
Записать переменную можно используя префикс проект., например: проект.количество_обращений = 28
или project.возраст = 28
Использовать их можно без префикса.
Отредактировать общие переменные можно в настройках проекта:
Пример использования общих переменных
Для примера сделаем систему присвоение номера по порядку каждому входящему в бот клиенту.
Первоначально в общую переменную запишем 0, что означает нет клиентов в боте.
Далее в стартовом блоке бота будем увеличивать значение переменной на 1 и отписывать полученное значение в клиентскую переменную нашего клиента.
Не забудьте установить ограничение, чтобы одному клиенту нельзя было дважды прибавить счетчик.
Как задать константные переменные
Константные переменные или просто константы - это постоянные переменные, значения которых редко меняются в проекте (или не меняются вовсе). В отличие от общих переменных, доступ к ним имеет только один текущий клиент и в случае перезаписи переменной изменения применятся только для него. В константные переменные можно записывать стоимость товаров, скидку для покупателя, токены доступа к интеграциям, контактные данные продавца и т.д.
Пример использования константных переменных
В качестве примера представим, что скидка для нового клиента по умолчанию 10%, но если ввести промокод - становится 25%.
В Настройки проекта -> Изменить переменные для Константы проекта запишем Скидка : 10. Если необходимо вводить много переменных, удобно выбрать “Старый стиль” и вводить через равно каждую с новой строки.
Для ввода промокода добавим блок “Не состояние с условием”, где присвоим переменной "Скидка" значение 25.
Таким образом, переменная "скидка" после ввода промокода для данного клиента стала равна 25.
Так произошло, потому что запись вида скидка = 25 задала значение для переменной сделки, а не изменила значение одноименной константы.
Основные переменные сделки
Название / Name - название сделки. Наименование Name используется для международной версии проекта.
Описание / Description - описание сделки. Наименование Description используется для международной версии проекта.
budget - Стоимость сделки (число).
Для редактирования переменных с помощью api-запроса } /set_order_vars необходимо использовать наименования из данной инструкции с учетом регистра и версии проекта.
Функции для работы с переменными
Лимиты
Максимальная длина названия переменной: 500 Максимальная длина переменной: 100.000 Максимальное количество переменных у клиента или сделки: 1000
Last updated