Що таке Preprocessor

Визначення

Препроцесор — це механізм для побудови динамічного контенту в листах на основі заздалегідь підготовлених даних: рекомендації в листах, взаємний порядок блоків, випадкова вибірка товарів, актуальні пропозиції для різних категорій користувачів.

З препроцесором усе це можна реалізувати без інтеграції з третім сервісом, рутинного і марного оновлення додаткових полів контакту і використовувати як у масових розсилках, так і в тригерних листах.

Застосування препроцесора

До речі, користуватися персоналізацією можна не тільки в листах, але також у SMS-повідомленнях. 

Можливості препроцесора є дуже широкими і не обмежуються існуючим функціоналом. Ми можемо легко розширювати їх, додаючи нову логіку обробки зовнішніх масивів даних. Тож якщо комусь потрібно "дивне" — пишіть, ми обговоримо ваші потреби й постараємося в найкоротші терміни реалізувати їх.

Підтримувані типи

Зараз для публічного використання доступні такі типи препроцесора:

  • Key 
  • Random

Key-препроцесор

Вибирає з масиву даних структуру за заданим ключем, наприклад  за email, і передає її до шаблону листа перед відправленням. Ви можете підготувати список персональних рекомендацій спеціально для кожного контакту в форматі {email: json з рекомендаціями}, де email постає в ролі ключа. І під час відправлення розсилки для всіх контактів з email зі списку препроцесора буде отриманий свій json, який буде використано в листі.

З таким підходом кожному підписникові можна показувати свій набір рекомендованих товарів, акцій та спеціальних пропозицій.

Приклад файлу:

{
    "example@yoursite.com": [
    {
        "name": "book",
        "price": "11"
    },
    {
        "name": "ball",
        "price": "22"
    }, 
    {
        "name": "game",
        "price": "33"
    }],
    "example-2@yoursite.com": [
    {
        "name": "food",
        "price": "44"
    },
    {
        "name": "drink",
        "price": "55"
    }]
}

Random-препроцесор

Із підготовленого масиву даних вибирає випадкові кілька json-структур і передає їх у лист. Ви напевно чули, що блок у листі з товарними пропозиціями працює дуже добре. Уявіть, що у вас велика контактна база й величезний асортимент товарів. Ви бажаєте, наприклад, запропонувати рюкзаки для школи за дуже привабливою ціною. Якщо вказати якийсь конкретний рюкзак, його швидко розкуплять, тож іншим доведеться відмовляти й пропонувати альтернативу.

У той самий час у вас 100 рюкзаків, однакових за привабливістю та якістю. Можна завантажити їх усі в Random-препроцесор і в кожному листі показувати будь-які випадкові три моделі. Тоді рюкзаки продаватимуться рівномірно і успішність кожної позиції можна буде перевірити за кількістю продажів/переходів, які вони принесли.

Приклад файлу:

{
    "recommendations": [
    {
        "name": "rnd1",
        "price": "11"
    },
    {
        "name": "rnd2",
        "price": "22"
    }, 
    {
        "name": "rnd3",
        "price": "33"
    }]
}

Кількість елементів, яку буде вирахувано, можна вказати в листі двома способами:

а) вказати змінну у велосіті-коді: $forEachLimit=2;

б) не використовувати цикл у велосіті, натомість звертатися до елементів за індексом: $data.get('recommendations').get(0) — тоді буде обчислено максимальний індекс і вирахувано відповідну кількість елементів.

Як це працює

У цьому розділі основний акцент зроблено на технічній складовій реалізації. Якщо ви не програміст і нічого тут не зрозуміли, це не обов'язково — тож не впадайте у відчай. Але щоб отримати уявлення про те, що під капотом, рекомендую ознайомитися з цим розділом.

Щоб механізм препроцесора запрацював, треба налаштувати дві його взаємопов'язані частини. По-перше, створити файл із структурою даних у необхідному для завантаження форматі; по-друге, додати до листа код, за допомогою якого динамічний контент буде згенеровано й підставлено в лист "на льоту" при відправленні.

Препроцесор типу Key дозволяє завантажити персональну добірку товарів для кожного клієнта, тому структура даних має виглядати так:

{“test1@mail.com” : [{...}, {...}], “test2@mail.com” : [{...}, {...}, {...}], “test3@mail.com” : [{...}, {...}]}

де test1@mail.com, test2@mail.com, test3@mail.com — емейл-адреса (або номер телефону) одержувача, кожному з яких відповідає масив даних для підстановки в лист.

Препроцесор типу Random дозволяє вибрати з добірки випадкові структури для підстановки їх у листи для одержувачів. Структура файлу для нього має такий вигляд:

{“test@mail.com” : [{...}, {...}, {...}, {...}, {...}, {...}]},

у цьому випадку емейл можна вказати будь-який — він не має значення; а єдиний масив містить усю добірку даних для випадкового вибору.

Під час відправлення листа препроцесор визначає, яку саме структуру даних передати до листа. Якщо використовується тип Key — передається структура, задана для конкретного отримувача; якщо використовується тип Random — структура визначається випадково. Результуючий масив даних можна використовувати в листі за допомогою спеціальних інструкцій, заданих у вигляді коду. Ці інструкції містять умовні оператори й цикли, що дозволяє в досить гнучкий спосіб відобразити динамічний контент у тілі листа.

Як завантажити файл для препроцесора

Є два варіанти передачі файлів із даними до системи.

Варіант 1. За допомогою API

