Как использовать модификаторы переменных в чат-ботах

В чат-ботах SendPulse вы можете использовать модификаторы для переменных, которые преобразовывают их значение по заданным вами правилам. К примеру, форматировать текст, даты, номера телефонов и URL-адреса.

Рассмотрим, какие бывают модификаторы и как их использовать в чат-ботах.

Синтаксис модификаторов

Вы можете изменять данные с помощью модификатора {{ var_name | function(parameter="value") }}, где:

var_name Название переменной.
function() Функция модификатора.
parameter Параметр функции.
value Значение параметра.

Вы можете использовать синтаксис модификаторов по нескольким направлениям: дата, регистр слов, длина строк, номер телефона и URL-адреса.

Модификаторы строк

str_to_lower() Переводит все символы в нижний регистр.

Например: переменная title = "ЗАГЛАВИЕ".

{{ title | str_to_lower() }}

Результат: заглавие.

str_to_upper() Переводит все символы в верхний регистр.

Например: переменная title = "заглавие".

{{ title | str_to_upper() }}

Результат: ЗАГЛАВИЕ.

str_capitalize() Преобразовывает в строку с первым заглавным символом.

Например: переменная title = "заглавие".

{{ title | str_capitalize() }}

Результат: Заглавие.

str_length() Возвращает длину строки.

Например: title = "заглавие".

{{ title | str_length() }}

Результат: 8.

str_limit(limit="100", end="...") Обрезает строку до указанной длины.
  • limit — необязательный параметр, определяет максимальную длину строки (по умолчанию 100 символов).
  • end — необязательный параметр, передает символы в конце ограниченной строки (по умолчанию "...").

    Вы можете ограничить количество символов до 1000 при отправке текста, чтобы сообщение точно было доставлено. Для этого пропишите {{ info | str_limit(limit="1000") }}.

