# Langage de segmentation

Pushwoosh offre un moteur de segmentation puissant pour construire des segments granulaires basés sur les valeurs de Tag. Le **langage de segmentation** est une manière spécifique d'écrire et de combiner des critères de segmentation pour décrire un groupe particulier d'utilisateurs qui correspondent à ces critères et les traiter comme un seul segment d'audience.

Cet article décrit les concepts de base et la syntaxe du langage de segmentation et fournit des exemples complets de construction de critères de segmentation pour divers cas.

## Les bases

Chaque appareil de votre base d'utilisateurs a des attributs spécifiques qui lui sont associés via des **valeurs de Tag**.

Par exemple, disons qu'une utilisatrice nommée Jane vit à Tokyo et a 28 ans. Cette utilisatrice aura les Tags suivants définis pour son appareil :

*   Nom : Jane
*   Ville : Tokyo
*   Âge : 28

Pour cibler Jane, vous devrez décrire un segment comme suit :

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

Cette combinaison de conditions est une **expression de filtre** utilisée dans le langage de segmentation pour décrire des groupes d'utilisateurs, c'est-à-dire des segments d'audience.

## Expressions de filtre

L'expression de filtre est une chaîne de caractères qui contient une condition ou une combinaison de conditions décrivant le segment dont vous avez besoin.

### Conditions

Chaque condition décrit un segment d'appareils qui correspondent aux critères spécifiés dans cette condition.

Par exemple, la condition suivante construit un segment d'utilisateurs qui vivent à Tokyo :

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

où

*   T est un Tag (type de condition) ;
*   eq est un opérateur à appliquer ;
*   "Tokyo" est une valeur de Tag que les utilisateurs ont associée à leurs appareils.

#### Types de conditions

Les types de conditions suivants sont disponibles pour la segmentation :

