# Lenguaje de segmentación

Pushwoosh ofrece un potente motor de segmentación para construir Segmentos granulares basados en valores de Tag. El **Lenguaje de Segmentación** es una forma específica de escribir y combinar criterios de segmentación para describir un grupo particular de usuarios que coinciden con esos criterios y tratarlos como un único segmento de audiencia.

Este artículo describe los conceptos básicos y la sintaxis del Lenguaje de Segmentación y proporciona ejemplos completos de construcción de criterios de segmentación para diversos casos.

## Conceptos básicos

Cada dispositivo en su base de usuarios tiene atributos específicos asociados a él a través de **valores de Tag**.

Por ejemplo, digamos que una usuaria llamada Jane vive en Tokio y su edad es de 28 años. Esa usuaria tendrá los siguientes Tags establecidos para su dispositivo:

*   Nombre: Jane
*   Ciudad: Tokio
*   Edad: 28

Para dirigirse a Jane, deberá describir un segmento de la siguiente manera:

`T("Name", eq, "Jane") * T("Age", eq, 28) * T("City", eq, "Tokyo")`

Esta combinación de condiciones es una **expresión de filtro** utilizada en el Lenguaje de Segmentación para describir grupos de usuarios, también conocidos como Segmentos de audiencia.

## Expresiones de filtro

Una expresión de filtro es una cadena que contiene una condición o una combinación de condiciones que describen el segmento que necesita.

### Condiciones

Cada condición describe un segmento de dispositivos que coinciden con los criterios especificados en esa condición.

Por ejemplo, la siguiente condición construye un segmento de usuarios que viven en Tokio:

`T("City", e, "Tokyo")`

donde

*   T es un Tag (tipo de condición);
*   eq es un operador a aplicar;
*   "Tokyo" es un valor de Tag que los usuarios tienen asociado a sus dispositivos.

#### Tipos de condición

Los siguientes tipos de condición están disponibles para la segmentación:

*   **A** (Application) – describe un segmento de dispositivos con una aplicación particular instalada. Alias: **App**, **Application**;
*   **T** (Tag) – describe un segmento de dispositivos con los valores de Tag especificados;
*   **AT** (App-scoped tag) – busca un valor de tag dentro de una aplicación específica; se requiere el código de la aplicación como primer argumento. Alias: **Tag**;
*   **Event** – describe un segmento de dispositivos que activaron un evento específico de Pushwoosh;
*   **Geo** – describe un segmento de dispositivos dentro de un radio geográfico específico;
*   **BTTS** – describe un segmento de dispositivos basado en su mejor momento para enviar;
*   **Updated** – describe un segmento de dispositivos basado en su última marca de tiempo de actualización;
*   **Segment** – hace referencia a otro filtro/segmento por su código;

### Operaciones con condiciones

Para construir segmentos sofisticados, se pueden aplicar las siguientes operaciones a las condiciones dentro de la expresión de filtro:

#### Unión (+)

Une los segmentos, es decir, construye un nuevo segmento de usuarios que coinciden con al menos una de las condiciones especificadas.

<img src="/filters-segmentation-language-1.webp" alt=""/>

Por ejemplo, para dirigirse a usuarios que viven en Tokio o en Osaka, deberá describir el segmento con las siguientes condiciones:

`T("City", eq, "Tokyo") + T("City", eq, "Osaka")`

<Aside type="note">
Equivalente a la **disyunción** lógica (**OR**). También se puede escribir como operador **or**.
</Aside>

#### Intersección (\*)

Construye un segmento de usuarios que pertenecen a ambos segmentos descritos por las condiciones. Por lo tanto, solo se incluirán aquellos usuarios que cumplan con cada condición que especifique.

<img src="/filters-segmentation-language-2.webp" alt=""/>

La siguiente expresión describe un segmento de usuarios que viven en Tokio y han especificado sus nombres:

`T("City", eq, "Tokyo") * T("Name", any)`

<Aside type="note">
Análogo a la **conjunción** lógica (**AND**). También se puede escribir como operador **and**.
</Aside>

#### Diferencia (\\)

Construye un segmento de usuarios que pertenecen a uno de los segmentos descritos y no pertenecen a otro.

<img src="/filters-segmentation-language-3.webp" alt=""/>

