Подключение и использование внешнего источника данных PostgreSQL

Пользовательские данные

Email

Омниканальность

Автоматизация

Подключение PostgreSQL

Частой является ситуация, когда контент для вставки в сообщения отделен от контактов, когда используется стороннее решение для анализа поведения клиента на сайте или в мобильном приложении. Примером могут служить персональные товарные рекомендации на основе offline-продаж или заказов по телефону.

Когда нужно редко или единоразово подготовить специфический контент, можно воспользоваться такими функциями, как подстановка данных при помощи препроцессора или использование в качестве источника данных Google-таблицы.

Если

  • сегментации по полям контакта недостаточно
  • необходимо наладить быстрый и бесшовный способ синхронизации контентной составляющей
  • необходимо добавить дополнительные сведения о контакте, позволяющие построить точный сегмент по специфическим условиям

то подключение внешней базы данных PostgreSQL будет отличными инструментом для решения ваших задач. 

Обратите внимание, что эта интеграция доступна после оплаты тарифа Advanced.

1. Конфигурация коннектора к внешней базе данных

Чтобы предоставить доступ к внешней базе данных, необходимо настроить коннектор, для этого перейдите в настройки своего аккаунта в раздел “Коннекторы” и выберите пункт Подключить PostgreSQL.

Конфигурация коннектора

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

Заполнение данных

  1. Хост может содержать доменное имя удаленного сервера или же его IP-адрес.

  2. Порт.

  3. Название базы данных на удаленном сервере.

  4. Логин пользователя базы данных (достаточно роли только для чтения).

  5. Пароль.

На этом этапе можно проверить корректность авторизационных данных и выполнить тестовое подключение к удаленной базе данных, нажав кнопку “Проверить подключение” (6).

Примечание

При подключение к PostgreSQL рекомендуется использовать защищенное SSL-соединение для безопасной передачи данных.

Если вы не используете SSL-соединение, система предупредит об этом:

Соединение не защищено SSL

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

Далее в пункте определения уникальности контакта нужно выбрать колонку таблицы, которая содержит уникальный ключ контакта (7), и сопоставить её с уникальным полем в аккаунте eSputnik (8).

Сопоставление строк

На примере данного изображение показано наличие в таблице колонки с email-адресами контактов и сопоставление с аналогичным полем в системе eSputnik.

Вы можете создать любой ключ уникальности контакта, который содержится в таблице и в eSputnik —  внешнему ID, номеру телефона,  дополнительному полю и т.д.

Важный момент:

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

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

Новый коннектор

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

2. Конфигурация источника данных на базе коннектора

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

Для этого, перейдя в раздел “Источники данных” в настройках аккаунта eSputnik, подготовьте новый источник данных:

Добавление источника

В открывшемся окне выберите необходимый коннектор, созданный на предыдущем этапе:

Выбор коннектора

Новый источник данных

  1. Выбирается схема базы данных.

  2. Выбирается необходимая таблица с данными.

  3. Задается название источника данных.

После сохранения источника данных он отобразится в соответствующем разделе:

Источник данных

Следующий этап – это импорт контактов в аккаунт eSputnik и наполнение данными внешнюю базу.

Передача данных

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

Построение сегментов

Полученный сегмент можно использовать в промо- и триггерных рассылках.

Важный момент:

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

3. Подстановка в сообщение данных из внешнего источника

Чтобы в письме задать использование внешних данных, к ним необходимо обратиться при помощи Velocity конструкции вида $!data.get(‘название_источника’)... – так, в этом примере мы подготовили источник под названием promo_codes.

а. Для массовой рассылки (отправка группе)

Допустим, запланирована рассылка контакту kozak@example.com, тогда из таблицы

Данные из таблицы

для контакта будет получен набор данных и помещен в объект data:

{
  "data": {
    "promo_codes": [
      {
        "id": "2",
        "email": "kozak@example.com",
        "name": "Dina Kozak",
        "birthday": "2020-09-02T00:00:00Z",
        "promo_code": "AAAA-BBBB-DDDD"
      }
    ]
  }
}

К полям массива promo_codes можно обратится двумя способами:

  • поэлементно

$!data.get('promo_codes').get(0).get('name')

$!data.get('promo_codes').get(0).get('promo_code')

Этот способ подходит, если вы точно знаете, количество элементов в массиве.

  • при помощи цикла

#foreach($pc in $!data.get('promo_codes'))

$!pc.get('name')

$!pc.get('promo_code')

#end

Этот способ более универсальный и подойдет в большинстве ситуаций.

б.Для триггерной рассылки

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

Создание группы

