Utilizzo delle regole di filtro per filtrare i messaggi - Amazon Chime SDK

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo delle regole di filtro per filtrare i messaggi

L'SDK Amazon Chime supporta l'impostazione di regole di filtro sull'iscrizione al canale di un utente di un'istanza di app per limitare il messaggio che riceverà. Le regole di filtro vengono impostate sull'iscrizione al canale e vengono eseguite sulla mappa degli attributi del messaggio. La mappa degli attributi del messaggio deve essere una mappa di chiavi di stringa per valori di stringa. Le regole di filtro supportano l'inclusione e l'esclusione con una corrispondenza esatta delle stringhe.

Importante
  • L'SDK Amazon Chime supporta solo stringhe JSON con escape come regola del filtro.

  • Tutti i membri di un canale di notifica ricevono le notifiche push, inclusi i mittenti dei messaggi. Per evitare che ciò accada, consulta la prima regola di esempio riportata di seguito.

Per impostare le regole di filtro sull'iscrizione a un canale, utilizza l'PutChannelMembershipPreferencesAPI. Puoi includere gli attributi del messaggio in un messaggio di canale come parte della chiamata SendChannelMessageAPI.

Filtra i tipi di regole

L'SDK Amazon Chime supporta i seguenti tipi di regole di filtro:

  • Corrispondenza esatta delle stringhe inclusa

  • Esclusiva corrispondenza esatta delle stringhe

  • Regole di filtro multiple che utilizzano AND o OR

Limiti delle regole di filtro

L'SDK Amazon Chime impone le seguenti restrizioni sulle regole di filtro:

  • Supportiamo solo la corrispondenza esatta delle stringhe.

  • Una dimensione totale delle regole di filtro di 2 KB.

  • Una dimensione totale degli attributi del messaggio di 1 KB.

  • Un massimo di cinque (5) vincoli separati all'interno di una regola di filtro OR.

  • Una complessità massima di 20 per l'intera regola di filtro. La complessità viene calcolata come somma del numero di chiavi e valori nella regola di filtro:

    Ad esempio, questa regola di filtro ha una complessità di 4.

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

    Calcoliamo tale valore nel modo seguente:

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

Esempio di regole di filtro

Gli esempi seguenti mostrano diversi modi per utilizzare le preferenze di iscrizione al canale e le regole di filtro.

Impedire che i messaggi arrivino ai mittenti

Questa regola di filtro invia messaggi a tutti i membri del canale tranne il mittente del messaggio.

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

Gli utenti dell'istanza dell'app con le preferenze mostrate sopra ricevono un messaggio di canale con i seguenti attributi:

"MessageAttributes": { "senderId": { "StringValues": ["USER_ARN"] } }
Corrispondenza tra stringhe

Questa regola di filtro consente qualsiasi messaggio con la chiave di attributo del messaggio «mention» e il valore «Bob».

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

Un utente dell'istanza dell'app con le preferenze mostrate sopra riceve un messaggio di canale con i seguenti attributi di messaggio:

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

Tuttavia, l'utente dell'istanza dell'app non riceverà un messaggio di canale con i seguenti attributi:

"MessageAttributes": { "mention": { "StringValues": ["Tom"] } }
Esclusiva corrispondenza tra stringhe

Questa regola di filtro consente qualsiasi messaggio tranne quelli contenenti la chiave di attributo «type» e il valore «Room».

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

Un utente di un'istanza di app con tali preferenze riceve un messaggio di canale con i seguenti attributi di messaggio:

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

Tuttavia, l'utente dell'istanza dell'app non visualizza un messaggio di canale con i seguenti attributi:

"MessageAttributes": { "type": { "StringValues": ["Room"] } }
Una regola di filtro multiplo con logica AND

Quando si combinano le regole di filtro con la logica AND, un messaggio deve soddisfare tutti i criteri di filtro affinché il filtro venga applicato.

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

Un utente di un'istanza di app con le preferenze precedenti riceve un messaggio di canale con i seguenti attributi di messaggio:

"MessageAttributes": { "mention": { "StringValues": ["Bob"] }, "type": { "StringValues": ["Conversation"] } }
Una regola di filtro multiplo con logica OR

Viene utilizzata $or per combinare le regole di filtro con la logica OR. Quando si utilizza la logica OR, un messaggio deve soddisfare uno dei criteri per il filtro da applicare.

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

Un utente di un'istanza di app con le preferenze precedenti riceve un messaggio di canale con i seguenti attributi di messaggio:

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

Un utente di un'istanza di app con le preferenze precedenti riceve un messaggio di canale con i seguenti attributi di messaggio:

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