Los usuarios que viven en Tokio pero no le han dado sus nombres se describirán de la siguiente manera:

`T("City", eq, "Tokyo") \ T("Name", any)`

<Aside type="note">
Equivalente a la **negación** lógica (**NOT**). También se puede escribir como operador **not**.
</Aside>

#### Paréntesis

Determinan el orden de las operaciones a realizar con las condiciones en su expresión de filtro.

Por ejemplo, la siguiente expresión de filtro obtendrá, en primer lugar, un segmento de los suscriptores de 12345-67890 cuya edad es 18 y luego restará a todos los hombres de ese segmento:

`( A("12345-67890") * T("Age", eq, 18) ) \ T("Gender", eq, "Male")`

## Operadores de condiciones de Tag

Para cada tipo de Tag, se aplican sus propios operadores.

### Operadores de Tags de tipo Entero

*   **eq** - igual a un valor especificado
*   **noteq** - no igual a un valor especificado
*   **lte** - menor o igual que un valor especificado
*   **gte** - mayor o igual que un valor especificado
*   **in** - cualquiera de los valores especificados
*   **notin** - no igual a ninguno de los valores especificados
*   **between** - en un rango especificado
*   **any** - dispositivos con cualquier valor establecido para el tag
*   **notset** - dispositivos sin valor establecido para el tag

<Aside type="note" title="Ejemplo de sintaxis de Tags de tipo Entero">
`T("int", eq, 42)`
</Aside>

### Operadores de Tags de tipo Cadena

*   **eq** - igual a un valor especificado
*   **noteq** - no igual a un valor especificado
*   **startswith** - comienza con un prefijo especificado
*   **endswith** - termina con un sufijo especificado
*   **contains** - contiene una subcadena especificada
*   **in** - igual a cualquiera de los valores especificados
*   **notin** - no igual a ninguno de los valores especificados
*   **any** - dispositivos con cualquier valor establecido para el tag
*   **notset** - dispositivos sin valor establecido para el tag

<Aside type="note" title="Ejemplos de sintaxis de Tags de tipo Cadena">
* `T("str", eq, "kangaroo")` - coincidencia exacta
* `T("str", startswith, "kang")` - comienza con "kang"
* `T("str", endswith, "roo")` - termina con "roo"
* `T("str", contains, "nga")` - contiene "nga" en cualquier parte de la cadena
</Aside>

### Operadores de Tags de tipo Lista

*   **in** - dispositivos con cualquiera de los valores de tag especificados
*   **notin** - ninguno de los valores de tag especificados asociados con el dispositivo
*   **any** - dispositivos con cualquier valor establecido para el tag
*   **notset** - dispositivos sin valor establecido para el tag

<Aside type="note" title="Ejemplo de sintaxis de Tags de tipo Lista">
`T("list", notin, ["kangaroo", "raccoon"])`
</Aside>

### Operadores de Tags de tipo Fecha

*   **eq** - igual a la fecha especificada
*   **noteq** - no igual a la fecha especificada
*   **lte** - antes o en la fecha especificada
*   **gte** - después o en la fecha especificada
*   **in** - igual a cualquiera de las fechas especificadas
*   **notin** - no igual a ninguna de las fechas especificadas
*   **between** - en un rango especificado
*   **any** - dispositivos con cualquier valor establecido para el tag
*   **notset** - dispositivos sin valor establecido para el tag
*   **match** - coincide con un mes del año y día del mes especificados.

<Aside type="note" title="Ejemplos del operador match">


* `AT("XXXXX-XXXXX", "Date tag", match month 4 day 1)` - dispositivos que tienen el "Date tag" establecido en el 1 de abril de cualquier año.
* `AT("XXXXX-XXXXX", "Date tag", match month "now" day 13)` - dispositivos que tienen el "Date tag" establecido en el día 13 del mes actual.
* `AT("XXXXX-XXXXX", "Date tag", match month "now" day "now+2")` - dispositivos que tienen el "Date tag" establecido para pasado mañana. Caso de uso común: felicitaciones de cumpleaños.
</Aside>

