Рассылки по аудитории: описание API & Webhooks
Работа с API
OAuth-авторизация
Для работы с Fasttrack API вам понадобится уникальный access_token, которым необходимо передавать в заголовке для каждого запроса. Следуйте инструкции ниже, чтобы получить ключ доступа для вашего проекта:
Шаг 1: Подготовить redirect_uri
redirect_uri — это URL, на который сервер перенаправит вас после успешной авторизации, передавая временный код (code). Этот код затем используется приложением для обмена на ключ доступа (access_token).
Шаг 2: Зарегистрировать приложение
Сообщите менеджеру о том, что планируете использовать Fasttrack API и предоставьте redirect_uri для регистрации вашего приложения.
Данные о приложении, которые вы получите:
client_id
Идентификатор вашего приложения.
client_secret
Защищённый ключ вашего приложения
Внимание! Параметр client_secret используется для идентификации и подтверждения подлинности вашего приложения в процессе OAuth-авторизации. Этот параметр является конфиденциальным и должен защищаться так же строго, как и пароли.
Шаг 3: Получить временый код авторизации
Сформируйте URL следующего вида:
https://dashboard.fstrk.io/integrations/oauth/?{параметры}После знака ? в URL укажите следующие параметры:
client_id* – Идентификатор вашего приложения;redirect_uri* – URL для получения временного кода авторизацииstate– Произвольная строка, которая будет передана вместе с кодом.
Пример URL:
https://dashboard.fstrk.io/integrations/oauth/?client_id=1&redirect_uri=https://example.com/oauth/&state=dummyПерейдите по ссылке. Вы попадете на страницу со списком доступных проеков (их может быть несколько). Выберите проект для которого планируете получить access_token.
Браузер переадресует вас обратно на URL, указанный в параметре redirect_uri с добавлением параметров state и временного кода авторизации (code).
Шаг 5: Получить access_token
POST /oauth/
Метод для получения access_token в рамках OAuth-авторизации.
Пример запроса:
curl -X POST \
--location https://dashboard.fstrk.io/api/partners/oauth/ \
--header 'Content-Type: application/json' \
--data '{
"client_id": "<CLIENT_ID>",
"client_secret": "<CLIENT_SECRET>",
"grant_type": "code",
"code": "<CODE>"
}'При успешном выполнении запроса API возвращает код ответа 200 и JSON-объект с параметром access_token.
Формат запросов
API работает по протоколу HTTP(S) и поддерживает методы REST (Representational State Transfer), такие как GET, POST, PUT, PATCH и DELETE. Каждый запрос имеет стандартный формат и требует обязательного использования корректных заголовков и параметров.
Базовый URL
https://dashboard.fstrk.io/api/partners/Заголовки
Каждый запрос к API Fasttrack требует заголовок Authorization для подтверждения прав доступа. Без этого заголовка сервер не обработает запрос и вернет ошибку.
Authorization: Bearer { access_token }Для корректной работы с API Fasttrack запросы, которые передают данные, должны содержать заголовок Content-Type. Он указывает, что данные в запросе отправляются в формате JSON.
Content-Type: application/jsonТакже рекомендуется указывать заголовок Accept, чтобы явно запросить от сервера ответы в формате JSON. Это обеспечивает корректное восприятие данных на стороне клиента.
Accept: application/jsonМетоды API
Список методов:
GET/mailings/– список рассылокPOST/mailings/– создание рассылкиGET/mailings/{ uuid }/– информация о рассылкеPOST/mailings/{ uuid }/calculate/– подсчет статистикиPOST/mailings/{ uuid }/stop/– остановка рассылки
Протестировать API можно через Swagger по ссылке: https://dashboard.fstrk.io/api/partners/docs/
Для тестирования, необходимо авторизоваться в Fasttrack.
Создание рассылки
POST /mailings/Универсальный метод для создания новой рассылки.
Заголовки
Content-Type
application/json
Authorization
Bearer { access_token }
Тело запроса application/json
name (string) * – название рассылки.
Пример: "Моя первая рассылка"
filter_chats (object) – фильтр пользователей. Укажите условия и критерии, которым должны соответствовать пользователи, чтобы получить рассылку.
{
// ...
"filter_chats": {
"all": [
{
"platform": "Telegram",
"type": "attribute"
},
{
"timezone": "Europe/Moscow",
"type": "profile_attribute"
},
{
"pda_agreed__isnull": false,
"type": "profile_tag"
}
]
},
// ...
}content_type (string) – тип контента.
Значения: "NODE" "TEXT"
Заметка: используйте значение
NODEдля запуска сценария, настроенного на платформе Fasttrack иTEXTдля отправки обычного текстового сообщения.
text (string) – содержание текстового сообщения.
{
// ...
"content_type": "TEXT",
"text": "Привет, мир!"
// ...
}node_name (string) – название сценария на платформе Fasttrack.
{
...
"content_type": "NODE",
"node_name": "Сценарий для демо рассылки"
...
}Заметка: можно использовать параметр
node, если нужно указать ID сценария, а не его название. Название может измениться, а идентификатор постоянный.
node (integer) – ID сценария на платформе Fasttrack.
{
// ...
"content_type": "NODE",
"node": 73787
// ...
}Заполняется для рассылок с типом контента NODE.
Заметка: если передать в запросе одновременно параметры
nodeиnode_name, то приоритет будет у параметраnode.
node_get_params (array) – список параметров для сценария.
Каждый объект в массиве содержит следующие поля:
name(string): название параметраvalue(string): значение параметра
{
// ...
"content_type": "NODE",
"node_name": "Сценарий для демо рассылки",
"node_get_params": [
{
"name": "discount_code",
"value": "WELCOME10"
},
{
"name": "campaign_id",
"value": "spring_sale_2024"
}
]
// ...
}Указанные параметры и их значения будут доступны и могут быть обработаны в контексте выбранного сценария.
customer_filter_field (string) – идентификатор профиля для рассылок по готовому списку клиентов.
Значения:
"UUID""EXTERNAL_ID""PHONE_NUMBER"
Список идентификаторов может быть передан через файл (см. customer_filter_file) или сразу в теле запроса (см. customer_filter_array)
customer_filter_file (string) – ссылка на файл со списком идентификаторов для рассылок по готовому списку клиентов.
Расширение файла
.CSVФайл должен быть загружен на
S3Название колонки соответствует значению
customer_filter_field(в нижнем регистре)
{
// ...
"customer_filter_field": "UUID",
"customer_filter_file": "https://example.com/file.csv"
// ...
}customer_filter_array (array) – список идентификаторов для рассылок по готовому списку клиентов.
{
// ...
"customer_filter_field": "UUID",
"customer_filter_array": [
"f108a674-1160-4049-8a37-eaab83bd9cd4",
"7a0b517c-2f0b-407f-87e6-13eb651c32e1"
]
// ...
}planned_at (string) – дата и время запуска для отложенных рассылок.
Формат:
ISO 8601Пример:
"2024-09-16T19:41:02.768Z"
regular_cron (string) – расписание для регулярных рассылок.
Формат:
CRONПример:
"00 12 * * *"(рассылка в 12:00 каждый день).
origin (string) – признак источника рассылки.
Значения:
"chat_center""system"По умолчанию:
"system"
Если указать chat_center, то рассылка будет отправлена всем пользователям, в том числе тем, у кого в момент рассылки открыта сессия с оператором.
Примеры запросов
Ниже приведены примеры запросов, оформленные в формате cURL. Они демонстрируют различные сценарии использования и настройки параметров для создания рассылок.
Результат запроса
При успешном выполнении запроса API возвращает код ответа 201 и JSON-объект с информацией о рассылке, включая полный набор параметров.
Пример ответа:
Список рассылок
GET /mailings/Метод для получения списка всех созданных рассылок.
Заголовки
Authorization
Bearer { access_token }
Query-параметры
limit
Кол-во записей, которое вернется в результате запроса. Максимум 100.
offset
Смещение от начала выборки.
Параметры limit и offset позволяют контролировать объем возвращаемых данных и навигацию по страницам при выполнении запросов к API.
Пример запроса
curl -X GET \
--location https://dashboard.fstrk.io/api/partners/mailings/?offset=20&limit=20 \
--header 'Authorization: Bearer { access_token }'Результат запроса
При успешном выполнении запроса API возвращает код ответа 200 и JSON-объект с информацией о рассылке, включая полный набор параметров.
Информация о рассылке
GET /mailings/{ uuid }/Метод для получения информации о рассылке по ее идентификатору (UUID).
Заголовки
Authorization
Bearer { access_token }
Path-параметры
uuid *
Идентификатор рассылки
Пример запроса
curl -X GET \
--location https://dashboard.fstrk.io/api/partners/mailings/{ uuid } \
--header 'Authorization: Bearer { access_token }'Результат запроса
При успешном выполнении запроса API возвращает код ответа 200 и JSON-объект с информацией о рассылке, включая полный набор параметров.
Подсчет статистики
POST /mailings/{ uuid }/calculate/Метод для подсчета статистики для рассылки по ее идентификатору (UUID).
Устаревший метод. Статистика в рассылках по аудиториии проекта обновляется автоматически, поэтому данный метод на сегодняшний день не актуален.
Заголовки
Authorization
Bearer { access_token }
Path-параметры
uuid *
Идентификатор рассылки
Пример запроса
curl -X POST \
--location https://dashboard.fstrk.io/api/partners/mailings/{ uuid }/calculate/ \
--header 'Authorization: Bearer { access_token }'Результат запроса
При успешном выполнении запроса API возвращает код ответа 200 и JSON-объект с информацией о рассылке, включая полный набор параметров.
Остановка рассылки
POST /mailings/{ uuid }/stop/Метод, который используется, чтобы остановить рассылку, которая уже началась.
Заголовки
Authorization
Bearer { access_token }
Path-параметры
uuid *
Идентификатор рассылки
Пример запроса
curl -X POST \
--location https://dashboard.fstrk.io/api/partners/mailings/{ uuid }/stop/ \
--header 'Authorization: Bearer { access_token }'Результат запроса
При успешном выполнении запроса API возвращает код ответа 200 и JSON-объект с информацией о рассылке, включая полный набор параметров.
Вебхуки
API Fasttrack предоставляет возможность подписаться на уведомления о событиях, которые связаны с отправленными рассылками по аудитории проекта.
Типы событий, связанных с рассылками по аудитории:
MAILING_STATE
Статусы сообщений в рассылке
MAILING_REACTION
Реакции на сообщения в рассылке
Настройка уведомлений
Откройте настройки проекта → Раздел "Вебхуки"
Заполните поле [ Endpoint URL ]
Активируйте события
MAILING_REACTIONиMAILING_STATE
MAILING_STATE
MAILING_STATECмена статуса отправленного сообщения в рассылке.
{
"event_type": "mailing.state",
"payload": {
"profile": {
"uuid": "dae05733-3026-4eca-abcf-ed366fc3372b"
},
"chat": {
"uuid": "dfed60eb-08f2-4672-af6a-d859a350c435"
},
"mailing": {
"uuid": "a353f441-9f67-42e7-bb28-be3c3fc817b5"
},
"message": {
"state": "delivered"
}
},
"timestamp": 1651776060.8439758
}event_type
Тип события
payload
Информация о событии
> payload.profile
Информация о клиенте
>> payload.profile.uuid
Уникальный идентификатор профиля
> payload.chat
Информация о пользователе
>> payload.chat.uuid
Уникальный идентификатор чата
> payload.mailing
Информация о рассылке
>> payload.mailing.uuid
Уникальный идентификатор рассылки
> payload.message
Информация о сообщении
>> payload.message.state
Текущее состояние сообщения
timestamp
Временная метка
Статусы сообщений
sent
Сообщение отправлено
undelivered
Сообщение не доставлено
delivered
Сообщени доставлено
read
Сообщение прочитано
MAILING_REACTION
MAILING_REACTIONРеакция на отправленной сообщение в рассылке.
{
"event_type": "mailing.reaction",
"payload": {
"uuid": "04191c1d-e7dd-4572-a544-6eb9c2855a5e",
"chat": {
"uuid": "a5f14878-bfdc-4af4-8b3c-249f6998f6f4",
"platform": "Telegram"
},
"type": "URL"
},
"timestamp": 1651776060.8439758
}event_type
Тип события
payload
Информация о событии
> payload.uuid
Уникальный идентификатор события
> payload.chat
Информация о пользователе
>> payload.chat.uuid
Уникальный идентификатор чата
>> payload.chat.platform
Название канала
> payload.type
Тип реакции
timestamp
Временная метка
Список реакций
URL
Переход по ссылке
CLICK
Нажатие на кнопку
REPLY
Ответное сообщение
READ
Сообщение прочитано
Last updated