*   **A** (Application) – décrit un segment d'appareils sur lesquels une application particulière est installée. Alias : **App**, **Application** ;
*   **T** (Tag) – décrit un segment d'appareils avec les valeurs de Tag spécifiées ;
*   **AT** (Tag lié à l'application) – recherche une valeur de tag au sein d'une application spécifique ; le code de l'application est requis comme premier argument. Alias : **Tag** ;
*   **Event** – décrit un segment d'appareils ayant déclenché un événement Pushwoosh spécifique ;
*   **Geo** – décrit un segment d'appareils dans un rayon géographique spécifique ;
*   **BTTS** – décrit un segment d'appareils en fonction de leur meilleur moment pour l'envoi ;
*   **Updated** – décrit un segment d'appareils en fonction de leur dernière date de mise à jour ;
*   **Segment** – référence un autre filtre/segment par son code ;

### Opérations avec les conditions

Pour construire des segments sophistiqués, les opérations suivantes peuvent être appliquées aux conditions dans l'expression de filtre :

#### Union (+)

Joint les segments, c'est-à-dire, construit un nouveau segment d'utilisateurs qui correspondent à au moins une des conditions spécifiées.

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

Par exemple, pour cibler les utilisateurs qui vivent à Tokyo ou à Osaka, vous devrez décrire le segment avec les conditions suivantes :

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

<Aside type="note">
Équivaut à la **disjonction** logique (**OU**). Peut également s'écrire avec l'opérateur **or**.
</Aside>

#### Intersection (*)

Construit un segment d'utilisateurs appartenant aux deux segments décrits par les conditions. Ainsi, seuls les utilisateurs qui respectent chaque condition que vous spécifiez seront inclus.

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

L'expression suivante décrit un segment d'utilisateurs qui vivent à Tokyo et qui ont spécifié leur nom :

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

<Aside type="note">
Analogue à la **conjonction** logique (**ET**). Peut également s'écrire avec l'opérateur **and**.
</Aside>

#### Différence (\\)

Construit un segment d'utilisateurs qui appartiennent à l'un des segments décrits et n'appartiennent pas à l'autre.

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

Les utilisateurs qui vivent à Tokyo mais qui ne vous ont pas donné leur nom seront décrits comme suit :

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

<Aside type="note">
Équivaut à la **négation** logique (**NON**). Peut également s'écrire avec l'opérateur **not**.
</Aside>

#### Parenthèses

Déterminent l'ordre des opérations à effectuer avec les conditions dans votre expression de filtre.

Par exemple, l'expression de filtre suivante obtiendra d'abord un segment des abonnés de 12345-67890 dont l'âge est de 18 ans, puis soustraira tous les hommes de ce segment :

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

## Opérateurs de conditions de Tag

Pour chaque type de Tag, ses propres opérateurs sont appliqués.

### Opérateurs de Tags entiers

*   **eq** - égal à une valeur spécifiée
*   **noteq** - différent d'une valeur spécifiée
*   **lte** - inférieur ou égal à une valeur spécifiée
*   **gte** - supérieur ou égal à une valeur spécifiée
*   **in** - l'une des valeurs spécifiées
*   **notin** - différent de toutes les valeurs spécifiées
*   **between** - dans une plage spécifiée
*   **any** - appareils avec n'importe quelle valeur définie pour le tag
*   **notset** - appareils sans valeur définie pour le tag

<Aside type="note" title="Exemple de syntaxe pour les Tags entiers">
`T("int", eq, 42)`
</Aside>

### Opérateurs de Tags de chaîne

*   **eq** - égal à une valeur spécifiée
*   **noteq** - différent d'une valeur spécifiée
*   **startswith** - commence par un préfixe spécifié
*   **endswith** - se termine par un suffixe spécifié
*   **contains** - contient une sous-chaîne spécifiée
*   **in** - égal à l'une des valeurs spécifiées
*   **notin** - différent de toutes les valeurs spécifiées
*   **any** - appareils avec n'importe quelle valeur définie pour le tag
*   **notset** - appareils sans valeur définie pour le tag

<Aside type="note" title="Exemples de syntaxe pour les Tags de chaîne">
* `T("str", eq, "kangaroo")` - correspondance exacte
* `T("str", startswith, "kang")` - commence par "kang"
* `T("str", endswith, "roo")` - se termine par "roo"
* `T("str", contains, "nga")` - contient "nga" n'importe où dans la chaîne
</Aside>

### Opérateurs de Tags de liste

*   **in** - appareils avec l'une des valeurs de tag spécifiées
*   **notin** - aucune des valeurs de tag spécifiées n'est associée à l'appareil
*   **any** - appareils avec n'importe quelle valeur définie pour le tag
*   **notset** - appareils sans valeur définie pour le tag

<Aside type="note" title="Exemple de syntaxe pour les Tags de liste">
`T("list", notin, ["kangaroo", "raccoon"])`
</Aside>

### Opérateurs de Tags de date

*   **eq** - égal à la date spécifiée
*   **noteq** - différent de la date spécifiée
*   **lte** - avant ou à la date spécifiée
*   **gte** - après ou à la date spécifiée
*   **in** - égal à l'une des dates spécifiées
*   **notin** - différent de toutes les dates spécifiées
*   **between** - dans une plage spécifiée
*   **any** - appareils avec n'importe quelle valeur définie pour le tag
*   **notset** - appareils sans valeur définie pour le tag
*   **match** - correspond à un mois de l'année et un jour du mois spécifiés.

<Aside type="note" title="Exemples de l'opérateur match">


* `AT("XXXXX-XXXXX", "Date tag", match month 4 day 1)` - appareils dont le "Tag de date" est défini au 1er avril de n'importe quelle année.
* `AT("XXXXX-XXXXX", "Date tag", match month "now" day 13)` - appareils dont le "Tag de date" est défini au 13ème jour du mois en cours.
* `AT("XXXXX-XXXXX", "Date tag", match month "now" day "now+2")` - appareils dont le "Tag de date" est défini à après-demain. Cas d'utilisation courant : vœux d'anniversaire.
</Aside>

<Aside type="note" title="Exemples de l'opérateur Match pour les segments d'anniversaire">
Vous pouvez [segmenter les utilisateurs en fonction de dates calendaires récurrentes](/fr/product/audience-data-and-segmentation/segmentation/create-segments/anniversary-segments), comme les anniversaires. Dans ces cas, seuls le mois et le jour sont pris en compte, tandis que l'année est ignorée.

* `AT("XXXXX-XXXXX", "birthday", match month "now" day "now")`
   **Cible les utilisateurs dont l'anniversaire est aujourd'hui** (même jour et même mois qu'aujourd'hui).
   *Utilisez ceci pour envoyer des vœux d'anniversaire ou des offres spéciales le jour même de l'anniversaire de l'utilisateur.*

* `AT("XXXXX-XXXXX", "birthday", match month "now" day "now+N")`
   **Cible les utilisateurs dont l'anniversaire est dans N jours** (même mois et même jour, N jours à partir d'aujourd'hui).
   *Utilisez ceci pour préparer les utilisateurs à l'avance, par exemple, envoyer des messages de compte à rebours ou des rappels d'événements à venir.*

* `AT("XXXXX-XXXXX", "birthday", match month "now" day "now-N")`
   **Cible les utilisateurs dont l'anniversaire était il y a N jours**.
   *Utilisez ceci pour des messages d'anniversaire en retard ou des suivis comme des demandes de feedback.*
* `AT("XXXXX-XXXXX", "birthday", match month "now" day N)`
   **Cible les utilisateurs dont l'anniversaire est le N-ième jour du mois en cours**, quelle que soit l'année.
   *Utilisez ceci pour planifier des campagnes mensuelles fixes liées à des dates spécifiques (par exemple, des récompenses de fidélité mensuelles le 10).*
</Aside>

*   **daysago eq** - égal à un nombre spécifié de jours avant le jour actuel
*   **daysago noteq** - différent d'un nombre spécifié de jours avant le jour actuel
*   **daysago lte** - inférieur ou égal à un nombre spécifié de jours avant le jour actuel
*   **daysago gte** - supérieur ou égal à un nombre spécifié de jours avant le jour actuel
*   **daysago between** - entre les nombres de jours spécifiés

<Aside type="note" title="Exemples de l'opérateur daysago">

* `T("Date tag", daysago, eq, 0)` - le jour actuel de 00:00 au moment présent
* `T("Date tag", daysago, eq, 1)` - de 00:00 du jour précédent à 00:00 du jour actuel
* `T("Date tag", daysago, gte, 1)` - tout le temps jusqu'à 00:00 du jour actuel
* `T("Date tag", daysago, lte, 7)` - de 00:00 du jour il y a 6 jours au moment présent
* `T("Date tag", daysago, between, [2,7])` - d'il y a 7 à 2 jours.
</Aside>

*   **minutesago lte** - inférieur ou égal à un nombre spécifié de minutes avant le moment présent
*   **minutesago gte** - supérieur ou égal à un nombre spécifié de minutes avant le moment présent

<Aside type="note" title="Exemples de l'opérateur minutesago">

* `T("Date tag", minutesago, lte, 30)` - les 30 dernières minutes ;
* `T("Date tag", minutesago, gte, 60)` - il y a 60 minutes ou plus ;
* `T("Date tag", minutesago, lte, 1)` - dans la dernière minute.
</Aside>

*   **daysahead** - dans N à M jours à partir du jour actuel (UTC), inclusif aux deux extrémités

<Aside type="note" title="Exemples de l'opérateur daysahead">

`daysahead` prend un intervalle `[de, à]` (jours à partir de minuit UTC d'aujourd'hui, les deux extrémités incluses). Contrairement à `daysago`, il n'a pas de sous-opérateur — seulement la forme d'intervalle.

* `T("Date tag", daysahead, [0, 0])` - le jour actuel de 00:00 à 23:59:59
* `T("Date tag", daysahead, [1, 1])` - le jour suivant de 00:00 à 23:59:59
* `T("Date tag", daysahead, [2, 5])` - n'importe quel moment entre le début de dans 2 jours et la fin de dans 5 jours
</Aside>

<Aside type="note" title="Exemple de l'opérateur date">
* `T("Date tag", eq "2022-12-05 00:00:00")`
</Aside>

### Opérateurs de Tags booléens

*   **eq** - égal à une valeur spécifiée
*   **noteq** - différent d'une valeur spécifiée
*   **any** - appareils avec n'importe quelle valeur définie pour le tag
*   **notset** - appareils sans valeur définie pour le tag

<Aside type="note" title="Exemple de syntaxe pour les Tags booléens">
 `T("bool", eq, true)`
</Aside>

### Opérateurs de Tags de prix

*   **eq** - égal à une valeur spécifiée
*   **noteq** - différent d'une valeur spécifiée
*   **lte** - inférieur ou égal à une valeur spécifiée
*   **gte** - supérieur ou égal à une valeur spécifiée
*   **in** - égal à l'une des valeurs spécifiées
*   **notin** - différent de toutes les valeurs spécifiées
*   **between** - dans une plage spécifiée
*   **any** - appareils avec n'importe quelle valeur définie pour le tag
*   **notset** - appareils sans valeur définie pour le tag

<Aside type="note" title="Exemple de syntaxe pour les Tags de prix">
`T("price", between, ["4.2", "6.9"])`
</Aside>

### Opérateurs de Tags de version

*   **eq** - égal à une valeur spécifiée
*   **noteq** - différent d'une valeur spécifiée
*   **lte** - inférieur ou égal à une valeur spécifiée
*   **gte** - supérieur ou égal à une valeur spécifiée
*   **in** - égal à l'une des valeurs spécifiées
*   **notin** - différent de toutes les valeurs spécifiées
*   **between** - dans une plage spécifiée
*   **any** - appareils avec n'importe quelle valeur définie pour le tag
*   **notset** - appareils sans valeur définie pour le tag

<Aside type="note" title="Exemple de syntaxe pour les Tags de version">
`T("version", lte, "4.2")`
</Aside>

## Opérateurs de conditions d'événement

<Aside type="note">
Veuillez garder à l'esprit que les conditions d'événement sont spécifiques à l'application, le code de l'application doit donc être spécifié dans vos expressions de filtre avec le nom de l'événement.
</Aside>

### Nombre d'événements

*   **count gte** - appareils ayant déclenché l'événement plus ou exactement n fois
*   **count lte** - appareils ayant déclenché l'événement moins ou exactement n fois
*   **count eq** - appareils ayant déclenché l'événement exactement n fois
*   **count noteq** - appareils ayant déclenché l'événement un nombre de fois quelconque mais pas égal à n

<Aside type="note" title="Exemple de syntaxe pour le nombre d'événements">
 `Event("11111-11111", "Level reached", count gte 10) // 11111-11111 est un code d'application`
</Aside>

### Date de l'événement

*   **date gte** - appareils ayant déclenché l'événement après ou exactement à la date spécifiée
*   **date lte** - appareils ayant déclenché l'événement avant ou exactement à la date spécifiée
*   **date eq** - appareils ayant déclenché l'événement exactement à la date spécifiée
*   **date noteq** - appareils ayant déclenché l'événement n'importe quand mais pas à la date spécifiée
*   **date in** - appareils ayant déclenché l'événement à l'une des dates spécifiées
*   **date notin** - appareils ayant déclenché l'événement n'importe quand mais pas à l'une des dates spécifiées
*   **date between** - appareils ayant déclenché l'événement dans une période spécifiée
*   **date daysago eq** - la date de déclenchement de l'événement est égale à un nombre spécifié de jours avant le jour actuel
*   **date daysago noteq** - la date de déclenchement de l'événement n'est pas égale à un nombre spécifié de jours avant le jour actuel
*   **date daysago lte** - la date de déclenchement de l'événement est inférieure ou égale à un nombre spécifié de jours avant le jour actuel
*   **date daysago gte** - la date de déclenchement de l'événement est supérieure ou égale à un nombre spécifié de jours avant le jour actuel
*   **date daysago between** - la date de déclenchement de l'événement est entre les nombres de jours spécifiés
*   **date daysahead** - la date de déclenchement de l'événement est dans un nombre de jours spécifié à partir du jour actuel (l'intervalle est inclusif aux deux extrémités, voir les Opérateurs de Tags de date ci-dessus pour la sémantique complète)
*   **date minutesago lte** - la date de déclenchement de l'événement est inférieure ou égale à un nombre spécifié de minutes avant le moment présent
*   **date minutesago gte** - la date de déclenchement de l'événement est supérieure ou égale à un nombre spécifié de minutes avant le moment présent