<Aside type="note" title="Ejemplos del operador Match para segmentos de aniversario y cumpleaños">
Puede [segmentar usuarios basándose en fechas de calendario recurrentes](/es/product/audience-data-and-segmentation/segmentation/create-segments/anniversary-segments), como cumpleaños o aniversarios. En estos casos, solo se tienen en cuenta el mes y el día, mientras que el año se ignora.

* `AT("XXXXX-XXXXX", "birthday", match month "now" day "now")`
   **Se dirige a usuarios cuyo cumpleaños es hoy** (mismo día y mes que hoy).
   *Use esto para enviar felicitaciones de cumpleaños u ofertas especiales en el cumpleaños real del usuario.*

* `AT("XXXXX-XXXXX", "birthday", match month "now" day "now+N")`
   **Se dirige a usuarios cuyo cumpleaños es en N días** (mismo mes y día, N días a partir de hoy).
   *Use esto para preparar a los usuarios con antelación, por ejemplo, enviar mensajes de cuenta atrás o recordatorios de eventos próximos.*

* `AT("XXXXX-XXXXX", "birthday", match month "now" day "now-N")`
   **Se dirige a usuarios cuyo cumpleaños fue hace N días**.
   *Use esto para mensajes de cumpleaños tardíos o seguimientos como solicitudes de feedback.*
* `AT("XXXXX-XXXXX", "birthday", match month "now" day N)`
   **Se dirige a usuarios cuyo cumpleaños es el día N del mes actual**, independientemente del año.
   *Use esto al planificar campañas mensuales fijas vinculadas a fechas específicas (por ejemplo, recompensas de lealtad mensuales el día 10).*
</Aside>

*   **daysago eq** - igual a un número especificado de días antes del día actual
*   **daysago noteq** - no igual a un número especificado de días antes del día actual
*   **daysago lte** - menor o igual que un número especificado de días antes del día actual
*   **daysago gte** - mayor o igual que un número especificado de días antes del día actual
*   **daysago between** - entre los números de días especificados

<Aside type="note" title="Ejemplos del operador daysago">

* `T("Date tag", daysago, eq, 0)` - el día actual desde las 00:00 hasta el momento actual
* `T("Date tag", daysago, eq, 1)` - desde las 00:00 del día anterior hasta las 00:00 del día actual
* `T("Date tag", daysago, gte, 1)` - todo el tiempo hasta las 00:00 del día actual
* `T("Date tag", daysago, lte, 7)` - desde las 00:00 del día de hace 6 días hasta el momento actual
* `T("Date tag", daysago, between, [2,7])` - de 7 a 2 días atrás.
</Aside>

*   **minutesago lte** - menor o igual que un número especificado de minutos antes del momento actual
*   **minutesago gte** - mayor o igual que un número especificado de minutos antes del momento actual

<Aside type="note" title="Ejemplos del operador minutesago">

* `T("Date tag", minutesago, lte, 30)` - los últimos 30 minutos;
* `T("Date tag", minutesago, gte, 60)` - hace 60 o más minutos;
* `T("Date tag", minutesago, lte, 1)` - en el último minuto.
</Aside>

*   **daysahead** - en N a M días desde el día actual (UTC), inclusivo en ambos extremos

<Aside type="note" title="Ejemplos del operador daysahead">

`daysahead` toma un intervalo `[from, to]` (días desde la medianoche UTC de hoy, ambos extremos inclusivos). A diferencia de `daysago`, no tiene un suboperador, solo la forma de intervalo.

* `T("Date tag", daysahead, [0, 0])` - el día actual de 00:00 a 23:59:59
* `T("Date tag", daysahead, [1, 1])` - el día siguiente de 00:00 a 23:59:59
* `T("Date tag", daysahead, [2, 5])` - cualquier momento desde el inicio de 2 días a partir de ahora hasta el final de 5 días a partir de ahora
</Aside>

<Aside type="note" title="Ejemplo del operador de fecha">
* `T("Date tag", eq "2022-12-05 00:00:00")`
</Aside>

### Operadores de Tags de tipo Booleano

*   **eq** - igual a un valor especificado
*   **noteq** - no igual a un valor especificado
*   **any** - dispositivos con cualquier valor establecido para el tag
*   **notset** - dispositivos sin valor establecido para el tag

<Aside type="note" title="Ejemplo de sintaxis de Tags de tipo Booleano">
 `T("bool", eq, true)`