implode(separator="") Объединяет элементы массива с помощью строки separator.
  • separator — необязательный параметр (по умолчанию пустая строка. Например: {{ $["list"] | implode(separator=", ") }} выведет через запятую данные из массива, который получен после запроса внешних данных.
array_get(key="*.keyname")

Создает массив из значений указанных ключей массива объектов.

Извлекает значение из вложенного массива или объекта, используя точечную нотацию — один из способов доступа к свойствам объекта и значениям массива, где фигурирует точка и *, как срез с массива и номер элемента в массиве, то есть, может быть такая адресация: array.*.object.id.

Например, вам необходимо получить имена из массива. Тогда можете использовать {{ $["users"] | array_get(key="*.name") | implode(separator="\n ") }}, чтобы вывести построчно поля name из массива объектов.

str | match(pattern="/.*some(regex).*/")

Выводит строку, соответствующую шаблону выражения. Если в регулярном выражении есть группа (), то выводит первую из них.

Например, чтобы вывести часть ссылки https://calendly.com/d/1n7-w04-ars/my-lesson между d/ и /, укажите {{ link | match(pattern="/.+\/d\/(.+)\/.+/") }}

Результат: 1n7-w04-ars.

str | match_all(pattern="/.*(some)\s(regex).*/")

Выводит массив строк, соответствующую шаблону выражения. Если в регулярном выражении есть группы, то выводит массив групп.

Например, чтобы вывести часть ссылки https://calendly.com/d/1n7-w04-ars/my-lesson между d/ и /, а затем выбрать первое из полученных значений, укажите {{ link|match_all(pattern="/.+\/d\/(.+)\/(.+)/")| array_get(key="0") }}

Результат: 1n7-w04-ars.

str | explode(separator="/")

Разбивает строку на массив по сепаратору.

Например, чтобы разбить строку https://calendly.com/d/1n7-w04-ars/my-lesson по символу / и извлечь пятый элемент этого массива, укажите {{ link | explode(separator="/")|array_get(key="4") }}

Результат: 1n7-w04-ars.

str | substr(start="", length="")

Выводит строку начиная с указанного символа и указанной длиной.

Например, чтобы вывести часть строки, начиная с 23-го символа, и взять следующие 11 символов, укажите {{ link | substr(start="23", length="11") }}

Результат: 1n7-w04-ars.

str | preg_replace()

Заменяет части текста в строке, которые соответствуют определенному правилу, на указанный текст или текстовые строки. Это полезно для автоматизации процесса замены или удаления определенных элементов текста в больших объемах данных.

Использование для одной строки:

{{ str | preg_replace(pattern="/\d+/", replacement="*", limit="4") }}

Функция применяется непосредственно к строке (STRING). Она заменяет все вхождения определенного шаблона (/\d+/) на указанную замену (*). Параметр limit указывает максимальное количество замен, которые следует выполнить.

Например, если входная строка — Hello123World456, функция заменит все цифры звездочками, что приведет к Hello***World***.

Модификаторы чисел и дат

number_round(precision="0", mode="ROUND_HALF_UP") Округляет число до указанной точности precision (количество цифр после запятой).

precision может быть отрицательным или нулём (по умолчанию 0).

Если precision положительный, число округляется до точности precision цифр после запятой.

Если precision отрицателен, число округляется до точности precision цифр перед десятичной запятой, то есть до ближайшего кратного pow(10, -precision). Например, для precision равной -1 число округляется до десятков, для precision равной -2 до сотен.

Возможные значения режима округления (mode) можете детальнее узнать из документации PHP.

number_format(decimals="0", decimal_separator=".", thousands_separator=",") Форматирует число сгруппированными тысячами и десятичными цифрами.
  • decimals — устанавливает число знаков после запятой. Если 0, decimal_separator опускается в возвращаемом значении.
  • decimal_separator — устанавливает разделитель дробной части.
  • thousands_separator — устанавливает разделитель тысяч.

Например, чтобы большие числа воспринимались легче, можно разделить тысячные запятыми. Для этого пропишите number_format (thousands_separator=",").

date(from_format="d.m.Y", format="d.m.Y", modify="") Форматирует строку с датой согласно переданному формату.
  • from_format — необязательный параметр, указывает с какого формата преобразовывать данные даты. (по умолчанию: d.m.Y).
  • format — необязательный параметр, указывает, в какой формат преобразовывать данные даты (по умолчанию: d.m.Y).
  • modify — необязательный параметр, модифицирует саму дату, например, +1 day добавит один день от изначальной даты.

Поддерживаются модификаторы: +/-day(s), +/-month(s), +/-year(s).

Детальнее о модификаторах дат читайте в документации PHP.

Например, если вы хотите получить дату в формате название месяца и число, можете задать {{ signup_date | date(format="F jS")}}

Результат: January 5th.

date_time(from_format="d.m.Y H:i", format="d.m.Y H:i", modify="")

Возвращает при выводе значения с типом date_time.

from_format — необязательный параметр, указывает, из какого формата преобразовывать данные даты и времени.

format — необязательный параметр, указывает, в каком формате выводятся данные даты и времени.

modify — необязательный параметр, меняет саму дату, например, +1 hour добавит один час к начальным дате и времени.

Поддерживаются модификаторы: +/-minute(s), +/-hour(s), +/-day(s), +/-month(s), +/-year(s)

Другие модификаторы

phone(formig-fix-handle_api_exceptionat="INTERNATIONAL")

Форматирует строку с номером телефона согласно переданному формату. format — необязательный параметр, указывает, в какой формат преобразовывать номер телефона (по умолчаниюINTERNATIONAL)

Возможные варианты формата:

  • INTERNATIONAL (+380 61 333 3333)
  • NATIONAL (061 33 3333)
  • E164 (+380613333333)
  • RFC3966 (tel:+380-61-333-3333)
urlencode() Возвращает строку, в которой все не цифро-буквенные символы, кроме -_. должны быть заменены знаком процента (%), за которым следует два шестнадцатеричных числа, а пробелы закодированы как знак сложения (+). Строка кодируется тем же способом, что и POST-данные веб-формы, то есть по типу контента application/x-www-form-urlencoded.

Модификатор можно использовать для передачи полученных от подписчика значений далее в Запрос API, например, как get-параметр.

Особенности использования

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

В элементе Сообщение блока цепочки или кампании, а также во всех остальных элементах где можно вставлять и использовать переменные вы можете применять к ним модификаторы. Чаще всего переменные получают через функцию Ввод пользовательских переменных или из ответа элемента Запрос API.

При вызове функция модификатора, если она не принимает параметры, скобки "()" можно упускать.

Если имя переменной содержит символы }} и | , то они должны экранироваться \}\} и \| в имени.

Если значение параметра содержит символы }}, | и " , то они должны экранироваться \}\}, \| и \". Значение параметра всегда задается в "" как строка.