<Aside type="note" title="Exemples de syntaxe pour la date de l'événement">

- `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)` - événements avec une date de déclenchement dans les 7 prochains jours
- `Event("11111-11111", "Level reached", date minutesago lte 30)` - événements dans les 30 dernières minutes
- `Event("11111-11111", "Level reached", date minutesago gte 60)` - événements il y a 60+ minutes

</Aside>

### Plateformes d'événements

Filtrez les événements par la plateforme où ils ont été déclenchés.

*   **platforms** - liste de plateformes (par ex., ["ios", "android"])

<Aside type="note" title="Exemple de syntaxe pour les plateformes d'événements">
`Event("11111-11111", "Level reached", platforms ["android", "ios"], count gte 5)`
</Aside>

### Attributs d'événement

Les conditions d'événement peuvent filtrer en fonction des valeurs des attributs d'événement. Les attributs prennent en charge divers types de données avec leurs opérateurs correspondants.

#### Attributs d'événement entiers

*   **attribute "name" eq** - l'attribut est égal à une valeur spécifiée
*   **attribute "name" noteq** - l'attribut n'est pas égal à une valeur spécifiée
*   **attribute "name" gte** - l'attribut est supérieur ou égal à une valeur spécifiée
*   **attribute "name" lte** - l'attribut est inférieur ou égal à une valeur spécifiée
*   **attribute "name" between** - l'attribut est dans une plage spécifiée
*   **attribute "name" in** - l'attribut est égal à l'une des valeurs spécifiées
*   **attribute "name" notin** - l'attribut n'est pas égal à l'une des valeurs spécifiées
*   **attribute "name" any** - n'importe quelle valeur définie pour l'attribut
*   **attribute "name" notset** - aucune valeur définie pour l'attribut

