# Integración de event streaming

<Aside type="caution" icon="setting" title="Se necesita ayuda de un desarrollador">
 Necesitará la ayuda de su equipo de desarrollo para configurar la integración. Por favor, comparta esta guía con ellos.
</Aside>

## Resumen de la integración

### Tipo de integración

**Fuente:** Los datos se envían desde Pushwoosh a su sistema a través de HTTP o gRPC basándose en los activadores de eventos configurados.

### ¿Cómo funciona la integración?

Pushwoosh transmite datos de eventos de comunicación (por ejemplo, actividad de push/email) a un endpoint definido por el cliente. Los datos se envían en flujos por lotes a intervalos programados o al alcanzar un tamaño mínimo de lote.

Los datos solo se envían si coinciden con los eventos, plataformas y filtros opcionales seleccionados (códigos de campaña/mensaje, actividad en vivo). El endpoint del cliente debe estar listo para recibir y, opcionalmente, responder con un estado.

### Glosario

**URL del endpoint**: Endpoint del lado del servidor que permite recibir solicitudes. El cliente puede especificar un puerto si es necesario.

Ejemplos:

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

### Lista de entidades sincronizadas

*   Eventos de estadísticas de comunicación (por ejemplo, Push Enviado, Email Entregado)

### Casos de uso

*   **Seguimiento de la interacción en tiempo real**

    Monitoree las interacciones de los usuarios, como push enviado, email abierto o mensaje entregado, a medida que ocurren, lo que permite una visibilidad inmediata del rendimiento de la campaña.

*   **Integración con análisis externos**

    Transmita eventos a plataformas de análisis de terceros para la generación de informes y análisis centralizados.

*   **Flujos de trabajo de usuario automatizados**

    Active acciones en sistemas externos (como CRM o herramientas de automatización de marketing) basadas en los comportamientos de los usuarios, por ejemplo, enviar un mensaje de seguimiento cuando un usuario abre un email.

## Configuración de la integración

Para configurar la integración:

1.  En su cuenta de Pushwoosh, vaya a **Ajustes > Integraciones de terceros**, busque **Integración de event streaming** y haga clic en **Configurar**.

![Configurar la integración de event streaming](/integrations-event-streaming-integration-1.webp)

2.  En la ventana que se abre, complete los campos necesarios.

![Completar los campos necesarios](/integrations-event-streaming-integration-2.webp)

#### Ingresar URL del endpoint

En el campo **URL del endpoint**, ingrese la URL completa a la que se enviarán los eventos, incluyendo el protocolo y el puerto si corresponde.

**Ejemplo**

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

#### Seleccionar eventos

Del menú desplegable **Eventos**, seleccione al menos un evento. Si no se selecciona ninguno, la validación fallará. La lista de eventos es gestionada por el backend y puede cambiar con el tiempo.

#### Proporcionar credenciales de autorización

Si su servidor lo requiere, ingrese el valor completo para el encabezado `Authorization` en el campo **Autorización**.

Ejemplos:

*   `Bearer your_token_here`
*   `Basic base64encoded_credentials`

<Aside>El valor se inserta **tal cual** en el encabezado `Authorization` (HTTP) o en los metadatos de gRPC. Asegúrese de que haya un espacio entre el esquema de autenticación y el token.</Aside>

#### Elegir tipo de transporte

Del menú desplegable **Tipo de transporte**, elija el protocolo de entrega para la transmisión de eventos: **HTTP** o **gRPC**. Cada uno tiene un comportamiento y una configuración específicos.

##### HTTP

Con el tipo de transporte **HTTP**, Pushwoosh envía datos en lotes basándose en una de las siguientes condiciones:

*   Al menos 100 eventos están listos para ser enviados, o

*   Ha pasado una hora desde la última transmisión.

Después de enviar los datos, la conexión se cierra una vez que se recibe una respuesta exitosa.

