Salebot.pro
Search…
Калькулятор
Как высчитать математическое выражение с использованием переменных и математических функций
Быстрый доступ к описаниям функций:

Калькулятор

Для любых арифметических вычислений и присвоения переменным значений в расширенных настройках блоков предусмотрено поле "Калькулятор"
Поле Калькулятор
При работе с калькулятором название переменной не может начинаться с цифры. Нельзя: <1_имя>, а надо <имя_1>.
Название переменной не может состоять из двух слов, используйте для разделения символ нижнего подчеркивания "_". Нельзя <Имя клиента>, а надо <Имя_клиента>
Как использовать в конструкторе.
В поле "Назначение переменных при переходе", чтобы обратиться к переменной, не нужно использовать #{}
Пример подсчета значения переменной в поле Калькулятор (Назначение переменных при переходе) на рисунке 1
Рисунок 1
Переменные можно записывать просто названием или через #{}. Все переменные автоматически будут приводиться к числам с плавающей запятой.
Калькулятор поддерживает все необходимые логические и арифметические операции.
В калькуляторе есть возможность использовать комментарии, для этого используется формат /* текст комментария */

Константы

"E": число e

Поддерживаемые операторы

"+": сложение
"-"': вычитание
"*" умножение
"/": деление
"%'": остаток от деления
"^" "**": возведение в степень
"==" "!=" ">" "<" ">=" "<=": операторы сравнения
"and" "AND" "&&": логическое И
"or" "OR" "||": логическое ИЛИ
Важно! Логические условия с переменными необходимо писать в поле переменная для сравнения!
Например, на рисунке 2 переход по стрелке осуществится, если переменная НОМЕРТЕЛЕФОНА заполнена:
Рисунок 2

Поддерживаемые функции

Математические функции

random(low, high) - для получения случайного числа. На вход функция принимает 2 параметра: нижняя граница и верхняя. Пример: random(-10,10)
md5(text)" - для получения хеша md5 от строки. Например hash = md5("Hello world") вернет значение 3e25960a79dbc69b674cd4ec67a72c62
sha256(text) - для получения хеша sha256 от строки. Например hash = sha256("Hello world") вернет значение 64ec88ca00b268e5ba1a35678a1b5316d212f4f366b2477232534a8aeca37f3c
sha1(text) - для получения хеша sha1 от строки. Например hash = sha1("Hello world") вернет значение 7b502c3a1f48c8609ae212cdfb639dee39673f5e
fac(num) - для получения факториала. На вход принимает 1 параметр: число. Пример f = fac(5) вернет значение 120
log(num, base) - для получения значения логарифма. На вход принимает 2 параметра: число и база(по умолчанию e). Например f = log(E) вернет значение 1, а f = log(100, 10) вернет 2
min(a, b, c) - для поиска минимального числа из перечисления. На входе неограниченное количество параметров (каждый параметр число). Пример: min(4, 2, 9, 6) вернет 2
max(a, b, c) - для поиска максимального числа из перечисления. На входе неограниченное количество параметров (каждый параметр число). Пример: max(4, 2, 9, 6) вернет 9
int(num) - для приведения чисел с дробной частью к целому числу. При этом дробная часть просто отсекается. Пример: int(1.8) вернет 1
is_int(txt) - для проверки является ли строка числом. Пример: is_int("5") вернет True, а is_int("текст") будет False
is_float(txt) - для проверки является ли строка числом(включая дробные)
round(num) - для математического округления числа. Пример: round(1.8). Можно округлить до определенного знака после запятой. Например: round(1.8888888, 2) округлит до 1.89 Разница между "int" и "round" показана на Рисунке 3:
Рисунок 3
pow(num, st) - для возведения числа в степень. На входе 2 параметра: число и степень. Пример: pow(5, 2) вернет 25
"sin" "cos" "tan" "asin" "acos" "atan" "atan2": тригонометрические функции
sqrt(num) - для получения квадратного корня числа. На вход 1 параметр: число. Пример: sqrt(25) вернет 5
floor(num) - для получения целой части от числа. Пример: floor(25.66) вернет 25
ceil(num) - для округления числа к большему. Пример: ceil(25.66) вернет 26
abs(num) - абсолютное значение(приведение к положительному числу). Пример: abs(-256) вернет 256
exp(num) - возведение е в степень параметра. Пример: exp(2) вернет 7.38905609893065
Математические функции вы можете производить не только в поле Калькулятор, но и непосредственно в поле ответ, записывая выражение как #{2+2} , #{random (0,100)} и т.д.

С уведомлением о клике