<Aside type="note" title="Exemples de syntaxe pour les attributs entiers">

* `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>

#### Attributs d'événement de chaîne

*   **attribute "name" eq** - l'attribut est égal à une valeur spécifiée
*   **attribute "name" noteq** - l'attribut n'est pas égal à une valeur spécifiée
*   **attribute "name" startswith** - l'attribut commence par un préfixe spécifié
*   **attribute "name" endswith** - l'attribut se termine par un suffixe spécifié
*   **attribute "name" contains** - l'attribut contient une sous-chaîne spécifiée
*   **attribute "name" in** - l'attribut est égal à l'une des valeurs spécifiées
*   **attribute "name" notin** - l'attribut n'est pas égal à l'une des valeurs spécifiées
*   **attribute "name" any** - n'importe quelle valeur définie pour l'attribut
*   **attribute "name" notset** - aucune valeur définie pour l'attribut

<Aside type="note" title="Exemples de syntaxe pour les attributs de chaîne">

* `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>

#### Attributs d'événement booléens

*   **attribute "name" eq** - l'attribut est égal à vrai ou faux
*   **attribute "name" noteq** - l'attribut n'est pas égal à vrai ou faux

<Aside type="note" title="Exemple de syntaxe pour les attributs booléens">
`Event("11111-11111", "Feature Toggle", attribute "enabled" eq true)`
</Aside>