Детальнее следует рассмотреть принцип использования условной группы в триггерных рассылках. В момент срабатывания сценария для каждого контакта, который соответствует условию группы, системой генерируется событие. Название этого события формируется из статической части regularEventType- и идентификатора группы, для которой запускается сценарий, например regularEventType-170531841.

Событие содержит данные о контакте, идентификатор контакта в eSputnik (ContactId), имейл-адрес (EmailAddress), а также данные из внешней таблицы.

Содержимое каждого поля из таблицы преобразуется в вид ключ-значение и помещается в массив с числовым названием, соответствующим порядковому номеру источника внешних  данных:

Внешний источник

В свою очередь это массив сериализован и помещен в виде строки в поле  jsonParam. Содержимое события может иметь приблизительно такой вид:

{
  "params": [
    {
      "name": "ContactId",
      "value": "623927159"
    },
    {
      "name": "jsonParam",
      "value": "{\"1043\":[{\"id\":,\"email\":\"kozak@example.com\",\"name\":\"Dina Kozak\",\"birthday\":\"2020-09-02T00:00:00Z\",\"promo_code\":\"AAAA-BBBB-DDDD\"}]}"
    },
    {
      "name": "EmailAddress",
      "value": "kozak@example.com"
    }
  ]
}

Для обратного преобразования из сериализованной строки в набор объектов в сценарии у блока отправки в поле JSON укажите источник данных из события – ${jsonParam}:

Блок с сообщением

Настроив и сохранив сценарий, остается задать условие запуска и желаемую частоту срабатывания:

Создание сценария

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

{
  "data": {
    "1043": [
      {
        "id": "2",
        "email": "kozak@example.com",
        "name": "Dina Kozak",
        "birthday": "2020-09-02T00:00:00Z",
        "promo_code": "AAAA-BBBB-DDDD"
      }
    ]
  }
}

К полям массива 1043 можно так же обратится двумя способами:

  • поэлементно

$!data.get('1043').get(0).get('name')
$!data.get('1043').get(0).get('promo_code')
  • или при помощи цикла

#foreach($pc in $!data.get('1043'))

$!pc.get('name')

$!pc.get('promo_code')

#end

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

4. Настройка экспорта данных

Чтобы регулярно обновлять информацию об аудитории, заказах и результатах кампаний в PostgreSQL, настройте экспорт данных из eSputnik в таблицы. Например, вы можете экспортировать ответы на NPS-опрос, историю покупок, дату последнего клика в сообщении и т. д.

Доступные наборы данных для экспорта:

  • broadcasts;
  • contactActivities;
  • contacts;
  • messages;
  • devices;
  • orderItems;
  • orders;
  • revenue.

Список параметров данных для экспорта

Broadcasts

Параметр

Тип данных Описание
createdDate timestamp

Дата и время создания сообщения (формат: '2021-10-08 11:11:02')

groupId int

ID групп, участвовавших в рассылке

id int

ID рассылки

mediaType varchar (50)

Медиатип (SMS, Email, Web Push, Viber, Mobile Push, AppInbox, Widget)

messageId int

ID сообщения

name

varchar (1000) Название рассылки

startedDate

timestamp

Дата и время отправки рассылки (формат: '2021-10-08 11:11:02')

status varchar (50)

Статусы рассылки:

  • IDLE - завершена;
  • RUNNING - началась;
  • PAUSED - приостановлена (если рассылка не была остановлена вами вручную, обратитесь в службу поддержки для уточнения деталей);
  • SCHEDULED - запланирована;
  • UNCONFIRMED - в очереди на модерацию;
  • CONSIDERATION - на модерации;
  • BLOCKED - заблокирована модератором.
updatedDate  timestamp Дата и время обновления рассылки (формат: '2021-10-08 11:11:02')

ContactActivities

Параметр

Тип данных Описание

activity

(activityStatus)*

varchar (100) Статус активности:
  • DELIVERED – сообщение доставлено.
  • UNDELIVERED – сообщение не доставлено (содержит причину statusDescription).
  • RECEIVED – сообщение открыто.
  • UNSUBSCRIBED – контакт отписался от рассылки.
  • CLICKED – контакт кликнул ссылку в сообщении.
  • SPAM – контакт сообщил о спаме.
  • SUBSCRIPTION_CHANGED – контакт изменил категорию подписки.
  • PUSH_SUBSCRIBED — контакт подписался на push-уведомления.
workflowInstanceId varchar (200) Идентификатор отдельного запуска сценария. Используйте его для группировки рассылок в рамках запуска одного сценария.
broadcastId int ID рассылки
campaignType varchar (50)

