Взаимодействие с проектом

Вызов проекта перед отправкой сообщения (хук).

IP адрес с которого идут запросы мейлера: 178.22.89.168

Цель данного механизма - дать возможность проекту

  • Выполнить действия перед отправкой сообщения (например, начислить бонус)
  • Передать дополнительный контент в сообщение (например, PIN-код для пользователя или название и картинку актуального ему товара)
  • Дополнительно отфильтровать пользователей (например не слать тем кто заблокирован и т.п.)

Для этого в каждом письме заполняется произвольный URL

URL будет запрошен GET запросом перед отправкой очередного письма (порции писем).

В запрос может быть добавлена Basic HTTP авторизация с логином/секретом проекта.

В запрос может быть добавлен параметр с подписью

В запросе присутствует обязательный параметр emails или uids, в зависимости от типа рассылки.

За один запрос запрашивается не более 100 email-ов (при массовых рассылках) либо 1 email при тригерных рассылках.

В ответ проект должен вернуть JSON (Content-Type: application/json) с HTTP кодом 200.

Пример запроса

GET /mailer_hook/?bonus_type=gun&emails=user1@mail.ru,user2@mail.ru,user3@gmail.com
Host: project.ru
Authorization: Basic ************

Пример JSON ответа проекта

[
    {
        "email": "user1@mail.ru",
        "offer_pic": "https://project.com/offer/123.png",
        "offer_title": "купи кота"
    },
    {
        "email": "user2@mail.ru",
        "offer_pic": "https://project.com/offer/321.png",
        "offer_title": "свежая шаурма"
    }
]

У каждого пользователя в ответе должен быть указан email или uid, в зависимости от переданного в запросе.

Все дополнительные параметры буду доступны в шаблонизаторе при отправке письма.

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

Если в запросе будут возвращены пользователи, которых не было в запросе - они будут отброшены.

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

Подпись запросов

Для добавления параметра с подписью необходимо в конце URL запроса добавить переменную шаблонизатора {{signature}}.

Пример:

http://project.host/mailer_hook/?bonus_type=gun&emails={{emails}}&{{signature}}

При вызове запроса URL будет преобразован в:

http://project.host/mailer_hook/?bonus_type=gun&emails=user1@mail,ru,user2@mail.ru,user3@gmail.com&timestamp=1580138664&signature=a58b2e73cb7c506c6df38c30b301e094

Алгоритм вычисления signature:

  1. Добавляется timestamp к параметрам запроса
  2. Все параметры запроса сортируются по имени параметра
  3. Формируется querystring из отсортированных параметров
  4. В конец querystring добавляется "&" и секретный ключ. Секрет используется из настроек проекта
  5. Вычисляется md5 от получившейся строки
  6. В запрос добавляется параметр с подписью