#### Attributs d'événement de date

*   **attribute "name" eq** - l'attribut est égal à une date spécifiée
*   **attribute "name" noteq** - l'attribut n'est pas égal à une date spécifiée
*   **attribute "name" gte** - l'attribut est après ou à une date spécifiée
*   **attribute "name" lte** - l'attribut est avant ou à une date spécifiée
*   **attribute "name" between** - l'attribut est dans une plage de dates spécifiée
*   **attribute "name" in** - l'attribut est égal à l'une des dates spécifiées
*   **attribute "name" notin** - l'attribut n'est pas égal à l'une des dates spécifiées
*   **attribute "name" daysago eq/noteq/gte/lte/between** - l'attribut est relatif aux jours passés
*   **attribute "name" daysahead from to** - l'attribut est dans un intervalle de jours spécifié à partir du jour actuel (l'intervalle est inclusif aux deux extrémités, voir les Opérateurs de Tags de date ci-dessus pour la sémantique complète)
*   **attribute "name" minutesago gte/lte** - l'attribut est relatif aux minutes passées
*   **attribute "name" any** - n'importe quelle valeur définie pour l'attribut
*   **attribute "name" notset** - aucune valeur définie pour l'attribut

<Aside type="note" title="Exemples de syntaxe pour les attributs de date">

