# Configuración de entrega de alta velocidad

## Descripción general

En Pushwoosh, los segmentos de audiencia se definen utilizando **Segmentos**.

Para campañas push estándar, el segmento se compila **después** de que se envía la solicitud [`/createMessage`](/es/developer/api-reference/messages-api/#createmessage). Esto significa que puede haber un breve retraso antes de que salga el mensaje, especialmente si el segmento es complejo.

Con la entrega de alta velocidad, los segmentos se precompilan cada 10 minutos. Esto los mantiene actualizados y listos para usar, por lo que los mensajes se pueden enviar al instante, sin esperar a que se compile el segmento.

La entrega de alta velocidad es especialmente útil cuando el tiempo es crítico. Por ejemplo, organizaciones deportivas como la UEFA y la FIBA pueden usarla para enviar actualizaciones en tiempo real donde cada segundo cuenta.

Esta guía explica cómo configurar la entrega de alta velocidad utilizando una aplicación deportiva como ejemplo. Aprenderá a crear segmentos de audiencia para notificar a los usuarios sobre próximos partidos y eventos en vivo.

## Por qué la entrega de alta velocidad

Los requisitos previos para utilizar la entrega de alta velocidad por parte de organizaciones deportivas son los siguientes:

*   Todos los partidos están programados con antelación, por lo que sabe cuándo crear los Segmentos respectivos y puede precompilar segmentos de audiencia.
*   Cada partido está asociado con un ID único. Por ejemplo, el ID del partido para la Final de la Champions League es 0123.
*   Cada equipo está asociado con un ID único. Por ejemplo, el ID de la Juventus es 111, el ID del Real Madrid es 222, etc.
*   Hay un conjunto de eventos en vivo sobre los que desea notificar a los usuarios (goles, alineaciones, inicio, etc.).

## Configuración

<Aside type="caution" icon="setting" title="Se requiere asistencia de desarrollador">
****
La configuración de la entrega de alta velocidad requiere asistencia de desarrollador. Por favor, comparta esta guía con ellos para una implementación adecuada.
</Aside>

Todos los segmentos para la entrega de alta velocidad deben crearse con antelación, idealmente antes de que comience el partido en el caso de uso de ejemplo. Pushwoosh aplica condiciones de segmento a la base de usuarios de la aplicación y **precompila los segmentos cada 10 minutos** (este intervalo es ajustable).

Cuando envía una solicitud de API [`/createMessage`](/es/developer/api-reference/messages-api/#createmessage) con el contenido del push y el nombre del segmento, Pushwoosh ya tiene una lista precompilada de destinatarios, lo que permite enviar la notificación push al instante.

<Aside type="caution" title="Importante">
****
La compilación de segmentos consume recursos y su velocidad depende de:
- la complejidad de las condiciones del Segmento (el número de Tags utilizados, una alta cardinalidad de valores de Tag);
- el número de Segmentos únicos precompilados simultáneamente;
- el número de usuarios suscritos a la aplicación.

Por lo tanto, **todos los Segmentos para un juego deben crearse a través de la API antes del inicio del juego y eliminarse después** para mantener el número de Segmentos precompilados activos al mínimo y ahorrar recursos informáticos.

</Aside>

### Crear Tags

Primero, cree un conjunto de Tags para aplicar y establezca valores de Tag para los dispositivos de los usuarios.
[Cree Tags](/es/product/audience-data-and-segmentation/user-data-tags/tags/) del tipo LIST correspondientes a eventos de partidos en vivo como **inicio, gol, tarjeta roja,** etc.

Por ejemplo:
**MATCH-KICKOFF, MATCH-GOAL, MATCH-RED\_CARD**
![Crear Tags](/push-notifications-high-speed-delivery-2.webp)

Cree el mismo conjunto de Tags que describan eventos de partidos en vivo para equipos.
Por ejemplo:
**TEAM-KICKOFF, TEAM-GOAL, TEAM-RED\_CARD**

<Aside type="tip">
Para crear Tags a través de la API, llame a [`/addTag`](/es/developer/api-reference/tags/#addtag).
</Aside>

Al suscribirse a estos Tags, los usuarios de la aplicación pueden elegir qué notificaciones desean recibir:

- notificaciones sobre el partido específico (por ejemplo, partido Juventus - Real Madrid);
- notificaciones sobre los partidos del equipo favorito (por ejemplo, solo partidos de la Juventus);
- notificaciones sobre eventos que ocurren durante el partido (por ejemplo, goles solo en el partido Juventus - Real Madrid);
- notificaciones sobre eventos específicos del equipo favorito (por ejemplo, goles y alineaciones de los partidos de la Juventus).

### Establecer Tags

Ahora puede completar los valores de Tag especificados anteriormente a través de la solicitud de API [`setTags`](/es/developer/api-reference/device-api/#settags) y suscribir a los usuarios a categorías específicas de notificaciones push.

Por ejemplo:
Cuando un usuario se suscribe para recibir actualizaciones de inicio y goles de la Final de la Champions League, llame a [`/setTags`](/es/developer/api-reference/device-api/#settags) con el ID del partido incluido:

```javascript
{
  "request": {
    "application": "app_code",
    "hwid": "device_hardware_id",
    "tags": {
      "MATCH_KICKOFF": "0123", // match ID
      "MATCH_GOAL": "0123"     // match ID
    }
  }
}
```

El usuario recibirá notificaciones sobre el inicio y los goles marcados en la Final de la Champions League.
Cuando un usuario se suscribe para recibir actualizaciones de goles y tarjetas rojas de los partidos del Real Madrid, llame a [`/setTags`](/es/developer/api-reference/device-api/#settags) de la siguiente manera:

```javascript
{
  "request": {
    "application": "app_code",
    "hwid": "device_hardware_id",
    "tags": {
      "TEAM_KICKOFF": "222", // team ID
      "TEAM_GOAL": "222"     // team ID
    }
  }
}
```
Este usuario recibirá notificaciones sobre inicios y goles siempre que juegue el Real Madrid.

### Crear Segmentos

Ahora puede crear Segmentos para eventos de partidos basados en Tags y sus valores (IDs de partidos e IDs de equipos). Los Segmentos deben crearse a través de la solicitud de API [`/createFilter`](/es/developer/api-reference/segmentation-filters-api/#createfilter) 30 minutos antes de que comience el partido.

Para notificar a los usuarios sobre los goles marcados en la Final de la Champions League del ejemplo anterior, llame a [`/createFilter`](/es/developer/api-reference/segmentation-filters-api/#createfilter) con los siguientes parámetros:
**Nombre del Segmento**: 0123_GOAL
**Condiciones del Segmento**: `#TEAM-GOAL(111, 222) OR #MATCH-GOAL(0123)`

```javascript
{
  "request": {
    "auth": "auth_token",
    "name": "0123_GOAL",
    "conditions": [
      ["TEAM-GOAL", "IN", ["111", "222"]],
      ["MATCH-GOAL", "IN", ["0123"]]
    ],
    "operator": "OR", // optional. Operator values: 'AND', 'OR'
    "application" : "AAAAA-00000"
  }
}
```
Esta solicitud compilará el segmento de usuarios suscritos a actualizaciones de goles de la Final de la Champions League (ID de partido=0123) O usuarios que siguen a la Juventus o al Real Madrid (ID de equipo=111,222).

Para configurar una Entrega de Alta Velocidad en su Panel de Control de Pushwoosh, [cree un nuevo Segmento](/es/product/audience-data-and-segmentation/segmentation/create-segments) con los valores de Tag correspondientes y asócielo a la aplicación a la que va a enviar los push. Los Segmentos específicos de la aplicación se precompilan cada 10 minutos para mantener los segmentos de audiencia siempre actualizados.

![crear un nuevo Segmento](/push-notifications-high-speed-delivery-1.webp)

Cuando ocurre el evento del partido (gol marcado, inicio del partido, tarjeta roja, etc.), llame a [`/createMessage`](/es/developer/api-reference/messages-api/#createmessage) con el contenido de la notificación push y el nombre del Segmento incluido:

```json
{
  "request": {
    "application": "AAAAA_00000",
    "auth": "auth_token",
    "notifications": [
      {
        "content": "12’ Juventus goal! Juventus 1 – 0 Real Madrid",
        "filter": "0123_GOAL",
        "send_date": "now"
      }
    ]
  }
}
```
Una vez que recibimos la llamada [`/createMessage`](/es/developer/api-reference/messages-api/#createmessage), ya tenemos una lista precompilada de dispositivos que coinciden con los criterios del Segmento, e inmediatamente enviamos la notificación hacia las puertas de enlace APNs y FCM.

<Aside type="caution" title="Importante">
*****
Los Segmentos de Entrega de Alta Velocidad no admiten el uso del operador **daysago**. Si intenta crear un Segmento con este operador, recibirá un mensaje de error.

Esta restricción existe porque, para funcionar correctamente, los Segmentos de Entrega de Alta Velocidad dependen de los cambios que ocurrieron en la aplicación en los dispositivos de los usuarios (como suscribirse a notificaciones push o establecer un valor de Tag específico). El operador **daysago** no implica tales cambios, por lo que el Segmento no funcionará según lo previsto.
Además, tenga en cuenta que los Segmentos de Entrega de Alta Velocidad no se pueden utilizar con mensajes programados.
</Aside>

## Eliminar Segmentos

Después de que termine el partido, todos los Segmentos correspondientes deben eliminarse para que no se gasten recursos informáticos en una mayor recompilación de Segmentos que ya no son relevantes, especialmente a expensas de los Segmentos para partidos que están programados a continuación. Elimine Segmentos a través de la solicitud de API [`/deleteFilter`](/es/developer/api-reference/segmentation-filters-api/#deletefilter), por ejemplo:

```json
{
  "request": {
    "auth": "auth_token",
    "name": "0123_GOAL"
  }
}
```

Para evitar la eliminación manual de Segmentos, establezca la fecha de vencimiento del Segmento a través de la solicitud [`/createFilter`](/es/developer/api-reference/segmentation-filters-api/#createfilter) para que el Segmento se elimine automáticamente en la fecha especificada:

```javascript
{
  "request": {
    "auth": "auth_token",
    "name": "0123_GOAL",
    "conditions": [
      ["TEAM-GOAL", "IN", ["111", "222"]],
      ["MATCH-GOAL", "IN", ["0123"]]
    ],
    "operator": "OR",  // optional. Values: 'AND', 'OR'
    "application": "AAAAA-00000",
    "expiration_date": "YYYY-MM-DD"  // optional. Segment (Filter) expiry
  }
}
```