proxy(lnk) - для получения ссылки с уведомлением о клике. На вход передается ссылка. Если передать после минут еще один параметр, не равный нулю, то ссылка будет одноразовая. Пример:
Пример кнопки с ссылкой и уведомлением о клике
Уведомление о клике в диалоге с клиентомПрим
proxy_date(lnk, date, time) - для получения ссылки с уведомлением о клике с заданным временем окончания доступа к ней. На вход первым параметром передается ссылка, вторым и третьим параметром идут дата и время, когда ссылка перестанет действовать. Если передать после минут еще один параметр, не равный нулю, то ссылка будет одноразовая. Пример:
Одноразовая ссылка, которая перестала действовать 16.10.2021
proxy_timeout(lnk, minut) - для получения ссылки с уведомлением о клике с заданным таймером доступа к ней. На вход первым параметром передается ссылка, второй параметр - количество минут, которые действует ссылка. Если передать после минут третий параметр, не равный нулю, то ссылка будет одноразовая. Пример:
Одноразовая ссылка с доступом на 60 минут

Для укорачивания ссылок

Функции предназначены для приведения ссылок к короткому и красивому виду. Чтобы клиента не смущали длинные ссылки на несколько строк рекомендуется использовать функции, приведенные ниже.
Функции аналогичны тем, которые используются для получения ссылок с уведомлением о клике.
Функции ниже без колбека, в отличие от proxy
short(lnk) (аналогичен proxy) - На вход передается ссылка. Если передать после минут еще один параметр, не равный нулю, то ссылка будет одноразовая. hort_timeout" (аналогичен short_date(lnk, date, time) (аналогичен proxy_date) (аналогичен proxy_timeout ) - На вход первым параметром передается ссылка, вторым и третьим параметром идут дата и время, когда ссылка перестанет действовать. Если передать после минут еще один параметр, не равный нулю, то ссылка будет одноразовая. short_timeout(lnk, minut) - На вход первым параметром передается ссылка, второй параметр - количество минут, которые действует ссылка. Если передать после минут третий параметр, не равный нулю, то ссылка будет одноразовая.
Подробнее о том, как использовать собственный домен при формировании таких ссылок читайте тут

Для удаления ссылок

remove_links() - деактивация всех коротких ссылок, отправленных клиенту remove_one_time_links() - деактивация всех одноразовых ссылок, отправленных клиенту remove_timer_links() - деактивация всех временно доступных ссылок, отправленных клиенту

Для работы с регулярными выражениями

Поиск в строке по регулярному выражению.

findall(reg, str, index) - для поиска всех вхождений группы в строку. 3 параметра. Первый регулярное выражение, второй строка, в которой происходит поиск. Третий необязательный индекс найденного результата. Индекс считается с нуля. То есть первый найденный результат будет иметь индекс 0.
Например:
findall('.ru\/(.+)\/', 'https://payform.ru/ab252acn/', 0)
Результатом будет: ab252acn
similar(str1, str2) - для сравнения строк с учетом описок. Возвращает True, если строки обличаются менее чем на 30%. Пример использования: часовой_пояс = if(similar(город, 'Тула') , '0', часовой_пояс)

Для работы со строками