</Aside>

### Operadores de Tags de tipo Precio

*   **eq** - igual a un valor especificado
*   **noteq** - no igual a un valor especificado
*   **lte** - menor o igual que un valor especificado
*   **gte** - mayor o igual que un valor especificado
*   **in** - igual a cualquiera de los valores especificados
*   **notin** - no igual a ninguno de los valores especificados
*   **between** - en un rango especificado
*   **any** - dispositivos con cualquier valor establecido para el tag
*   **notset** - dispositivos sin valor establecido para el tag

<Aside type="note" title="Ejemplo de sintaxis de Tags de tipo Precio">
`T("price", between, ["4.2", "6.9"])`
</Aside>

### Operadores de Tags de tipo Versión

*   **eq** - igual a un valor especificado
*   **noteq** - no igual a un valor especificado
*   **lte** - menor o igual que un valor especificado
*   **gte** - mayor o igual que un valor especificado
*   **in** - igual a cualquiera de los valores especificados
*   **notin** - no igual a ninguno de los valores especificados
*   **between** - en un rango especificado
*   **any** - dispositivos con cualquier valor establecido para el tag
*   **notset** - dispositivos sin valor establecido para el tag

<Aside type="note" title="Ejemplo de sintaxis de Tags de tipo Versión">
`T("version", lte, "4.2")`
</Aside>

## Operadores de condiciones de Evento

<Aside type="note">
Tenga en cuenta que las condiciones de evento son específicas de la aplicación, por lo que el código de la aplicación debe especificarse en sus expresiones de filtro junto con el nombre del evento.
</Aside>

### Conteo de eventos

*   **count gte** - dispositivos que activaron el evento más de o exactamente n veces
*   **count lte** - dispositivos que activaron el evento menos de o exactamente n veces
*   **count eq** - dispositivos que activaron el evento exactamente n veces
*   **count noteq** - dispositivos que activaron el evento cualquier número de veces pero no igual a n

<Aside type="note" title="Ejemplo de sintaxis de conteo de eventos">
 `Event("11111-11111", "Level reached", count gte 10) // 11111-11111 es un código de aplicación`
</Aside>

### Fecha del evento

*   **date gte** - dispositivos que activaron el evento después o exactamente en la fecha especificada
*   **date lte** - dispositivos que activaron el evento antes o exactamente en la fecha especificada
*   **date eq** - dispositivos que activaron el evento exactamente en la fecha especificada
*   **date noteq** - dispositivos que activaron el evento en cualquier momento pero no en la fecha especificada
*   **date in** - dispositivos que activaron el evento en cualquiera de las fechas especificadas
*   **date notin** - dispositivos que activaron el evento en cualquier momento pero no en ninguna de las fechas especificadas
*   **date between** - dispositivos que activaron el evento dentro de un período especificado
*   **date daysago eq** - la fecha de activación del evento es igual a un número especificado de días antes del día actual
*   **date daysago noteq** - la fecha de activación del evento no es igual a un número especificado de días antes del día actual
*   **date daysago lte** - la fecha de activación del evento es menor o igual que un número especificado de días antes del día actual
*   **date daysago gte** - la fecha de activación del evento es mayor o igual que un número especificado de días antes del día actual
*   **date daysago between** - la fecha de activación del evento está entre los números de días especificados
*   **date daysahead** - la fecha de activación del evento es en un número especificado de días desde el día actual (el intervalo es inclusivo en ambos extremos, consulte los Operadores de Tags de tipo Fecha más arriba para la semántica completa)
*   **date minutesago lte** - la fecha de activación del evento es menor o igual que el número especificado de minutos antes del momento actual
*   **date minutesago gte** - la fecha de activación del evento es mayor o igual que el número especificado de minutos antes del momento actual

<Aside type="note" title="Ejemplos de sintaxis de fecha de evento">