Механізм передачі файлу за API, який дозволяє завантажити файл із даними до системи, має такий вигляд:

1. Завантажити файл, який містить динамічний контент у форматі json, для підстановки в лист за допомогою велосіті (API методом POST /v1/preprocessor/file/upload). У відповіді на цей запит повертається ідентифікатор файлу, який надалі можна використовувати для його оновлення.

2. Оновити вже завантажений файл (API метод POST /v1/preprocessor/file/{id}).

3. Отримати статус завантаженого/завантажуваного файлу (API метод GET /v1/preprocessor/file/{id}/status).

4. Вибрати файл у листі й використовувати підстановку контенту під час розсилок або в тригерних одиночних (IMCallout — сценарій або метод smartsend).

Час від часу можна оновлювати файл, проте ані лист, ані сценарій змінювати не треба. Після перезаливання файлу автоматично почнеться використання нового контенту замість старого.

Варіант 2. В особистому кабінеті

Щоб завантажити файл через особистий кабінет, виконайте такі дії:

  • У вашому акаунті eSputnik увійдіть до налаштувань;

    Налаштування в особистому кабінеті

  • Виберіть вкладку "Препроцесор" і натисніть кнопку "Завантажити"

Завантаження файлу preprocessor

  • Виберіть тип препроцесора. Для прикладу виберемо тип Key (налаштування препроцесора з типом Random відбуватиметься аналогічно).

check_preprocessor_type

  • Встановіть термін зберігання у днях. За замовчуванням це значення дорівнює 10 дням, максимум — 60 дням. Після закінчення цього часу файл буде видалено з системи та зі списку доступних файлів.
  • Перетягніть файл у цю область або клікніть для завантаження з комп'ютера для вибору файлу препроцесора. Файл має бути у форматі json, zip або tar.gz. Максимальний розмір файлу — 50 Гб.

check_file_preprocessor

  • Потім натискаємо "Почати завантаження"

Завантаження в eSputnik файлу preprocessor

Про успішне завантаження файлу вас буде поінформовано повідомленням в особистому кабінеті й поштою.

Як створити лист із використанням препроцесора

Для додавання динамічного контенту до листа використовується спеціальний процесор шаблонів — Apache Velocity. Саме він дозволяє реалізувати умовні оператори, цикли та інші операції з даними безпосередньо в тілі листа. Весь динамічний контент, доступний при відправленні, знаходиться в спеціальній системній змінній $data. Після завантаження файлу його треба вибрати під час формування листа. Для цього:

  • після створення листа в редакторі повідомлень натисніть три крапки і клікніть "Вибрати обробник";

Показати налаштування редактора

  • у нас уже вибрано тип препроцесора (у цьому прикладі вибраний тип Random; для додавання файлу препроцесора типу Key здійснюються аналогічні дії);

Вибір типу препроцесора

  • залишається тільки вибрати завантажений на попередньому етапі файл.

Додавання файлу препроцесора до листа

Таким чином, імпортований на попередньому етапі файл буде використаний під час відправлення поточного листа.

Визначений препроцесором масив даних розміщується в масиві з назвою "recommendations". Щоб отримати до нього доступ, використовуйте таку конструкцію:


$data.get(‘recommendations’)

Щоб організувати цикл за цим масивом, пишіть так:
#foreach($item in $data.get(‘recommendations’))
$item.get(‘name’)

#end

Назва змінної $item може бути довільною, а от поле з назвою "name" має бути в кожного елемента у файлі з даними, якщо ви збираєтеся звернутися до нього в листі за такою назвою.

Умовну операцію здійснити теж нескладно:


#if($item.get(‘discount’) == 0)
    …
#else
    …
#end

Замість трикрапок ви можете в обох випадках підставити довільний фрагмент html-коду (дотримуючись при цьому його загальної цілісності в межах листа).

Якщо у вас виникнуть проблеми з формуванням velocity-коду в листі або ви маєте запитання щодо складніших прикладів його використання, аніж описані в цьому розділі, — звертайтеся до нашої служби підтримки support@esputnik.com. Ми із задоволенням надамо допомогу й поділимося знаннями.

Як протестувати дані для розсилок

Із доступних можливостей для тестування можемо запропонувати розсилку тестовій групі. Для препроцесора типу Key вам треба сформувати групу з кількох контактів, емейли яких знаходяться у файлі з даними; потім вибрати потрібний файл у повідомленні й запустити розсилку за цією групою. У випадку з препроцесором типу Random немає причин додатково турбуватися щодо наявності адрес у файлі — можна тестувати за будь-якими адресами.

Приклади використання

Звертання до елементів за індексом

Такий вигляд має лист у режимі редагування:

eSputnik preprocessor items_by_indexes

Так може виглядати результат після підстановки динамічного контенту:

eSputnik Preprocessor items_by_indexes_result

Звернення до елементів у циклі

Такий вигляд має лист у режимі редагування:

eSputnik preprocessor items_by_foreach

 

Так може виглядати результат після підстановки динамічного контенту:

items_by_foreach_result

Залишилися питання?
Спеціалісти обов'язково нададуть відповідь та допоможуть вирішити вашу проблему!
Зворотний дзвінок
Залишіть заявку – і наш спеціаліст зв'яжеться з вами в робочий час.
Відправити заявку
Консультація в чаті
Готові до ваших запитань!
Написати в чат
Електронна пошта
Напишіть в службу підтримки eSputnik.
Надіслати email