substring(str, n1, n2) - для обрезки строки. На вход принимаются 3 параметра - исходная строка и границы обрезки. 2 других параметра: обрезка слева и обрезка справа. Если второй параметр положительный, то это длинна относительно начала. Если отрицательный, то относительно конца. Если параметры невалидные, функция вернет пустую строку. Для обрезки с начала передайте только одно число. Пример:
substring('текст для обрезки с начала на 4 символа', 4) substring('текст для обрезки с 4 на 2 символа', 4, 6) substring('текст для обрезки с конца на 4 символа', 0, -4) substring('текст для обрезки с начала и с конца на 4 символа', 4, -4)
endswith(str, substr) - для проверки, заканчивается строка заданной подстрокой или нет. Первый параметр строка в которой ищется, второй — что ищется
startswith(str, substr) - для проверки, начинается строка заданной подстрокой или нет. Первый параметр строка в которой ищется, второй — что ищется
contains(str1, str2) – для проверки, входит ли вторая строка в первую. Первый параметр строка в которой ищем, второй параметр строка что ищем. Поиск происходит с учетом регистра. Если не нужно учитывать регистр, передайте третьим параметром False
len(str) – для подсчета количества символов в строке. Пример: len("как прекрасен этот мир!"). Результат работы представлен на Рисунке 4:
Рисунок 4
concat(str1, str2) – для конкатенации (сложения) строк, преданных в параметр.
splitter(str, s, n) - для разделения строки на части. Первый параметр строка, второй разделитель, третий(необязательный) максимальное количество элементов. Функция возвращает массив элементов. Пример использования: elements = splitter('s, W, q', ',')
lower(str) – для приведения строки к нижнему регистру.
upper(str) - для приведения строки в верхний регистр.
strip(str) - для обрезки пробелов по краям строки.
capitalize() - для замены первого символа строки на тот же символ верхнего регистра (пишет слова с большой буквы).
normalizePhone(snumber) - для приведения номера телефона к стандартному виду. Убирает все кроме цифр и, если телефон начинается с 8, меняет ее на 7. Пример: normalizePhone("+7978-999-99-99"). Результат работы представлен на Рисунке 5:
Рисунок 5
Эта функция работает со всеми номерами, не только РФ.
replace(str, s1, s2, n) - для замены вхождения строки в строку на другую строку. Принимает 4 параметра: строка в которой будет происходить замена, что заменить, на что заменить, сколько раз заменить(не обязательный параметр). Пример: replace("wwww2222ww", "w", "e", 1). Результат: ewww2222ww. Пример использования на рисунках ниже:
base64(str) – для кодировки строки в формате base64
base64decode(str) - для декодировки base64 в строку
urlencode(str) - для кодировки строки, чтобы ее можно было передавать по http. Например: Ivan Ivanovich станет Ivan%20Ivanovich, а Anna&Maria станет Anna%26Maria
select_random(str, s) - для выбора случайного элемента в строке с разделителями. Первый параметр строка с элементами, второй делитель. Второй параметр по умолчанию равен '|'. Пример использования: select_random('первый элемент | второй элемент | еще элемент | и еще')
tg_escape(str) - для экранирования переменной для вывода ее в сообщении телеграм с включенной разметкой. Функция ставит слеш перед перечисленными символами: '_', '*', '[', ']', '(', ')', '~', '`', '>', '#', '+', '-', '=', '|', '{', '}', '.', '!'

Для работы с клиентами

was_in_state(id) - для проверки, был ли клиент в определенном блоке схемы блоке схемы. was_in_state(message_id) – для проверки был ли клиент в выбранном состоянии(блоке). Номер блока можно взять из редактора:
days_from_last_message() - для определения количества дней с момента последней реплики клиента. Создана для проверки попадания в 24часовое окно. Пример: d = days_from_last_message()
free_client() - для снятия ответственного оператора Пример: free_client()
assign_to_user(email) - для назначения диалога оператору. Пример: assign_to_user('email оператора')
Если написать так: assign_to_user()то диалог назначится случайному оператору, который в данный момент находится на смене
distribute_client() - для назначения диалога оператору согласно настроек автораспределения. Пример: distribute_client()
get_operator() - для получения email ответственного оператора. Пример: get_operator() Можно использовать для постановки задачи ответственному и т.д. или проверки есть ли ответственный оператор. Если ответственного нет, то вернется None.
get_operator_name() - для получения имени ответственного оператора. Пример: get_operator_name() Можно использовать для вывода информации клиенту. Если ответственного нет, то вернется None. Если у оператора не назначено имя, то вернется email.
delete_pended_messages() - для удаления всех запланированных сообщений для текущего клиента. По умолчанию удаляет и сообщения, созданные стрелками "Не отменять". Чтобы не отменять сообщения со стрелок "Не отменять" необходимо передать параметр False: delete_pended_messages(False)
set_note(comment) - для добавления комментария к диалогу. Пример: set_note(‘Переделать’)
add_unread(count=1) — для пометки диалога с клиентом как непрочитанного
clear_unread() — для пометки диалога как прочитанного
get_state_id() – для получения id этапа воронки в Salebot SRM
change_state(id этапа воронки) – для перемещения лида в этап воронки по id этапа

Для проверки подписки на Instagram аккаунт

check_insta_subscription() - метод для проверки, подписан ли клиент на ваш Instagram аккаунт или нет.
Работает только на тарифе "Премиум"
Если вам нужно проверить подписку по логину, используйте метод API

Для проверки, есть ли Whatsapp на номере телефона

check_whatsapp(snumber) - метод для проверки, подключен ли на данный номер whatsapp

Для работы с буквами колонок

Если вам надо перевести букву колонки в цифру, можете воспользоваться функцией калькулятора c2n, если нужно перевести цифру в букву, то используйте n2c. Также вы можете прибавлять к буквам колонок смещение через функцию addCols, которая принимает первым параметром строку с буквой колонки, а второй смещение. Передайте отрицательное смещение, чтобы идти влево.
Пример:
Результат работы:

Для работы со списками