Возможные ошибки

Если модификатор не может обработать переменную, то он ее возвращает в таком же виде, как и была до применения модификатора. Например, если к переменной имя = 'Ivan' применить модификатор {{ имя|phone(format="INTERNATIONAL") }}, мы получим ответ Ivan, поскольку переменная не является телефоном.

Если модификатор нельзя применить к переменной, то пользователь не увидит ошибку.

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

Комбинирование модификаторов

Вы можете комбинировать несколько модификаторов, например:

{{имя_переменной|имя_модификатора1(имя_параметра1="значение", имя_параметра2="значение", имяпараметра3="значение",)|имя_модификатора2()|имя_модификатора_N()}}

Например, если вы хотите обрезать длину строки переменной до 10 символов, а потом преобразовать все символы строки в верхний регистр то данное выражение будет иметь следующий вид: {{ String | str_limit(limit="10") | str_to_upper }}.

Как использовать модификаторы в конструкторе чат-ботов

Вы можете использовать модификаторы в следующих блоках:

Блок Сообщение В текстовом блоке — для отправки модифицированного сообщения.
Блок Запрос API В поле ссылки или тела запроса — для отправки модифицированного запроса.
Блок Действие В поле установки значения переменной в действии Установить переменную — для сохранения модифицированной переменной.

Рассмотрим несколько примеров использования модификаторов в чат-ботах SendPulse.

Пример форматирования имени подписчика

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

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

Нажмите Применить и добавьте следующий элемент Сообщение.

Подписчик может ввести имя с маленькой буквы, но мы хотим обращаться к нему правильно, поэтому в тексте используем модификатор переменной str_title().

Вот как это выглядит у подписчика.

Пример форматирования даты

Также рассмотрим вариант, если посетитель хочет забронировать у вас столик на конкретную дату. При этом чтобы клиенту после выбора даты пришло подтверждение о записи.

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

Нажмите Применить и добавьте следующий элемент Сообщение.

Мы хотим, чтобы дата бронирования всегда отображалась в одном формате, поэтому добавляем модификатор {{ order_date | date(format="d.m.Y") }}.

Вот какой ответ придет пользователю, когда он выберет дату.

Пример создания ссылки в Google Календаре

Если вы хотите предложить пользователю запланировать событие в календаре, можно добавить доступные временные слоты с помощью кнопок или быстрых ответов, или предложить ввести собственные дату и время в элементе Сообщение.

Сохраните полученное значение в переменной типа Дата и время.

Теперь, чтобы получить ссылку на создание встречи в Google Календаре, задайте в элементе строку:

https://www.google.com/calendar/render?action=TEMPLATE&text={{title|urlencode()}}&dates={{booked_datetime|date_time(format="YmdTHi00", modify="-2 hours")}}Z%2F{{booked_datetime|date_time(format="YmdTHi00", modify="-1 hours")}}Z&ctz=Europe%2FKyiv

Где title – переменная из аудитории чат-бота для названия встречи.

booked_datetime – переменная для выбранной даты и времени начала встречи.

Ymd — год, месяц и день, указанные без пробелов.

T — статичный разделитель даты и времени.

Hi — часы и минуты без пробелов.

00 — статично заданные секунды.

Первая дата и время — время старта встречи с поправкой на часовой пояс (-2 часа для киевского времени). Вторая дата — окончание через час.

Z — указатель даты в часовом поясе UTC.

ctz=Europe%2FKyiv — указатель часового пояса, в котором создается событие.

Предположим пользователь укажет дату и время: 25.02.2023 11:00.

В таком случае, чат-бот сформирует ссылку вида:

https://www.google.com/calendar/render?action=TEMPLATE&text=%D0%9F%D1%80%D0%B5%D0%B7%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8F+%C2%ABUnidragon%C2%BB&dates=20230225T090000Z%2F20230225T100000Z&ctz=Europe%2FKyiv

И выведет в диалоге как часть сообщения.

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

    Оцените, насколько полезна статья "Как использовать модификаторы переменных в чат-ботах"

    Оценка: 5 / 5 (7)

    Назад

    Как перенести цепочку чат-бота из одного мессенджера в другой

    Далее

    Как использовать регулярные выражения в чат-ботах

    Популярное в нашем блоге

    Создайте собственный чат-бот