* `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)` - dans les 30 derniers jours
* `Event("11111-11111", "Subscription", attribute "renewal_at" daysahead 0 30)` - renouvellements dans les 30 prochains jours
* `Event("11111-11111", "Subscription", attribute "start_date" minutesago gte 60)` - il y a 60+ minutes

</Aside>

#### Attributs d'événement de prix

*   **attribute "name" eq** - l'attribut est égal à une valeur de prix spécifiée
*   **attribute "name" noteq** - l'attribut n'est pas égal à une valeur de prix spécifiée
*   **attribute "name" gte** - l'attribut est supérieur ou égal à un prix spécifié
*   **attribute "name" lte** - l'attribut est inférieur ou égal à un prix spécifié
*   **attribute "name" between** - l'attribut est dans une plage de prix spécifiée
*   **attribute "name" in** - l'attribut est égal à l'un des prix spécifiés
*   **attribute "name" notin** - l'attribut n'est pas égal à l'un des prix spécifiés
*   **attribute "name" any** - n'importe quelle valeur définie pour l'attribut
*   **attribute "name" notset** - aucune valeur définie pour l'attribut

<Aside type="note" title="Exemple de syntaxe pour les attributs de prix">
`Event("11111-11111", "Purchase", attribute "total_price" between 10.00 50.00)`
</Aside>

#### Attributs d'événement de liste

*   **attribute "name" in** - l'attribut contient l'une des valeurs spécifiées
*   **attribute "name" notin** - l'attribut ne contient aucune des valeurs spécifiées
*   **attribute "name" any** - n'importe quelle valeur définie pour l'attribut
*   **attribute "name" notset** - aucune valeur définie pour l'attribut

<Aside type="note" title="Exemple de syntaxe pour les attributs de liste">
`Event("11111-11111", "Cart Update", attribute "product_ids" in ["prod-123", "prod-456"])`
</Aside>

## Types de conditions supplémentaires

### Condition Geo

Ciblez les appareils en fonction de leur emplacement géographique dans un rayon spécifié.

**Syntaxe :** `Geo("<code-app>", <latitude>, <longitude>, <rayon-en-km>)`

<Aside type="note" title="Exemple de syntaxe Geo">
`Geo("11111-11111", 53.2734, -7.77832031, 100.05)` - appareils dans un rayon de 100,05 km des coordonnées
</Aside>

### Condition BTTS

Ciblez les appareils en fonction de leur meilleur moment pour envoyer des notifications (heure du jour, 0-23).

**Opérateurs :**
*   **any** - n'importe quelle valeur de meilleur moment pour envoyer définie
*   **eq** - correspondance exacte de l'heure
*   **noteq** - différent de l'heure
*   **gte** - heure supérieure ou égale à
*   **lte** - heure inférieure ou égale à

