本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用篩選規則篩選郵件
Amazon Chime SDK 支援針對應用程式執行個體使用者的通道成員資格設定篩選規則,以限制他們將收到的訊息。篩選規則是在頻道成員資格上設定,並針對訊息屬性對應執行。訊息屬性對應必須是字串索引鍵與字串值的對映。過濾規則支持包含和排除與完全字符串匹配。
重要
Amazon Chime 編輯開發套件僅支援逸出的 JSON 字串做為篩選規則。
通知通道的所有成員都會收到推播通知,包括訊息寄件者。為了防止這種情況發生,請參閱下面的第一個示例規則。
若要設定頻道成員資格的篩選規則,請使用 PutChannelMembershipPreferencesAPI。您可以在通道訊息中包含訊息屬性,做為 SendChannelMessageAPI 呼叫的一部分。
篩選規則類型
Amazon Chime 開發套件支援下列類型的篩選規則:
包含精確字符串匹配
獨占精確字符串匹配
使用 AND 或 OR 的多個篩選規則
篩選規則限制
Amazon Chime 開發套件對篩選規則施加下列限制:
我們只支持精確的字符串匹配。
總篩選規則大小為 2KB。
郵件屬性總大小為 1KB。
OR 篩選規則內最多有五 (5) 個別限制。
-
整個篩選規則的最大複雜度為 20。複雜度計算為篩選規則中索引鍵和值數目的總和:
例如,此篩選規則的複雜度為 4。
"FilterRule": "{\"type\":[{\"anything-but\": [\"Room\"]}],\"mention\":[\"Bob\"]}
我們計算該值如下:
Keys = “type” and “mention” - Complexity 2 Values = "Room" and "Bob" - Complexity 2 Total complexity = 4
篩選規則範例
下列範例說明了幾種使用頻道成員資格偏好設定和篩選規則的方法。
防止郵件傳送給寄件者
此篩選規則會將郵件傳送給除郵件寄件者以外的所有通道成員。
{ "Preferences": { "PushNotifications": { "FilterRule": "{\"type\":[{\"anything-but\": [\"
USER_ARN
\"]}]}", "AllowNotifications": "FILTERED" } } }
具有上述偏好設定的應用程式執行個體使用者會收到具有以下屬性的頻道訊息:
"MessageAttributes": { "senderId": { "StringValues": ["
USER_ARN
"] } }
包含字符串匹配
此篩選規則允許任何具有訊息屬性索引鍵為「提及」和值「Bob」的郵件。
{ "Preferences": { "PushNotifications": { "FilterRule": "{\"mention\":[\"Bob\"]}", "AllowNotifications": "FILTERED" } } }
具有上述首選項的應用程序實例用戶會收到帶有以下消息屬性的通道消息:
"MessageAttributes": { "mention": { "StringValues": ["Bob", "Alice"] } }
但是,應用程序實例用戶將不會收到具有以下屬性的通道消息:
"MessageAttributes": { "mention": { "StringValues": ["Tom"] } }
獨占字符串匹配
此過濾規則允許任何消息,但包含屬性鍵「類型」和值「Room」的消息除外。
{ "Preferences": { "PushNotifications": { "FilterRule": "{\"type\":[{\"anything-but\": [\"Room\"]}]}", "AllowNotifications": "FILTERED" } } }
具有這些首選項的應用程序實例用戶會收到帶有以下消息屬性的通道消息:
"MessageAttributes": { "type": { "StringValues": ["Conversation"] } }
但是,應用程序實例用戶看不到具有以下屬性的通道消息:
"MessageAttributes": { "type": { "StringValues": ["Room"] } }
具有 AND 邏輯的多重篩選規則
當您將篩選規則與 AND 邏輯結合時,郵件必須符合所有篩選準則,才能套用篩選器。
{ "Preferences": { "PushNotifications": { "FilterRule": "{\"type\":[{\"anything-but\": [\"Room\"]}],\"mention\":[\"Bob\"]}", "AllowNotifications": "FILTERED" } } }
具有上述首選項的應用程序實例用戶會收到帶有以下消息屬性的通道消息:
"MessageAttributes": { "mention": { "StringValues": ["Bob"] }, "type": { "StringValues": ["Conversation"] } }
具有 OR 邏輯的多重篩選規則
您可$or
以用來結合篩選規則與 OR 邏輯。當您使用 OR 邏輯時,郵件必須符合其中一個條件,才能套用篩選器。
{ "Preferences": { "PushNotifications": { "FilterRule": "{\"$or\":[{\"mention\":[\"Bob\"]},{\"type\":[{\"anything-but\": [\"Room\"]}]}]}", "AllowNotifications": "FILTERED" } } }
具有上述首選項的應用程序實例用戶會收到帶有以下消息屬性的通道消息:
"MessageAttributes": { "mention": { "StringValues": ["Bob"] } }
具有上述首選項的應用程序實例用戶會收到帶有以下消息屬性的通道消息:
"MessageAttributes": { "type": { "StringValues": ["Conversation"] } }