# Интеграция потоковой передачи событий

<Aside type="caution" icon="setting" title="Требуется помощь разработчика">
 Вам понадобится помощь вашей команды разработчиков для настройки интеграции. Пожалуйста, поделитесь с ними этим руководством.
</Aside>

## Обзор интеграции

### Тип интеграции

**Источник:** Данные отправляются из Pushwoosh в вашу систему через HTTP или gRPC на основе настроенных триггеров событий.

### Как работает интеграция?

Pushwoosh передает данные о событиях коммуникации (например, активность push-уведомлений/email) на эндпоинт, определенный клиентом. Данные отправляются пакетными потоками по расписанию или при достижении минимального размера пакета.

Данные отправляются только в том случае, если они соответствуют выбранным событиям, платформам и дополнительным фильтрам (коды кампаний/сообщений, live activity). Эндпоинт клиента должен быть готов к приему и, при необходимости, к ответу со статусом.

### Глоссарий

**URL-адрес эндпоинта (Endpoint URL)**: Серверный эндпоинт, который позволяет принимать запросы. Клиент может указать порт при необходимости.

Примеры:

*   `https://clientdomainname.com/webhook_endpoint`
*   `https://clientdomainname.com:8081/webhook_endpoint`

### Список синхронизируемых сущностей

*   События статистики коммуникаций (например, Push Sent, Email Delivered)

### Сценарии использования

*   **Отслеживание вовлеченности в реальном времени**

    Отслеживайте взаимодействия пользователей, такие как отправка push-уведомлений, открытие email или доставка сообщений, в момент их совершения, что обеспечивает немедленную видимость эффективности кампании.

*   **Интеграция с внешней аналитикой**

    Передавайте события на сторонние аналитические платформы для централизованной отчетности и анализа.

*   **Автоматизированные рабочие процессы пользователей**

    Запускайте действия во внешних системах (таких как CRM или инструменты автоматизации маркетинга) на основе поведения пользователей, например, отправляйте последующее сообщение, когда пользователь открывает email.

## Настройка интеграции

Чтобы настроить интеграцию:

1.  В вашем аккаунте Pushwoosh перейдите в **Settings > 3rd party Integrations**, найдите **Event streaming integration** и нажмите **Configure**.

![Настройка интеграции потоковой передачи событий](/integrations-event-streaming-integration-1.webp)

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

![Заполните необходимые поля](/integrations-event-streaming-integration-2.webp)

#### Введите URL-адрес эндпоинта

В поле **Endpoint URL** введите полный URL-адрес, на который будут отправляться события, включая протокол и порт, если это применимо.

**Пример**

*   `https://clientdomainname.com/webhook_endpoint`
*   `https://clientdomainname.com:8081/webhook\_endpoint`

#### Выберите события

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

#### Предоставьте учетные данные для авторизации

Если это требуется вашим сервером, введите полное значение для заголовка `Authorization` в поле **Authorization**.

Примеры:

*   `Bearer your_token_here`
*   `Basic base64encoded_credentials`

<Aside>Значение вставляется **как есть** в заголовок `Authorization` (HTTP) или в метаданные gRPC. Убедитесь, что между схемой аутентификации и токеном есть пробел.</Aside>

#### Выберите тип транспорта

В выпадающем списке **Transport type** выберите протокол доставки для передачи событий: **HTTP** или **gRPC**. Каждый из них имеет свои особенности поведения и настройки.

##### HTTP

При использовании транспорта **HTTP** Pushwoosh отправляет данные пакетами на основе одного из следующих условий:

*   Готово к отправке не менее 100 событий, или
*   Прошел один час с момента последней передачи.

После отправки данных соединение закрывается после получения успешного ответа.

Если сервер отвечает **ошибкой 5xx**, Pushwoosh повторит запрос в соответствии с определенной политикой повторных попыток.

**Механизм повторных попыток**

| Попытка | Задержка |
| :--- | :--- |
| 1-я | 1 секунда |
| 2-я | 3 секунды после 1-й попытки |
| 3-я | 8 секунд после 2-й попытки |

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