<Aside type="note" title="Exemples de syntaxe BTTS">

* `BTTS("11111-11111", eq 10)` - appareils avec le meilleur moment à 10:00
* `BTTS("11111-11111", gte 18)` - appareils avec le meilleur moment à partir de 18:00
* `BTTS("11111-11111", any)` - appareils avec n'importe quelle valeur de meilleur moment

</Aside>

### Condition Updated

Filtrez les appareils par leur dernière date de mise à jour.

**Opérateurs :**
*   **gte** - mis à jour après ou à la date spécifiée
*   **lte** - mis à jour avant ou à la date spécifiée
*   **between** - mis à jour dans la plage de dates

<Aside type="note" title="Exemples de syntaxe Updated">

* `Updated("11111-11111", gte "2022-01-01 00:00:00")` - appareils mis à jour après le 1er janvier 2022
* `Updated("11111-11111", lte "2022-12-31 23:59:59")` - appareils mis à jour avant le 31 décembre 2022
* `Updated("11111-11111", between "2022-01-01 00:00:00" "2022-12-31 23:59:59")` - appareils mis à jour en 2022

</Aside>

### Condition Segment

Référencez un autre filtre/segment par son code.

<Aside type="note" title="Exemple de syntaxe Segment">
`Segment("11111-11111", "22222-22222")` - référence le filtre avec le code "22222-22222"
</Aside>

## Indicateurs de présence de l'appareil pour la condition d'application

Les conditions d'application prennent en charge des indicateurs supplémentaires pour contrôler le filtrage des appareils et des jetons :

*   **with_tokens** - appareils avec des jetons de notification push
*   **without_tokens** - appareils sans jetons de notification push
*   **with_devices** - utilisateurs avec des appareils enregistrés
*   **without_devices** - utilisateurs/profils sans appareils enregistrés

<Aside type="note" title="Exemples de syntaxe des indicateurs d'application">

* `A("11111-11111", ["ios", "android"], [with_tokens])` - appareils avec des jetons push
* `A("11111-11111", ["ios", "android"], [without_tokens])` - appareils sans jetons push
* `A("11111-11111", [], [with_devices])` - tous les appareils avec des enregistrements d'appareils
* `A("11111-11111", ["ios", "android"], [without_tokens, with_devices])` - appareils sans jetons mais avec des enregistrements d'appareils

</Aside>

## Exemples d'expressions de filtre

<Aside type="note">
Lorsque vous écrivez des requêtes JSON, assurez-vous d'échapper les guillemets (`"`) et les barres obliques inverses (`\`) avec une barre oblique inverse (`\`).
Pour un exemple de requête, voir [/exportSegment](/fr/developer/api-reference/segmentation-filters-api/#exportsegment).
</Aside>

### Exemples de base

1.  Appareils iOS et Android avec l'application installée et avec des jetons push :

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

2.  Appareils iOS et Android avec l'application installée mais sans jetons push :

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

3.  Appareils iOS et Android avec l'application installée, qu'ils aient des jetons push ou non :

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

4.  Tous les abonnés de l'application qui ont acheté quelque chose dans l'application :

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

### Exemples avancés

5.  Utilisateurs à Tokyo qui ont ouvert l'application au cours des 7 derniers jours :

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

6.  Utilisateurs qui ont effectué un achat de plus de 50 $ au cours des 30 derniers jours :

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

7.  Utilisateurs dont le nom commence par "J" ou se termine par "e" :

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

8.  Utilisateurs iOS actifs dans un rayon de 100 km de New York qui n'ont pas acheté récemment :

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

9.  Utilisateurs avec le meilleur moment pour envoyer entre 9h et 17h :

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

10. Utilisateurs qui ont déclenché un événement spécifique sur Android ou iOS au cours de la dernière heure :

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

11. Appareils mis à jour au cours des 3 derniers mois avec la version 4.2 ou supérieure de l'application :

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