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

В чат-ботах 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("\n") }}, чтобы вывести построчно поля name из массива объектов.

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

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.

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

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 }}.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Оценка: 5 / 5

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

    Попробуйте бесплатный бот для рассылок в Facebook Messenger