**Тайм-аут**

Тайм-аут по умолчанию для запроса составляет **30 секунд**. Его можно изменить по запросу через службу поддержки.

<LinkCard
  title="Посмотреть пример"
  href="/webhook_request_batch.json"
  target="_blank"
  rel="noopener noreferrer"
/>

##### gRPC

Транспорт gRPC использует **двунаправленную потоковую передачу** данных. Узнайте больше в [документации gRPC](https://grpc.io/docs/what-is-grpc/core-concepts/#bidirectional-streaming-rpc).

Поток открывается при выполнении одного из следующих условий:

*   Готово к доставке не менее 1000 событий
*   Прошел один час с момента открытия последнего потока

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

<LinkCard
  title="Посмотреть спецификацию protobuf"
  href="/webhook.proto"
/>

**Механизм повторных попыток**
Каждое событие включает уникальный `uuid`. Если событие не удалось обработать:

1.  Ответ должен содержать `status`, **не равный** `"Success"`
2.  Должен быть включен оригинальный `uuid` из запроса

Pushwoosh повторит доставку на основе этого ответа.

**Настройки соединения**

Расширенные опции, такие как **TLS**, **keep-alive** или **политики повторных попыток**, настраиваются вручную через службу поддержки и могут потребовать участия разработчиков.

### Выберите платформы

В разделе **Platforms** выберите хотя бы одну платформу, чтобы активировать потоковую передачу событий.

![Выберите хотя бы одну платформу](/integrations-event-streaming-integration-3.webp)

Поддерживаемые платформы:

*   iOS, Android, macOS, Windows, Amazon, Safari
*   Chrome, Firefox, Internet Explorer, Baidu, Huawei
*   Email, SMS, Line, Xiaomi, WhatsApp

### Настройте расширенные фильтры

В разделе **Advanced filters** уточните критерии доставки событий с помощью фильтров:

*   **События Live activity:** Включите, чтобы получать события live activity. Эти события содержат только метаданные, включая `live_activity_id`.
*   **Фильтры кампаний:** Фильтрация по коду кампании. Будут доставлены только события, связанные с этими кампаниями.
*   **Фильтры сообщений:** Фильтрация по коду сообщения. Будут доставлены только события, связанные с этими сообщениями.

![Установите расширенные фильтры](/integrations-event-streaming-integration-4.webp)

После заполнения всех обязательных полей нажмите кнопку **Apply**, чтобы сохранить и активировать интеграцию.
<Aside>Изменения конфигурации вступят в силу **в течение 15 минут** после отправки.</Aside>

<Aside type="tip">
Для расширенных настроек, таких как пользовательские тайм-ауты или конфигурации gRPC, пожалуйста, [свяжитесь со службой поддержки](https://help.pushwoosh.com/hc/en-us/requests/new).
</Aside>

## Детали запроса и пример

| | |
| :--- | :--- |
| **Эндпоинт** | `https://exampleclientendpoint.com/webhook_endpoint` |
| **HTTP-запрос** | `POST` |
| **Аутентификация** | Нет |
| **Тип запроса** | Источник |
| **Назначение запроса** | Отправка запросов на эндпоинт вебхука |
| **Заголовки** | `Content-Type: application/json` |

**Пример тела запроса**

```
{
  "event_name": "Email Opened",
  "message_code": "E682-E6D92B9A-53E24868",
  "campaign_id": 961048,
  "platform": "Email",
  "payload": "Welcome to Headway! 👋",
  "application_code": "XXXXX-XXXXX",
  "hwid": "user@example.com",
  "user_id": "USER_ID",
  "timestamp": 1723799271,
  "journey_title": "",
  "journey_point_title": "5_Welcome_ID_new"
}
```

**Ответ**
В настоящее время код и тело ответа игнорируются.

## Как узнать, что интеграция работает?

Вы начнете получать запросы от Pushwoosh на ваш настроенный эндпоинт.