使用筛选规则来筛选消息 - Amazon Chime SDK

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用筛选规则来筛选消息

Amazon Chime SDK 支持对应用程序实例用户的通道成员资格设置筛选规则,以限制他们将收到的消息。筛选规则是在通道成员资格上设置的,并将根据消息属性映射运行。消息属性映射必须是字符串键到字符串值的映射。筛选规则支持包含和专属精确字符串匹配。

重要

Amazon Chime SDK 仅支持将转义的 JSON 字符串作为筛选规则。

要对通道成员资格设置筛选规则,请使用 PutChannelMembershipPreferences API。您可以在通道消息中包含消息属性,作为 SendChannelMessage API 调用的一部分。

筛选规则类型

Amazon Chime SDK 支持以下筛选规则类型:

  • 包含精确字符串匹配

  • 专属精确字符串匹配

  • 使用 AND 或 OR 的多重筛选规则

筛选规则限制

Amazon Chime SDK 对筛选规则施加了以下限制:

  • 我们只支持精确字符串匹配。

  • 筛选规则的总大小为 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

采用筛选规则的通道成员资格首选项示例

以下示例显示了使用通道成员资格首选项和筛选规则的几种方法。

包含字符串匹配

此筛选规则允许包含如下消息属性的任何消息:键为“mention”且值为“Bob”。

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

具有上述首选项的应用实例用户会收到包含以下消息属性的通道消息:

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

但是,应用程序实例用户不会收到包含以下属性的通道消息:

"MessageAttributes": { "mention": { "StringValues": ["Tom"] } }
专属字符串匹配

此筛选规则允许除包含如下属性的消息以外的任何消息:键为“type”且值为“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"] } }