Тип рассылки: 

  • ​​​​​​IM — триггерное сообщение, 
  • Group — массовая рассылка.
clickEventLink varchar (1000) Содержит ссылку, которую кликнул контакт (статус CLICKED)
contactId bigint ID контакта в eSputnik (Внутренний)
errorCode (statusDescription)* varchar (1000) Ошибка доставки SMTP и описание
eventKey varchar (100) Ключ события
eventTypeKey varchar (100) Ключ типа события
externalCustomerId varchar (100) ID контакта в вашей системе (Внешний)
mediaType varchar (50) Медиатип (SMS, Email, Web Push, Viber, Mobile Push, AppInbox, Widget, In-App)
messageInstanceId int Служебное поле
messageLanguageCode varchar (50) Код языка сообщения
messageName varchar (100) Название сообщения в аккаунте eSputnik
messageId int ID сообщения
messageTags varchar (200) Метки сообщения
messageURL varchar (1000) Содержит ссылку на веб-версию email
senderName varchar (200) Имя отправителя в Viber
started (activityDateTime)* timestamp Дата и время отправки сообщения (формат: '2021-10-08 11:11:02')
utmCampaign varchar (400) UTM-метка рассылки
workflowId int ID сценария
workflowBlockId     varchar (200) ID блока сценария

* Поле будет удалено как устаревшее; используйте поле, указанное в скобках.

Contacts

Параметр Тип данных Описание
contactId bigint ID контакта в eSputnik (Внутренний)
contactSource varchar (50) Источник контакта:
  • SITE_AUTOMATED - привязка email к push-подписчику (скрипт сбора web push), 
  • I_MESSAGE - отправка одного сообщения, 
  • CAMPAIGN - сценарий (блок “Создать контакт” или блок “Добавить в группу”), 
  • IMPORT - импорт файла или метод “Add contacts”, 
  • MANUAL - создан вручную, 
  • SUBSCRIPTION - форма подписки (API метод “Subscribe a contact”), 
  • API метод “Add contact”, 
  • ORDER - заказ на сайте (API метод “Add orders”).
createdDate timestamp Дата и время создания контакта (формат: '2021-10-08 11:11:02')
email varchar (50) Email контакта
emailDomain varchar (100) Домен email
emailStatus varchar (50) Статус email
externalCustomerId varchar (100) ID контакта в вашей системе (Внешний)
firstName varchar (50) Имя контакта
languageCode varchar (20) Код языка сообщений
lastClickedDate timestamp Дата и время последнего клика (формат: '2021-10-08 11:11:02')
lastName varchar (50) Фамилия контакта
lastReceivedDate timestamp Дата и время последней доставки (формат: '2021-10-08 11:11:02')
lastSentDate timestamp Дата и время последней отправки (формат: '2021-10-08 11:11:02')
lastViewedDate timestamp Дата и время последнего открытия (формат: '2021-10-08 11:11:02')
sms varchar (50) Номер телефона
totalClicked int Общее количество кликов
totalReceived int Общее количество полученных сообщений
totalSent int Общее количество отправленных сообщений
totalViewed int Общее количество просмотренных сообщений

Devices

Параметр Тип данных Описание
appVersion varchar (50) Версия приложения
applicationId int ID приложения
category varchar (50) Категория
contactId bigint ID контакта
deviceId varchar (250) ID устройства
deviceModel varchar (100) Модель устройства
externalCustomerId varchar (100) Внешний ID контакта
languageCode varchar (20) Код языка
osType varchar (50) Тип ОС
osVersion varchar (50) Версия ОС
pushToken varchar (max) Пуш-токен
timeZone varchar (100) Часовой пояс                                                          

Messages

Параметр Тип данных

Описание

annoyanceLevel int Уровень беспокойства сообщения
language varchar (50) Язык основной версии сообщения
mediaType varchar (50) Медиатип (SMS, Email, Web Push, Viber, Mobile Push, AppInbox, Widget, In-App)

messageId

int ID сообщения
name varchar (200) Название сообщения
replyTo varchar (200) Адрес для ответов
sender varchar (200) Отправитель
subject varchar (1000) Тема
tags varchar (200) Метки
translations varchar (200) Языковые версии сообщения
updateDate timestamp Дата и время обновления сообщения (формат: '2021-10-08 11:11:02')

OrderItems