Si el servidor responde con un **error 5xx**, Pushwoosh reintentará la solicitud de acuerdo con la política de reintentos definida.

**Mecanismo de reintento**

| Intento | Retraso |
| :---- | :---- |
| 1º | 1 segundo |
| 2º | 3 segundos después del 1er intento |
| 3º | 8 segundos después del 2º intento |

Si todos los reintentos fallan, la solicitud se descarta.

**Tiempo de espera**

El tiempo de espera predeterminado para una solicitud es de **30 segundos**. Esto se puede personalizar a pedido a través de soporte.

<LinkCard
  title="Ver ejemplo"
  href="/webhook_request_batch.json"
  target="_blank"
  rel="noopener noreferrer"
/>

##### gRPC

El tipo de transporte gRPC utiliza **streaming bidireccional** para la transmisión de datos. Obtenga más información en la [documentación de gRPC](https://grpc.io/docs/what-is-grpc/core-concepts/#bidirectional-streaming-rpc).

Se abre un flujo cuando se cumple una de las siguientes condiciones:
*   Al menos 1,000 eventos están listos para la entrega
*   Ha pasado una hora desde que se abrió el último flujo

El flujo se cierra después de que se envían los eventos. Esto asegura que no se abra un nuevo flujo para cada evento individual en un corto período de tiempo.

<LinkCard
  title="Ver especificación de protobuf"
  href="/webhook.proto"
/>

**Mecanismo de reintento**
Cada evento incluye un `uuid` único. Si un evento falla:

1.  La respuesta debe incluir un `status` **no igual a** `"Success"`
2.  Se debe incluir el `uuid` original de la solicitud

Pushwoosh reintentará la entrega basándose en esta respuesta.

**Configuración de la conexión**

Las opciones avanzadas como **TLS**, **keep-alive** o **políticas de reintento** se configuran manualmente a través de soporte y pueden requerir la participación del equipo de desarrollo.

### Seleccionar plataformas

En la sección **Plataformas**, seleccione al menos una plataforma para activar el event streaming.

![Seleccionar al menos una plataforma](/integrations-event-streaming-integration-3.webp)

Las plataformas compatibles incluyen:

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

### Configurar filtros avanzados

En la sección **Filtros avanzados**, refine los criterios de entrega de eventos utilizando filtros:

*   **Eventos de actividad en vivo:** Habilite para recibir eventos de actividad en vivo. Estos eventos contienen solo metadatos, incluyendo `live_activity_id`.
*   **Filtros de campaña:** Filtre por código de campaña. Solo se entregarán los eventos vinculados a estas campañas.
*   **Filtros de mensaje:** Filtre por código de mensaje. Solo se entregarán los eventos vinculados a estos mensajes.

![Establecer filtros avanzados](/integrations-event-streaming-integration-4.webp)

Después de completar todos los campos requeridos, haga clic en el botón **Aplicar** para guardar y activar su integración.
<Aside>Los cambios de configuración entrarán en vigor **dentro de los 15 minutos** posteriores al envío.</Aside>

<Aside type="tip">
Para configuraciones avanzadas como tiempos de espera personalizados o configuraciones de gRPC, por favor [contacte a soporte](https://help.pushwoosh.com/hc/en-us/requests/new).
</Aside>

## Detalles y ejemplo de la solicitud

| | |
|---|---|
| **Endpoint** | `https://exampleclientendpoint.com/webhook_endpoint` |
| **Solicitud HTTP** | `POST` |
| **Autenticación** | No |
| **Tipo de solicitud** | Fuente |
| **Significado de la solicitud** | Enviar solicitudes al endpoint del webhook |
| **Encabezados** | `Content-Type: application/json` |

**Ejemplo del cuerpo de la solicitud**

```
{
  "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"
}
```

**Respuesta**
Por el momento, el código de respuesta y el cuerpo se ignoran.

## ¿Cómo saber si la integración funciona?

Comenzará a recibir solicitudes de Pushwoosh en su endpoint configurado.