As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
O SDK do Amazon Chime suporta a configuração de regras de filtro na associação ao canal do usuário de uma instância de aplicativo para limitar a mensagem que ele receberá. As regras de filtro são definidas na associação do canal e são executadas no mapa de atributos da mensagem. O mapa de atributos da mensagem deve ser um mapa de chaves de string para valores de string. As regras de filtro oferecem suporte à inclusão e exclusão com correspondência exata de strings.
Importante
-
O SDK do Amazon Chime só oferece suporte a strings JSON escapadas como regra de filtro.
-
Todos os membros de um canal de notificação recebem as notificações por push, inclusive os remetentes das mensagens. Para evitar que isso aconteça, veja o primeiro exemplo de regra abaixo.
Para definir regras de filtro na associação de um canal, use o PutChannelMembershipPreferencesAPI. Você pode incluir atributos de mensagem em uma mensagem do canal como parte do SendChannelMessageChamada de API.
Tipos de regra de filtros
O SDK do Amazon Chime é compatível com os seguintes tipos de regras de filtro:
-
Correspondência exata inclusiva de strings
-
Correspondência de strings exata exclusiva
-
Várias regras de filtro que usam AND ou OR
Limites de regra de filtros
O SDK do Amazon Chime impõe as seguintes restrições às regras de filtro:
-
Só suportamos a correspondência exata de strings.
-
Um tamanho total de regras de filtro de 2 KB.
-
Um tamanho total doe atributo de mensagem de 1 KB.
-
Um máximo de cinco (5) restrições separadas dentro de uma regra de filtro OR.
-
Uma complexidade máxima de 20 para toda a regra do filtro. A complexidade é calculada como a soma do número de chaves e valores na regra do filtro:
Por exemplo, essa regra de filtro tem uma complexidade de 4.
"FilterRule": "{\"type\":[{\"anything-but\": [\"Room\"]}],\"mention\":[\"Bob\"]}
Calculamos esse valor da seguinte forma:
Keys = “type” and “mention” - Complexity 2 Values = "Room" and "Bob" - Complexity 2 Total complexity = 4
Exemplo de regras de filtro
Os exemplos a seguir mostram várias maneiras de usar as preferências de associação ao canal e as regras de filtro.
Impedir que as mensagens cheguem aos remetentes
Essa regra de filtro envia mensagens a todos os membros do canal, exceto ao remetente da mensagem.
{
"Preferences": {
"PushNotifications": {
"FilterRule": "{\"type\":[{\"anything-but\": [\"USER_ARN
\"]}]}",
"AllowNotifications": "FILTERED"
}
}
}
Os usuários da instância da aplicação com as preferências exibidas acima recebem uma mensagem do canal com os seguintes atributos:
"MessageAttributes": {
"senderId": {
"StringValues": ["USER_ARN
"]
}
}
Correspondência de string inclusiva
Essa regra de filtro permite qualquer mensagem com a chave de atributo de mensagem “menção” e o valor “Bob”.
{
"Preferences": {
"PushNotifications": {
"FilterRule": "{\"mention\":[\"Bob\"]}",
"AllowNotifications": "FILTERED"
}
}
}
Um usuário da instância da aplicação com as preferências mostradas acima recebe uma mensagem do canal com os seguintes atributos:
"MessageAttributes": {
"mention": {
"StringValues": ["Bob", "Alice"]
}
}
No entanto, o usuário da instância do aplicativo não receberá uma mensagem do canal com os seguintes atributos:
"MessageAttributes": {
"mention": {
"StringValues": ["Tom"]
}
}
Correspondência de string exclusiva
Essa regra de filtro permite qualquer mensagem, exceto aquelas que contêm a chave de atributo “tipo” e o valor “Sala”.
{
"Preferences": {
"PushNotifications": {
"FilterRule": "{\"type\":[{\"anything-but\": [\"Room\"]}]}",
"AllowNotifications": "FILTERED"
}
}
}
Um usuário da instância do aplicativo com essas preferências recebe uma mensagem de canal com os seguintes atributos da mensagem:
"MessageAttributes": {
"type": {
"StringValues": ["Conversation"]
}
}
No entanto, o usuário da instância do aplicativo não vê uma mensagem do canal com os seguintes atributos:
"MessageAttributes": {
"type": {
"StringValues": ["Room"]
}
}
Uma regra de filtro múltiplo com lógica AND
Quando você combina regras de filtro com a lógica AND, uma mensagem deve atender a todos os critérios de filtragem para que o filtro seja aplicado.
{
"Preferences": {
"PushNotifications": {
"FilterRule": "{\"type\":[{\"anything-but\": [\"Room\"]}],\"mention\":[\"Bob\"]}",
"AllowNotifications": "FILTERED"
}
}
}
Um usuário da instância do aplicativo com as preferências acima recebe uma mensagem de canal com os seguintes atributos da mensagem:
"MessageAttributes": {
"mention": {
"StringValues": ["Bob"]
},
"type": {
"StringValues": ["Conversation"]
}
}
Uma regra de filtro múltiplo com lógica OR
Use $or
para combinar regras de filtro com a lógica OR. Quando você usa a lógica OR, uma mensagem deve atender a um dos critérios para que o filtro seja aplicado.
{
"Preferences": {
"PushNotifications": {
"FilterRule": "{\"$or\":[{\"mention\":[\"Bob\"]},{\"type\":[{\"anything-but\": [\"Room\"]}]}]}",
"AllowNotifications": "FILTERED"
}
}
}
Um usuário da instância do aplicativo com as preferências acima recebe uma mensagem de canal com os seguintes atributos da mensagem:
"MessageAttributes": {
"mention": {
"StringValues": ["Bob"]
}
}
Um usuário da instância do aplicativo com as preferências acima recebe uma mensagem de canal com os seguintes atributos da mensagem:
"MessageAttributes": {
"type": {
"StringValues": ["Conversation"]
}
}