Параметр Тип данных Описание
cost numeric Стоимость продукта
description varchar (300) Описание продукта
externalProductId varchar (100) Внешний ID продукта
imageUrl varchar (200) Ссылка на изображение продукта
name varchar (100) Название продукта
orderDate timestamp Дата создания заказа (формат: '2021-10-08 11:11:02')
orderId int ID заказа в eSputnik (Внутренний)
quantity int Количество продукта
url varchar (200) URL-адрес продукта

Orders

Параметр Тип данных Описание
contactId bigint ID контакта в eSputnik (Внутренний)
deliveryAddress varchar (100) Адрес доставки
deliveryMethod varchar (50) Способ доставки
discount numeric Скидка
email varchar (50) Email
externalOrderId varchar (100) Внешний ID заказа
firstName varchar (50) Имя контакта
lastName varchar (50) Фамилия контакта
orderCreatedDate timestamp Дата создания заказа в eSputnik (формат: '2021-10-08 11:11:02')
orderDate timestamp Дата создания заказа (формат: '2021-10-08 11:11:02')
orderId int ID заказа в eSputnik (Внутренний)
paymentMethod varchar (50) Способ оплаты
phone varchar (50) Номер телефона
status varchar (50) Статус заказа:
  • INITIALIZED,
  • IN PROGRESS,
  • DELIVERED, 
  • CANCELED.
totalCost numeric Общая стоимость заказа

Revenue

Параметр Тип данных Описание
activity (activityStatus)* varchar (100) Статус активности:
  • DELIVERED – сообщение доставлено.
  • UNDELIVERED – сообщение не доставлено (содержит причину statusDescription).
  • RECEIVED – сообщение открыто.
  • UNSUBSCRIBED – контакт отписался от рассылки.
  • CLICKED – контакт кликнул ссылку в сообщении.
  • SPAM – контакт сообщил о спаме.
  • SUBSCRIPTION_CHANGED – контакт изменил категорию подписки.
  • PUSH_SUBSCRIBED — контакт подписался на push-уведомления.
campaignType varchar (50) Тип рассылки:
  • IM — триггерное сообщение, 
  • Group — массовая рассылка.
clickEventLink varchar (1000) Содержит ссылку, которую кликнул контакт (статус CLICKED)
contactId bigint ID контакта в eSputnik (Внутренний)
currency varchar (3) Валюта
externalCustomerId varchar (100) ID контакта в вашей системе (Внешний)
externalOrderId varchar (200) ID заказа внешний
mediaType varchar (50) Медиатип сообщения (SMS, Email, Web Push, Viber, Mobile Push, AppInbox)
messageInstanceId int Служебное поле
messageName varchar (100) Название сообщения в аккаунте eSputnik
messageTags varchar (200) Метки сообщения
messageUrl varchar (1000) Содержит ссылку на веб-версию email
orderDate timestamp Дата создания заказа (формат: '2021-10-08 11:11:02')
senderName varchar (200) Имя отправителя в Viber
started (activityDateTime)* timestamp Дата и время отправки сообщения (формат: '2021-10-08 11:11:02')
totalCost numeric Общая стоимость заказа
utmCampaign varchar (400) UTM-метка рассылки

* Поле будет удалено как устаревшее; используйте поле, указанное в скобках

Примечание

Существующие записи в таблице Revenue (для заказов, сделанных после 08.03.2024) можно обновлять вместе с выгрузкой новых заказов. Обновление может понадобиться, например, если изменилась общая стоимость заказа.

Эта информация будет передана в PostgreSQL и обновит данные в таблицах.

Важно

Вам не нужно предварительно создавать таблицы PostgreSQL. Они будут сгенерированы автоматически при первом экспорте, и с этого момента все поступающие данные будут обновляться. Все названия таблиц будут соответствовать наборам данных (contact activities, contacts, order items, orders, revenue)

Настройка PostgreSQL-коннектора для экспорта данных

1. Перейдите в «Настройки» → «Экспорт данных» и нажмите «Новый экспорт данных». Выберите один из созданных PostgreSQL-коннекторов.

Выбор коннектора

2. Выберите интервал загрузки и установите флажки для наборов данных, которые вы хотите загрузить. Тип набора данных по умолчанию public, вы можете выбрать другой тип, если указали его в настройках PostgreSQL.
   Нажмите "Сохранить".

Настройки экспорта

Соединение отобразится в разделе «Экспорт данных», здесь вы можете отредактировать его настройки.

Остались вопросы?
Специалисты обязательно ответят и помогут решить вашу проблему!
Обратный звонок
Оставьте заявку – и наш специалист свяжется с вами в рабочее время.
Отправить заявку
Консультация в чате
Готовы к вашим вопросам!
Написать в чат
Электронная почта
Напишите в службу поддержки eSputnik.
Отправить email