Spintax в MAX Sender — примеры, перестановки и подстановки
MAX SenderSpintax — это способ написать один шаблон так, чтобы на выходе расширение каждый раз собирало немного разный текст. В MAX Sender Spintax работает не «вообще как где-то принято», а по конкретным правилам из Spintax.js. Ниже — разбор именно этого поведения: что реально поддерживается, что происходит с переменными, как работают перестановки и как читать сложные шаблоны.
Если вы только начинаете, сначала посмотрите поле «Текст сообщения» и предпросмотр, а потом возвращайтесь сюда за расширенными примерами.
1. Что такое Spintax простыми словами
Вместо одного жёсткого текста вы пишете шаблон с вариантами, а расширение при каждой генерации выбирает из него один из возможных результатов.
Самый простой пример:
{Здравствуйте|Добрый день|Привет}!
Результат может быть таким:
Здравствуйте!Добрый день!Привет!
Это удобно, когда вы не хотите отправлять всем абонентам одно и то же сообщение слово в слово.
2. Самая базовая конструкция {вариант1|вариант2}
Главная конструкция Spintax в этом проекте — фигурные скобки с вариантами через вертикальную черту:
{Привет|Здравствуйте|Добрый день}
Из этой группы берётся один случайный вариант.
Ещё примеры:
{Скидка|Акция|Спецпредложение}
{сегодня|до конца дня|только сейчас}
Можно писать целые фразы:
{Здравствуйте!|Добрый день!|Приветствуем вас!}
Что важно:
- выбирается только один вариант;
- пустые варианты после перемешивания отбрасываются;
- повторяющиеся варианты технически допустимы, но смысла в них обычно нет.
3. Переменные {{...}} из списка абонентов
Кроме Spintax, в шаблоне можно использовать переменные из списка абонентов:
Здравствуйте, {{External Number Name}}!
Во время отправки или предпросмотра расширение подставляет туда значение из строки текущего получателя.
Пример:
Здравствуйте, {{External Number Name}}! Ваш номер: {{External Number}}.
Если у строки есть такие значения:
External Number Name = ИванExternal Number = 79991234567
то результат будет:
Здравствуйте, Иван! Ваш номер: 79991234567.
Переменные лучше вставлять через кнопку «Переменные», чтобы не ошибиться в названии колонки.
4. Что будет, если переменная пустая или неизвестная
Здесь у движка есть важная особенность.
Если переменная известная, но ячейка пустая
Шаблон:
Здравствуйте, {{External Number Name}}!
Если имя у получателя пустое, движок убирает сам плейсхолдер и старается подчистить лишние пробелы и запятые.
То есть он не оставит в сообщении буквальный текст {{External Number Name}}.
Если переменная вообще неизвестная
Шаблон:
Здравствуйте, {{FirstName}}!
Если в активном списке нет колонки FirstName, то поведение зависит от контекста:
- при обычной генерации неизвестный плейсхолдер в итоге вычищается;
- в предпросмотре такие плейсхолдеры специально сохраняются и показываются как предупреждение:
{{переменной FirstName нет в активном списке рассылки}}
Именно поэтому предпросмотр полезен: он помогает увидеть ошибку в шаблоне до запуска рассылки.
5. Перестановки через [+разделитель+вариант1|вариант2|...]
Это самая необычная и полезная часть текущего Spintax-движка.
Формат такой:
[+РАЗДЕЛИТЕЛЬ+вариант1|вариант2|вариант3]
Что делает эта конструкция:
- берёт все варианты;
- перемешивает их порядок случайно;
- соединяет их через указанный разделитель.
Простой пример:
[+, +кофе|чай|выпечка]
Возможные результаты:
кофе, чай, выпечкачай, выпечка, кофевыпечка, кофе, чай
Здесь происходит не выбор одного варианта, а именно перестановка всего списка.
Это удобно для перечислений, когда вы хотите менять порядок пунктов, но оставить все элементы в тексте.
Ещё примеры:
[+ / +доставка|самовывоз|онлайн-оплата]
[+; +утро|день|вечер]
[+\n+Telegram|WhatsApp|MAX]
Последний пример даст список в случайном порядке, по одному элементу на строку.
6. Чем выбор отличается от перестановки
Очень важно не путать две конструкции:
Выбор одного
{кофе|чай|выпечка}
Результат:
кофеиличайиливыпечка
Перестановка всех
[+, +кофе|чай|выпечка]
Результат:
кофе, чай, выпечкаиличай, выпечка, кофеиливыпечка, кофе, чай
То есть:
{...|...}= один из вариантов[+...+...|...]= все варианты, но в случайном порядке
7. Вложенность и порядок разбора
Движок поддерживает вложенные конструкции, но разбирает их по этапам.
Например:
[+, +{здравствуйте|приветствую}|{{External Number Name}}]
Что происходит:
- сначала защищаются переменные
{{...}}, чтобы они не спутались с обычными фигурными скобками; - потом разбираются простые
{...|...}; - потом разбираются перестановки
[+...+...|...]; - в конце переменные возвращаются обратно и подставляются.
Поэтому вложения вида «внутри перестановки сначала выбрать один вариант приветствия, а потом перемешать его с именем» здесь работают нормально.
Разбор идёт в цикле, пока шаблон меняется, но не больше 50 итераций. Это защитный предел, чтобы не зациклиться на сложных или кривых шаблонах.
8. Что делает !!
Конструкция !! в этом проекте нужна для принудительного перевода следующего символа в верхний регистр.
Пример:
!!привет
Результат:
Привет
Ещё пример:
!!это тест
Результат:
Это тест
Перед этим движок ещё убирает случаи вроде !! или !!,, чтобы !! применялся именно к букве, а не к пробелу или запятой.
9. Что делает \n
В шаблоне \n означает перевод строки.
Пример:
Здравствуйте!\nЭто вторая строка.
Результат:
Здравствуйте!
Это вторая строка.
Это удобно для коротких многострочных сообщений.
10. Разбор шаблона !![+, +{здравствуйте|приветствую}|{{External Number Name}}]{! |. |\n}Это я.
Теперь разберём твой пример целиком:
!![+, +{здравствуйте|приветствую}|{{External Number Name}}]{! |. |\n}Это я.
Он состоит из трёх частей:
Часть 1. !!
Сделает первую букву итоговой фразы заглавной.
Часть 2. [+, +{здравствуйте|приветствую}|{{External Number Name}}]
Это перестановка из двух элементов:
{здравствуйте|приветствую}— случайное приветствие;{{External Number Name}}— имя получателя.
Потом эти два элемента соединяются через разделитель , .
То есть возможны варианты:
здравствуйте, Иван
приветствую, Иван
Иван, здравствуйте
Иван, приветствую
Часть 3. {! |. |\n}
После первой части выбирается один вариант окончания:
!.- перевод строки
\n
Часть 4. Это я.
Финальная постоянная фраза.
11. Возможные результаты для этого шаблона
Если {{External Number Name}} = Иван, то шаблон может дать, например:
Здравствуйте, Иван! Это я.
или
Приветствую, Иван. Это я.
или
Иван, здравствуйте! Это я.
или
Иван, приветствую.
Это я.
Почему первое слово с большой буквы:
- сначала собирается строка;
- потом
!!поднимает первый символ в верхний регистр.
Почему иногда имя может стоять первым:
- потому что используется перестановка, а не просто приветствие с подстановкой имени в одном фиксированном месте.
12. Простые и общедоступные примеры
Ниже набор шаблонов, которые можно использовать почти сразу.
Приветствие по имени
Здравствуйте, {{External Number Name}}!
Несколько приветствий
{Здравствуйте|Добрый день|Привет}, {{External Number Name}}!
Случайная скидка
Здравствуйте, {{External Number Name}}! Для вас скидка {10|15|20}%.
Перечень услуг в случайном порядке
Мы предлагаем [+; +доставку|самовывоз|онлайн-оплату].
Возможные результаты:
Мы предлагаем доставку; самовывоз; онлайн-оплату.Мы предлагаем онлайн-оплату; доставку; самовывоз.
Многострочное сообщение
Здравствуйте, {{External Number Name}}!\nНапоминаем о вашей записи.\nОтветьте, если нужно перенести время.
Сообщение с естественным началом
!!{здравствуйте|добрый день}, {{External Number Name}}!
13. Более расширенные примеры
Пример 1. Короткая акция
{Здравствуйте|Добрый день}, {{External Number Name}}! Сегодня действует скидка {10|15|20}% на {кофе|десерты|выпечку}.
Пример 2. Список преимуществ в разном порядке
Здравствуйте! У нас есть [+; +доставка|самовывоз|оплата при получении].
Пример 3. Сообщение с именем и свободным порядком обращения
!![+, +{{External Number Name}}|{здравствуйте|добрый день}]! Рады вас видеть.
Возможные результаты:
Иван, здравствуйте! Рады вас видеть.Добрый день, Иван! Рады вас видеть.
Пример 4. Многострочное напоминание
Здравствуйте, {{External Number Name}}!\n{Напоминаем|Сообщаем}, что ваша запись подтверждена.\nОтветьте на это сообщение, если хотите перенести время.
Пример 5. Нейтральное сообщение без имени
{Здравствуйте|Добрый день}! Для вас доступно {новое предложение|обновление условий|специальное предложение}.
14. Что лучше не делать
Вот типичные ошибки:
Не писать переменные вручную с ошибкой
Плохо:
{{Externel Number Name}}
Лучше вставлять через кнопку «Переменные».
Не путать выбор и перестановку
Если вы хотите одно приветствие, пишите:
{Здравствуйте|Добрый день}
Если вы хотите все элементы в случайном порядке, пишите:
[+, +Здравствуйте|Добрый день]
Но во втором примере оба слова попадут в итог, просто в разном порядке. Это уже другой смысл.
Не усложнять без предпросмотра
Если шаблон содержит и переменные, и вложенные конструкции, и переносы строк, обязательно проверяйте его через предпросмотр несколько раз подряд.
15. Как проверять шаблон перед рассылкой
Надёжный рабочий порядок такой:
- Создайте текст на вкладке «Сообщения».
- Вставьте переменные через кнопку «Переменные».
- Откройте «Предпросмотр».
- Нажмите «Обновить» несколько раз.
- Проверьте:
- корректно ли подставляется имя;
- не пропадают ли слова неожиданно;
- не появляется ли предупреждение про неизвестную переменную;
- хорошо ли читается текст в разных вариантах.
Только после этого стоит включать шаблон в проект и запускать реальную рассылку.
16. Краткая памятка
Самые важные конструкции:
| Конструкция | Что делает |
|---|---|
{a|b|c} | выбирает один вариант |
[+разделитель+a|b|c] | берёт все варианты и перемешивает их |
{{Name}} | подставляет значение из списка абонентов |
!! | делает следующую букву заглавной |
\n | перенос строки |
Если нужно быстро начать, используйте такой безопасный шаблон:
{Здравствуйте|Добрый день}, {{External Number Name}}! Напоминаем о вашей записи.
А если хотите более «живой» текст — уже потом добавляйте перестановки и многострочные варианты.