- `Event("11111-11111", "Level reached", date gte "2022-01-01 01:02:03")`
- `Event("11111-11111", "Level reached", date in ["2022-01-01 01:02:03", "2022-01-01 02:03:04"])`
- `Event("11111-11111", "Level reached", date between "2022-01-01 01:02:03" "2022-01-01 02:03:04")`
- `Event("11111-11111", "Level reached", date daysahead 0 7)` - eventos con una fecha de activación dentro de los próximos 7 días
- `Event("11111-11111", "Level reached", date minutesago lte 30)` - eventos en los últimos 30 minutos
- `Event("11111-11111", "Level reached", date minutesago gte 60)` - eventos de hace 60+ minutos

</Aside>

### Plataformas de eventos

Filtre eventos por la plataforma donde se activaron.

*   **platforms** - lista de plataformas (p. ej., ["ios", "android"])

<Aside type="note" title="Ejemplo de sintaxis de plataformas de eventos">
`Event("11111-11111", "Level reached", platforms ["android", "ios"], count gte 5)`
</Aside>

### Atributos de evento

Las condiciones de evento pueden filtrar en función de los valores de los atributos del evento. Los atributos admiten varios tipos de datos con sus operadores correspondientes.

#### Atributos de evento de tipo Entero

*   **attribute "name" eq** - el atributo es igual a un valor especificado
*   **attribute "name" noteq** - el atributo no es igual a un valor especificado
*   **attribute "name" gte** - el atributo es mayor o igual que un valor especificado
*   **attribute "name" lte** - el atributo es menor o igual que un valor especificado
*   **attribute "name" between** - el atributo está en un rango especificado
*   **attribute "name" in** - el atributo es igual a cualquiera de los valores especificados
*   **attribute "name" notin** - el atributo no es igual a ninguno de los valores especificados
*   **attribute "name" any** - cualquier valor establecido para el atributo
*   **attribute "name" notset** - ningún valor establecido para el atributo

<Aside type="note" title="Ejemplos de sintaxis de atributos de tipo Entero">

* `Event("11111-11111", "Purchase", attribute "amount" eq 42)`
* `Event("11111-11111", "Purchase", attribute "amount" between 10 100)`
* `Event("11111-11111", "Purchase", attribute "amount" in [10, 20, 30])`

</Aside>

#### Atributos de evento de tipo Cadena

*   **attribute "name" eq** - el atributo es igual a un valor especificado
*   **attribute "name" noteq** - el atributo no es igual a un valor especificado
*   **attribute "name" startswith** - el atributo comienza con un prefijo especificado
*   **attribute "name" endswith** - el atributo termina con un sufijo especificado
*   **attribute "name" contains** - el atributo contiene una subcadena especificada
*   **attribute "name" in** - el atributo es igual a cualquiera de los valores especificados
*   **attribute "name" notin** - el atributo no es igual a ninguno de los valores especificados
*   **attribute "name" any** - cualquier valor establecido para el atributo
*   **attribute "name" notset** - ningún valor establecido para el atributo

<Aside type="note" title="Ejemplos de sintaxis de atributos de tipo Cadena">

* `Event("11111-11111", "Page View", attribute "url" startswith "https://example.com")`
* `Event("11111-11111", "Page View", attribute "url" endswith ".html")`
* `Event("11111-11111", "Page View", attribute "url" contains "/products/")`
* `Event("11111-11111", "Button Click", attribute "button_name" in ["submit", "cancel"])`

</Aside>

#### Atributos de evento de tipo Booleano

*   **attribute "name" eq** - el atributo es igual a verdadero o falso
*   **attribute "name" noteq** - el atributo no es igual a verdadero o falso

<Aside type="note" title="Ejemplo de sintaxis de atributos de tipo Booleano">
`Event("11111-11111", "Feature Toggle", attribute "enabled" eq true)`
</Aside>

#### Atributos de evento de tipo Fecha

*   **attribute "name" eq** - el atributo es igual a una fecha especificada
*   **attribute "name" noteq** - el atributo no es igual a una fecha especificada
*   **attribute "name" gte** - el atributo es posterior o en una fecha especificada
*   **attribute "name" lte** - el atributo es anterior o en una fecha especificada
*   **attribute "name" between** - el atributo está dentro de un rango de fechas especificado
*   **attribute "name" in** - el atributo es igual a cualquiera de las fechas especificadas
*   **attribute "name" notin** - el atributo no es igual a ninguna de las fechas especificadas
*   **attribute "name" daysago eq/noteq/gte/lte/between** - atributo relativo a días atrás
*   **attribute "name" daysahead from to** - atributo en un intervalo especificado de días desde el día actual (el intervalo es inclusivo en ambos extremos, consulte los Operadores de Tags de tipo Fecha más arriba para la semántica completa)
*   **attribute "name" minutesago gte/lte** - atributo relativo a minutos atrás
*   **attribute "name" any** - cualquier valor establecido para el atributo
*   **attribute "name" notset** - ningún valor establecido para el atributo

