Использование контента из SQL базы да нных в сообщениях
Описание
В шаблонах сообщений можно использовать динамический контент из внешних таблиц данных, хранящихся на MySQL, PostgreSQL, MSSQL, Oracle, Hive и ClickHouse серверах. Для этого администратору платформы необходимо в Административной панели Altcraft создать коннектор к внешней базе данных.
Если вы пользуетесь облачным решением — передайте данные для подключения к базе данных нашей службе поддержки: support@altcraft.com. Там же можно уточнить по вопросам, связанным с возможностью подключения к другим внешним службам и БД.
Создание запроса к внешней таблице данных
Для создания запроса перейдите на вкладку Данные —> Запросы для шаблонов и создайте запрос.

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

После этого выберите в выпадающем меню подходящий коннектор к базе данных и введите тело запроса.

Второй вариант создания запроса — в меню Данные открыть пункт Таблицы данных. Выберите пункт Сохранить как запрос для шаблонов.
Батч-режим
По умолчанию запрос выполняется для каждого профиля отдельно: кампания на 10 000 профилей отправляет в базу данных 10 000 SQL-запросов. Батч-режим объединяет п рофили в пачки и выполняет один SQL-запрос на пачку. При размере батча 50 та же кампания отправит 200 запросов.
В настройках запроса включите Батч-режим и заполните поля:
- Размер батча — количество профилей в одном SQL-запросе. По умолчанию 50, максимум 500.
- Таймаут — время в секундах, за которое батч должен собраться. По умолчанию 5.
- Колонка сопоставления — колонка в результате запроса, по которой платформа распределяет строки между профилями. Обычно её имя совпадает с полем из
{batch_in}, но не обязательно: поле профиля —crmID, колонка —crm_id.
Батч отправляется в базу данных, когда набрано нужное количество профилей или истёк таймаут — что наступит раньше.
В SQL запроса используйте переменную {batch_in "поле"}: она подставляет список значений поля профиля по всем профилям батча. Например, запрос на подбор товаров:
-- Одиночный режим: запрос выполняется для каждого профиля
SELECT name FROM products WHERE crm_id = '{lead.crmID}'
-- Батч-режим: один запрос на пачку профилей
SELECT crm_id, name FROM products WHERE crm_id IN ({batch_in "crmID"})
Запрос в батч-режиме должен выбирать колонку сопоставления: её значения совпадают со значениями поля, которое подставляет {batch_in}. По ним платформа определяет, какие строки результата выдать каждому профилю. Если профиля нет в результате, он получит пустой список строк.
Переменные профиля вида {lead.имя_поля} в SQL в батч-режиме недоступны: данные профиля подставляются только через {batch_in}.
Использование SQL запроса в шаблонах сообщений
В шаблоне сообщения используйте ключевой параметр query.your_query_name.

Подробнее о функциональности редактора сообщений – Переменные и функции ALTCRAFT.
Готовый результат вы можете отформати ровать по желанию:
{for $index $el = query.products}
<tr width="300" style="padding-bottom: 20px; float: left">
<td width="300" style="padding-bottom: 20px; float: left">
<table cellpadding="0" cellspacing="0">
<tr>
<td align="left" valign="top" style="width:30%;">
<center>
<img class="img" src="{$el.picture}" width="100%" style="display: block; border: 0;" />
</center>
</td>
<td
class="description"
align="left"
valign="middle"
style="font-family: arial,sans-serif; font-size: 16px; color: #333; padding: 0 16px;"
>
<strong style="line-height: 30px !important;">{$el.type} </strong> <br />
<span style="line-height: 30px !important;">Модель: </span>{$el.model}<br />
<span style="line-height: 30px !important;">Цена: </span>{$el.price} руб<br />
<a
href="https://emailtemplate.ga?utm_source={msg_type}&utm_medium=altcraft&utm_campaign={urlencode(campid)}&utm_term={urlencode(msgname)}&utm_content={urlencode(msgid)}"
style="display: block; text-decoration: none; font-weight: 600; margin-top: 15px; text-shadow: 0 2px 15px #000000; color: #313131"
name="link1"
>В корзину!</a
>
</td>
</tr>
</table>
</td>
</tr>
{else} if empty array {end}
