Как использовать модификаторы переменных в чат-ботах
В чат-ботах SendPulse вы можете использовать модификаторы для переменных, которые преобразовывают их значение по заданным вами правилам. К примеру, форматировать текст, даты, номера телефонов и URL-адреса.
Рассмотрим, какие бывают модификаторы и как их использовать в чат-ботах.
Синтаксис модификаторов
Вы можете изменять данные с помощью модификатора {{ var_name | function(parameter="value") }}
, где:
var_name |
Название переменной. |
function() |
Функция модификатора. |
parameter |
Параметр функции. |
value |
Значение параметра. |
Вы можете использовать синтаксис модификаторов по нескольким направлениям: дата, регистр слов, длина строк, номер телефона и URL-адреса.
Модификаторы строк
|
Переводит все символы в нижний регистр.
Например: переменная title = "ЗАГЛАВИЕ".
Результат: заглавие. |
|
Переводит все символы в верхний регистр.
Например: переменная title = "заглавие".
Результат: ЗАГЛАВИЕ. |
|
Преобразовывает в строку с первым заглавным символом.
Например: переменная title = "заглавие".
Результат: Заглавие. |
|
Возвращает длину строки.
Например: title = "заглавие".
Результат: 8. |
|
Обрезает строку до указанной длины.
|
implode(separator="") |
Объединяет элементы массива с помощью строки separator .
|
array_get(key="*.keyname") |
Создает массив из значений указанных ключей массива объектов. Извлекает значение из вложенного массива или объекта, используя точечную нотацию — один из способов доступа к свойствам объекта и значениям массива, где фигурирует точка и *, как срез с массива и номер элемента в массиве, то есть, может быть такая адресация: Например, вам необходимо получить имена из массива. Тогда можете использовать |
str | match(pattern="/.*some(regex).*/") |
Выводит строку, соответствующую шаблону выражения. Если в регулярном выражении есть группа Например, чтобы вывести часть ссылки Результат: |
str | match_all(pattern="/.*(some)\s(regex).*/") |
Выводит массив строк, соответствующую шаблону выражения. Если в регулярном выражении есть группы, то выводит массив групп. Например, чтобы вывести часть ссылки Результат: |
str | explode(separator="/") |
Разбивает строку на массив по сепаратору. Например, чтобы разбить строку Результат: |
str | substr(start="", length="") |
Выводит строку начиная с указанного символа и указанной длиной. Например, чтобы вывести часть строки, начиная с 23-го символа, и взять следующие 11 символов, укажите Результат: |
|
Заменяет части текста в строке, которые соответствуют определенному правилу, на указанный текст или текстовые строки. Это полезно для автоматизации процесса замены или удаления определенных элементов текста в больших объемах данных.
Использование для одной строки:
Функция применяется непосредственно к строке ( Например, если входная строка — |
Модификаторы чисел и дат
number_round(precision="0", mode="ROUND_HALF_UP") |
Округляет число до указанной точности precision (количество цифр после запятой).
Если Если Возможные значения режима округления (mode) можете детальнее узнать из документации PHP. |
number_format(decimals="0", decimal_separator=".", thousands_separator=",") |
Форматирует число сгруппированными тысячами и десятичными цифрами.
Например, чтобы большие числа воспринимались легче, можно разделить тысячные запятыми. Для этого пропишите |
date(from_format="d.m.Y", format="d.m.Y", modify="") |
Форматирует строку с датой согласно переданному формату.
Поддерживаются модификаторы: Детальнее о модификаторах дат читайте в документации PHP. Например, если вы хотите получить дату в формате название месяца и число, можете задать Результат: January 5th. |
date_time(from_format="d.m.Y H:i", format="d.m.Y H:i", modify="") |
Возвращает при выводе значения с типом
Поддерживаются модификаторы: |
Другие модификаторы
phone(formig-fix-handle_api_exceptionat="INTERNATIONAL") |
Форматирует строку с номером телефона согласно переданному формату. Возможные варианты формата:
|
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
И выведет в диалоге как часть сообщения.
Кликнув по ссылке, пользователь получит готовый шаблон встречи в своем календаре.
Обновлено: 23.08.2024
или