<Aside type="note" title="Ejemplos de sintaxis de atributos de tipo Fecha">

* `Event("11111-11111", "Subscription", attribute "start_date" eq "2022-01-01 01:02:03")`
* `Event("11111-11111", "Subscription", attribute "start_date" between "2022-01-01 00:00:00" "2022-12-31 23:59:59")`
* `Event("11111-11111", "Subscription", attribute "start_date" daysago lte 30)` - en los últimos 30 días
* `Event("11111-11111", "Subscription", attribute "renewal_at" daysahead 0 30)` - renovaciones en los próximos 30 días
* `Event("11111-11111", "Subscription", attribute "start_date" minutesago gte 60)` - hace 60+ minutos

</Aside>

#### Atributos de evento de tipo Precio

*   **attribute "name" eq** - el atributo es igual a un valor de precio especificado
*   **attribute "name" noteq** - el atributo no es igual a un valor de precio especificado
*   **attribute "name" gte** - el atributo es mayor o igual que un precio especificado
*   **attribute "name" lte** - el atributo es menor o igual que un precio especificado
*   **attribute "name" between** - el atributo está en un rango de precios especificado
*   **attribute "name" in** - el atributo es igual a cualquiera de los precios especificados
*   **attribute "name" notin** - el atributo no es igual a ninguno de los precios especificados
*   **attribute "name" any** - cualquier valor establecido para el atributo
*   **attribute "name" notset** - ningún valor establecido para el atributo

<Aside type="note" title="Ejemplo de sintaxis de atributos de tipo Precio">
`Event("11111-11111", "Purchase", attribute "total_price" between 10.00 50.00)`
</Aside>

#### Atributos de evento de tipo Lista

*   **attribute "name" in** - el atributo contiene cualquiera de los valores especificados
*   **attribute "name" notin** - el atributo no contiene ninguno de los valores especificados
*   **attribute "name" any** - cualquier valor establecido para el atributo
*   **attribute "name" notset** - ningún valor establecido para el atributo

<Aside type="note" title="Ejemplo de sintaxis de atributos de tipo Lista">
`Event("11111-11111", "Cart Update", attribute "product_ids" in ["prod-123", "prod-456"])`
</Aside>

## Tipos de condición adicionales

### Condición Geo

Diríjase a dispositivos basados en la ubicación geográfica dentro de un radio especificado.

**Sintaxis:** `Geo("<app-code>", <latitude>, <longitude>, <range-in-km>)`

<Aside type="note" title="Ejemplo de sintaxis de Geo">
`Geo("11111-11111", 53.2734, -7.77832031, 100.05)` - dispositivos dentro de 100.05 km de las coordenadas
</Aside>

### Condición BTTS

Diríjase a dispositivos por su mejor momento para enviar notificaciones (hora del día, 0-23).

**Operadores:**
*   **any** - cualquier valor de mejor momento para enviar establecido
*   **eq** - coincidencia exacta de hora
*   **noteq** - no igual a la hora
*   **gte** - hora mayor o igual que
*   **lte** - hora menor o igual que

<Aside type="note" title="Ejemplos de sintaxis de BTTS">

* `BTTS("11111-11111", eq 10)` - dispositivos con mejor momento a las 10:00
* `BTTS("11111-11111", gte 18)` - dispositivos con mejor momento a partir de las 18:00
* `BTTS("11111-11111", any)` - dispositivos con cualquier valor de mejor momento

</Aside>

### Condición Updated

Filtre dispositivos por su última marca de tiempo de actualización.

**Operadores:**
*   **gte** - actualizado después o en la fecha especificada
*   **lte** - actualizado antes o en la fecha especificada
*   **between** - actualizado dentro del rango de fechas

<Aside type="note" title="Ejemplos de sintaxis de Updated">

