Utilisation de règles de filtrage pour filtrer les messages - Kit SDK Amazon Chime

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation de règles de filtrage pour filtrer les messages

Le SDK Amazon Chime permet de définir des règles de filtrage sur l'adhésion à la chaîne d'un utilisateur d'une instance d'application afin de limiter le message qu'il recevra. Les règles de filtrage sont définies en fonction de l'appartenance à la chaîne et s'appliquent à la carte des attributs des messages. Le mappage des attributs du message doit être un mappage entre les clés de chaîne et les valeurs de chaîne. Les règles de filtrage prennent en charge l'inclusion et l'exclusion avec une correspondance exacte des chaînes.

Important
  • Le SDK Amazon Chime prend uniquement en charge les chaînes JSON échappées comme règle de filtrage.

  • Tous les membres d'un canal de notification reçoivent les notifications push, y compris les expéditeurs de messages. Pour éviter que cela ne se produise, consultez le premier exemple de règle ci-dessous.

Pour définir des règles de filtrage sur l'appartenance à une chaîne, utilisez l'PutChannelMembershipPreferencesAPI. Vous pouvez inclure des attributs de message dans un message de canal dans le cadre de l'appel d'SendChannelMessageAPI.

Types de règles de filtrage

Le SDK Amazon Chime prend en charge les types de règles de filtrage suivants :

  • Correspondance exacte des chaînes incluse

  • Correspondance exacte exclusive des chaînes

  • Plusieurs règles de filtrage utilisant AND ou OR

Limites des règles de filtrage

Le SDK Amazon Chime impose les restrictions suivantes en matière de règles de filtrage :

  • Nous prenons uniquement en charge la correspondance exacte des chaînes.

  • La taille totale des règles de filtrage est de 2 Ko.

  • Une taille totale d'attribut de message de 1 Ko.

  • Un maximum de cinq (5) contraintes distinctes dans une règle de filtre OR.

  • Complexité maximale de 20 pour l'ensemble de la règle de filtrage. La complexité est calculée comme la somme du nombre de clés et de valeurs de la règle de filtre :

    Par exemple, cette règle de filtre a une complexité de 4.

    "FilterRule": "{\"type\":[{\"anything-but\": [\"Room\"]}],\"mention\":[\"Bob\"]}

    Nous calculons cette valeur comme suit :

    Keys = “type” and “mention” - Complexity 2 Values = "Room" and "Bob" - Complexity 2 Total complexity = 4

Exemples de règles de filtrage

Les exemples suivants montrent plusieurs manières d'utiliser les préférences d'adhésion aux chaînes et les règles de filtrage.

Empêcher les messages d'être envoyés aux expéditeurs

Cette règle de filtrage envoie des messages à tous les membres de la chaîne, à l'exception de l'expéditeur du message.

{ "Preferences": { "PushNotifications": { "FilterRule": "{\"type\":[{\"anything-but\": [\"USER_ARN\"]}]}", "AllowNotifications": "FILTERED" } } }

Les utilisateurs de l'instance d'application dont les préférences sont indiquées ci-dessus reçoivent un message de chaîne contenant les attributs suivants :

"MessageAttributes": { "senderId": { "StringValues": ["USER_ARN"] } }
Correspondance de chaînes incluse

Cette règle de filtrage autorise tout message dont la clé d'attribut de message « mention » et la valeur « Bob » sont valides.

{ "Preferences": { "PushNotifications": { "FilterRule": "{\"mention\":[\"Bob\"]}", "AllowNotifications": "FILTERED" } } }

Un utilisateur d'instance d'application ayant les préférences indiquées ci-dessus reçoit un message de canal avec les attributs de message suivants :

"MessageAttributes": { "mention": { "StringValues": ["Bob", "Alice"] } }

Toutefois, l'utilisateur de l'instance d'application ne recevra pas de message de chaîne contenant les attributs suivants :

"MessageAttributes": { "mention": { "StringValues": ["Tom"] } }
Correspondance exclusive des chaînes

Cette règle de filtrage autorise tous les messages sauf ceux contenant la clé d'attribut « type » et la valeur « Room ».

{ "Preferences": { "PushNotifications": { "FilterRule": "{\"type\":[{\"anything-but\": [\"Room\"]}]}", "AllowNotifications": "FILTERED" } } }

Un utilisateur d'instance d'application disposant de ces préférences reçoit un message de canal avec les attributs de message suivants :

"MessageAttributes": { "type": { "StringValues": ["Conversation"] } }

Toutefois, l'utilisateur de l'instance d'application ne voit aucun message de chaîne contenant les attributs suivants :

"MessageAttributes": { "type": { "StringValues": ["Room"] } }
Une règle à filtres multiples avec logique AND

Lorsque vous combinez des règles de filtrage avec la logique AND, un message doit répondre à tous les critères de filtre pour que le filtre s'applique.

{ "Preferences": { "PushNotifications": { "FilterRule": "{\"type\":[{\"anything-but\": [\"Room\"]}],\"mention\":[\"Bob\"]}", "AllowNotifications": "FILTERED" } } }

Un utilisateur d'instance d'application ayant les préférences ci-dessus reçoit un message de canal avec les attributs de message suivants :

"MessageAttributes": { "mention": { "StringValues": ["Bob"] }, "type": { "StringValues": ["Conversation"] } }
Une règle à filtres multiples avec logique OR

Vous pouvez $or combiner les règles de filtrage avec la logique OR. Lorsque vous utilisez la logique OR, un message doit répondre à l'un des critères pour que le filtre s'applique.

{ "Preferences": { "PushNotifications": { "FilterRule": "{\"$or\":[{\"mention\":[\"Bob\"]},{\"type\":[{\"anything-but\": [\"Room\"]}]}]}", "AllowNotifications": "FILTERED" } } }

Un utilisateur d'instance d'application ayant les préférences ci-dessus reçoit un message de canal avec les attributs de message suivants :

"MessageAttributes": { "mention": { "StringValues": ["Bob"] } }

Un utilisateur d'instance d'application ayant les préférences ci-dessus reçoit un message de canal avec les attributs de message suivants :

"MessageAttributes": { "type": { "StringValues": ["Conversation"] } }