+7 495 255 06 20
Войти Начать бесплатно
Сменить регион сайта
Россия (выбрано)
English Казахстан и СНГ

Блок «Программатор»

Блок производит математические и логические операции с числами, строками и переменными из доступных в Конструкторе ботов. Поддерживает код на языке JavaScript.

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

Настройка блока «Программатор»

  1. В Конструкторе ботов выберите «Программатор» и добавьте блок на рабочую область.


     
  2. Нажмите «Настроить конфигурацию». В поле «Код» введите код на языке JavaScript. 


  3. В конце перечислите переменные через запятую в функции save. Переменные должны быть заключены в фигурные, а затем в круглые скобки — ({переменная1, переменная2, переменная3}). Пример: save({a, b, c}).
     
  4. Если код введён с ошибками, они подсветятся в поле «Код». В поле «Отладчик» появится сообщение об ошибке.


  5. Нажмите «Тестирование», чтобы проверить выполнение кода. Результат отобразится в поле «Отладчик».

  6. Если код выполняется без ошибок, нажмите «Сохранить».

Доступные функции

Математические

  • abs(a) — получает абсолютное значение (приводит к положительному числу). Пример: abs(-256) вернет 256;
     
  • ceil(a) — округляет число к большему. Пример: ceil(25.66) вернет 26;
     
  • int(a) приводит числа с дробной частью к целому числу. При этом дробная часть отсекается. Пример: int(1.8) вернет 1;
     
  • is_float(a) — проверяет, является ли строка дробным числом. Пример: is_float(5.5) вернёт True, а is_float(5) — False;
     
  • is_int(b) проверяет, является ли строка целым числом. Пример: is_int(`5`) вернет True, а is_int (0.5) — False;
     
  • max(a, c) ищет максимальное число из перечисленных. Можно ввести неограниченное кол-во чисел. Пример: max(4, 2, 9, 6) вернет 9;
     
  • min(a, c) — ищет минимальное число из перечисленных. Можно ввести неограниченное кол-во чисел. Пример: min(4, 2, 9, 6) вернет 2;
     
  • random(a, c) — получает случайное число. Нужно указать 2 параметра: нижнюю и верхнюю границу. Пример: random(-10,10) вернет любое число из диапазона от -10 до 10, например, 1;
     
  • round(a, b) — округляет число до определенного знака. Нужно указать число, которое нужно сократить, и знак, до которого нужно сократить. Пример: round(1.8888888, 2) округлит до 2-го знака после точки, получится 1.89.

 

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

  • substring(a, b, c) — обрезает сроку. Нужно указать три параметра: исходную строку, количество символов для обрезки слева (> 0) и количество символов для обрезки справа (< 0);
     
  • endswith(a, b)  — проверяет, заканчивается строка заданной подстрокой или нет. Нужно указать параметры: исходная строка — где ищем, подстрока — что ищем;
     
  • startswith(a, b) — проверяет, начинается строка заданной подстрокой или нет. Нужно указать параметры: исходная строка — где ищем, подстрока — что ищем;
     
  • contains(a, b, с) — проверяет, входит ли вторая строка в первую. Нужно указать параметры: исходная строка — где ищем; вторая строка — что ищем; True или False (в кавычках) — нужно ли учитывать регистр;
     
  • len(a) — подсчитывает количество символов в строке;
     
  • concat(a, b) — складывает строки, переданных в параметрах;
     
  • splitter(a, b, c) — разделяет строки на части. Функция возвращает массив элементов. Нужно указать параметры: исходная строка; разделитель строки — может быть любым символом или строкой (нужно заключить в кавычки); максимальное количество элементов;
     
  • lower(a) — приводит строку к нижнему регистру;
     
  • upper(a) — приводит строку в верхний регистр;
     
  • strip(a) — обрезает пробелы по краям строки;
     
  • capitalize(a) — заменяет первый символ строки на тот же символ верхнего регистра;
     
  • title(a) — приводит каждое слово в строке к виду: первая буква заглавная, остальные — строчные;
     
  • replace(a, b, c, d) — заменяет подстроки в строке на другую подстроку. Нужно указать параметры: исходная строка; подстрока, которую будем менять; подстрока, на которую будем менять; количество замен.

 

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

  • findall(/a/g, b, c) — ищет все вхождения группы в строку. Нужно указать параметры: регулярное выражение; строка, в которой происходит поиск; индекс найденного результата. Индекс считается с нуля — первый найденный результат будет иметь индекс 0;
     
  • similar(a, b) — сравнивает строки с учетом описок. Возвращает True, если строки отличаются менее чем на 30%.

 