inlist(номер списка) - для проверки наличия пользователей в списке
Пример: Ответ = if (inlist(12333) == True, "ты в списке участников", "тебя нет в списке")
add_to_list(номер списка)- для добавления в список
remove_from_list(номер списка) – для удаления из списка
move_to_list(номер списка) – для перемещения в список
При перемещении человек будет удален из всех списков и добавлен в выбранный.
list_size(номер списка) – для подсчета количества людей в списке
lists_joint_count(массив) – для подсчета количества уникальных записей о клиентах, которые находятся в нескольких списках. На вход функция принимает массив с номерами списков. Возвращает число.
lists_joint_count('[1, 2]')

Для работы с задачами

Функции работы с задачами возвращают статус выполнения операции True или идентификатор задачи в случае успеха. В случае неудачи возвращается False или None.
Salebot работает с датами в формате "dd.mm.yyyy", а с временем в формате "HH:MM"
create_task('email ответственного', 'название задачи', 'дата выполнения', 'описание', 'время выполнения') – для создания задачи
Параметр "Время выполнения" — дополнительный, его указывать необязательно.
Функция возвращает номер созданной задачи. Остальные функции работают с этим номером.
update_task('номер задачи','email ответственного', 'название задачи', 'дата выполнения', 'описание', 'время выполнения') - для обновления задачи
Параметр "Время выполнения" — дополнительный, его указывать необязательно.
done_task('номер задачи')- для пометки о выполнении задачи
delete_task('номер задачи') – для удаления задачи

Для работы с сообщениями в Телеграм и Вконтакте

remove_last_message() – для удаления последнего сообщения от бота
Позволяет делать изменяющиеся сообщения.
Работает в Телеграм и Вконтакте.
last_message_id()- для получения номера последнего сообщения от бота
Если были отправлены картинка и текст, номера сообщений разделены символом подчеркивания

Для работы с координатами

distance(lat1, lon1, lat2, lon2)- для подсчета расстояния между двумя координатами в километрах
Пример: distance(52.2296756, 21.0122287, 52.406374, 16.9251681)
Результат: 278.5459739738798

Для сортировки массивов и словарей

Salebot может сортировать массивы, словари по значению и словари по ключу в возрастающем и убывающем порядке.
sort(mass, b) сортировка массива или словаря. Принимает 2 параметра. JSON для сортировки и направление сортировки. Второй параметр не обязателен, по умолчанию сортирует по возрастанию (b = False), для сортировки по убыванию нужно передать True.
Результат: [0,0,1,3,4,5,6,7]
Результат: {"Anna":15,"Dima":4,"Sveta":3}
sort_by_value(dict, b) - сортировка словаря по значениям. Принимает 2 параметра. JSON для сортировки и направление сортировки. Второй параметр не обязателен, по умолчанию сортирует по возрастанию(b = False), для сортировки по убыванию нужно передать True.
Результат: {"Sveta":3,"Dima":4,"Anna":15}

Для отправки email

send_email(to_email, subject, message) Первым параметром передается email получателя, вторым заголовок письма, третьим текст письма. send_email('[email protected]', 'Это заголовок', 'А здесь я пишу текст')

Для проверки условия "if": Если

3 параметра: условие, значение если условие верно, значение если условие ложно
Чтобы проверить не пустое ли значение переменной (не равно ли оно None или "") используйте следующую формулу: "#{value}" == "" где value название переменной Например, это может понадобиться при получении данных со стороннего ресурса через запросы.
Пример: ДНИМОЛЧАНИЯ_2 = if(ДНИМОЛЧАНИЯ_2 == 1, 1, 0). В таком случае, если существует переменная ДНИМОЛЧАНИЯ_2 со значением 1, то ее значение так и останется 1, а если она не существует, то будет 0. Удобно использовать перед математическими операциями, чтобы подстраховаться от пустых значений переменных. Или еще пример ИмяКлиента = if(ИмяКлиента == 1, Р1, if(ИмяКлиента == 2, Р2, if(ИмяКлиента == 3, Р3, 7))), где Р1, Р2, Р3 - переменные
Также, можно использовать вложенные if конструкции. Это пригодится, если хотите научить бота подсчитывать сумму заказа, когда стоимость единицы товара зависит от его количества.
Например: Сумма_Заказа = round(if(Количество >=100, if(Количество >=200, if(Количество >=300, if(Количество >=400, if(Количество >=500, if(Количество >=1000, if(Количество >=2000, if(Количество >=3000, if(Количество >=5000, 25*Количество, 30*Количество), 35*Количество), 40*Количество), 45*Количество), 50*Количество), 55*Количество), 60*Количество), 65*Количество), "Не могу посчитать... Вы ошиблись где-то при оформлении заказа. Попробуйте еще раз с самого начала.") * 100) / 100
Максимальная длина выражения: 1000 символов
Результат работы такой формулы представлен на Рисунке 6, а пример заполнения полей - на Рисунке 7:
Рисунок 6
Рисунок 7