* `Updated("11111-11111", gte "2022-01-01 00:00:00")` - dispositivos actualizados después del 1 de enero de 2022
* `Updated("11111-11111", lte "2022-12-31 23:59:59")` - dispositivos actualizados antes del 31 de diciembre de 2022
* `Updated("11111-11111", between "2022-01-01 00:00:00" "2022-12-31 23:59:59")` - dispositivos actualizados en 2022

</Aside>

### Condición de Segmento

Haga referencia a otro filtro/segmento por su código.

<Aside type="note" title="Ejemplo de sintaxis de Segmento">
`Segment("11111-11111", "22222-22222")` - hacer referencia al filtro con el código "22222-22222"
</Aside>

## Indicadores de presencia de dispositivo en condición de Aplicación

Las condiciones de aplicación admiten indicadores adicionales para controlar el filtrado de dispositivos y tokens:

*   **with_tokens** - dispositivos con tokens de notificación push
*   **without_tokens** - dispositivos sin tokens de notificación push
*   **with_devices** - usuarios con dispositivos registrados
*   **without_devices** - usuarios/perfiles sin dispositivos registrados

<Aside type="note" title="Ejemplos de sintaxis de indicadores de Aplicación">

* `A("11111-11111", ["ios", "android"], [with_tokens])` - dispositivos con tokens de push
* `A("11111-11111", ["ios", "android"], [without_tokens])` - dispositivos sin tokens de push
* `A("11111-11111", [], [with_devices])` - todos los dispositivos con registros de dispositivo
* `A("11111-11111", ["ios", "android"], [without_tokens, with_devices])` - dispositivos sin tokens pero con registros de dispositivo

</Aside>

## Ejemplos de expresiones de filtro

<Aside type="note">
Al escribir consultas JSON, asegúrese de escapar las comillas (`"`) y las barras invertidas (`\`) con una barra invertida (`\`).
Para un ejemplo de solicitud, consulte [/exportSegment](/es/developer/api-reference/segmentation-filters-api/#exportsegment).
</Aside>

### Ejemplos básicos

1.  Dispositivos iOS y Android con la aplicación instalada y con tokens de push:

```json
A("11111-11111", ["ios","android"], [with_tokens])
```

2.  Dispositivos iOS y Android con la aplicación instalada pero sin tokens de push:

```json
A("11111-11111", ["ios","android"], [without_tokens])
```

3.  Dispositivos iOS y Android con la aplicación instalada, ya sea que tengan tokens de push o no:

```json
A("11111-11111", ["ios","android"], [with_tokens, without_tokens])
```

4.  Todos los suscriptores de la aplicación que han comprado algo en la aplicación:

```json
AT("11111-11111", "In-App Purchase", gte, 1)
```

### Ejemplos avanzados

5.  Usuarios en Tokio que han abierto la aplicación en los últimos 7 días:

```json
T("City", eq, "Tokyo") * Event("11111-11111", "App Open", date daysago lte 7)
```

6.  Usuarios que realizaron una compra de más de $50 en los últimos 30 días:

```json
Event("11111-11111", "Purchase", attribute "total_price" gte 50.00, date daysago lte 30)
```

7.  Usuarios cuyos nombres comienzan con "J" o terminan con "e":

```json
T("Name", startswith, "J") + T("Name", endswith, "e")
```

8.  Usuarios activos de iOS a menos de 100 km de Nueva York que no han comprado recientemente:

```json
A("11111-11111", ["ios"], [with_tokens]) * Geo("11111-11111", 40.7128, -74.0060, 100) \ Event("11111-11111", "Purchase", date daysago lte 30)
```

9.  Usuarios con el mejor momento para enviar entre las 9 AM y las 5 PM:

```json
BTTS("11111-11111", gte 9) * BTTS("11111-11111", lte 17)
```

10. Usuarios que activaron un evento específico en Android o iOS en la última hora:

```json
Event("11111-11111", "Button Click", platforms ["android", "ios"], date minutesago lte 60)
```

11. Dispositivos actualizados en los últimos 3 meses con la versión de la aplicación 4.2 o superior:

```json
Updated("11111-11111", gte "2024-07-01 00:00:00") * AT("11111-11111", "App Version", gte, "4.2")
```