Для работы с датой и временем

  • addYear(a, b) — добавляет к указанной дате нужное количество лет. Для вычитания используйте отрицательное число. Нужно указать параметры: исходная дата, количество лет. Пример: addYear('23.05.1994', 5) вернёт 23.05.1999;
     
  • addMonth(a, b) — добавляет к указанной дате нужное количество месяцев. Для вычитания используйте отрицательное число. Нужно указать параметры: исходная дата, количество месяцев. Пример: addMonth('23.05.1994', 5) вернёт 23.10.1994;
     
  • addDays(a, b) — добавляет к указанной дате нужное количество дней. Для вычитания используйте отрицательное число. Нужно указать параметры: исходная дата, количество дней. Пример: addMonth('23.05.1994', 5) вернёт 28.05.1994;
     
  • addMinutes(a, b) —  добавляет к указанному времени нужное количество минут. Для вычитания используйте отрицательное число. Нужно указать параметры: исходное время, количество минут. Пример: addMinutes('20:08', 30) вернёт 20:38;
     
  • time_interval(a, b) — проверяет, входит ли текущее время в заданный интервал. Результат выполнения функции True или False. В параметрах нужно указать границы интервала. Пример: сейчас 19:00, time_interval('09:00','18:00'), результат будет — False;
     
  • birthdate(a) — возвращает число дней до ближайшего дня рождения. В параметрах нужно указать дату рождения человека. Пример: сегодня 04.04.2024, birthdate('28.04.1994') вернет 24 дня;
     
  • weekday_date(a) — возвращает дату ближайшего дня недели. Принимает два параметра: день недели, дату которого нужно определить (от 1 до 7); второй параметр — True или False, показывает, возвращать ли сегодняшнюю дату, если нужный день сегодня. Второй параметр можно не указывать, по умолчанию False. 

    Пример: сегодня вторник 09.04.2024, weekday_date(4) вернёт 11.04.2024;
     
  • month_date(a) — возвращает ближайшую дату на указанный в параметре день месяца. Принимает два параметра: день месяца, для которого нужно определить ближайшую дату (от 1 до 31); второй параметр — True или False, показывает, возвращать ли сегодняшнюю дату, если нужный день сегодня. Второй параметр можно не указывать, по умолчанию False. 

    Пример: сегодня 4 марта 2024 года, month_date(5) вернет 05.04.2024;
     
  • convert_datetime(a, b, c) — конвертирует дату и время. Нужно 3 параметра: дата, формат входной строки, формат результата. Пример: convert_datetime(`2011-11-03`, `%Y-%m-%d`; `%Y/%m/%d`) вернет 2011/11/03;
     
  • get_datetime(a) — получает текущее время в определенном формате. Нужно указать в каком формате вернуть время. Пример: сегодня 05.04.2024, get_datetime('%Yгод %mмесяц %dдень') вернёт 2024.04.05.

Обработка ошибок с помощью try...catch

Чтобы обработать ошибки в коде, можно использовать конструкцию try...catch. При возникновении ошибки в блоке try запустится выполнение блока catch.

В блоке try нужно написать код, а в блоке catch — что делать, если возникнет ошибка:

  1. Код выполняется внутри блока try.
  2. Если ошибок нет, то блок catch игнорируется.
  3. Если возникнет ошибка, то начинает работать блок catch.
  4. Переменная err будет содержать сообщение об ошибке.


Пример сценария в Конструкторе ботов

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

В таком случае код Программатора будет выглядеть так:

let a = '{{str1}}' 
r3 = birthdate(a) 
sale = random(11111, 99999) 
save({r3, sale})

В приведенном ниже сценарии:

1. Клиенту предлагается тип подарка: купон или скидка на день рожденья. В блоке «Условие» указаны два варианта развития сценария:

2. Если клиент пишет «день рождения», ему отправляется сообщение с запросом даты рождения.

3. После получения сообщения с датой, блок «Программатор» вычисляет количество дней до нее и вносит результат в строковую переменную '{{str1}}'. Также генерирует случайное число для скидки в переменную '{{sale}}' и количество дней до скидки в '{{r3}}'.

4. Блок «Изменить переменную» заменяет значение даты рождения.

5. Клиенту отправляется сообщение с количеством дней до активации скидки — его дня рождения. Значение берется из переменной '{{r3}}'.

6. В CRM-системе создается задача — отправить клиенту скидку в день рождения.

7. Если клиент пишет «купон», ему отправляется сообщение про получение стандартной скидки 15%;

8. В CRM-системе создается задача — отправить купон на скидку.

9. В конце обоих веток сценария происходит возврат в начало.

Видео

Наглядно о работе с блоком смотрите в видео инструкции:

Оставить заявку на услуги интегратора