필터 규칙을 사용하여 메시지 필터링 - Amazon Chime SDK

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

필터 규칙을 사용하여 메시지 필터링

Amazon Chime SDK는 앱 인스턴스 사용자의 채널 멤버십에 대한 필터 규칙을 설정하여 수신할 메시지를 제한할 수 있도록 지원합니다. 필터 규칙은 채널 멤버십에 설정되며 메시지 속성 맵에서 실행됩니다. 메시지 속성 맵은 문자열 키와 문자열 값의 맵이어야 합니다. 필터 규칙은 정확한 문자열 매칭을 통해 포함 및 제외를 지원합니다.

중요

Amazon Chime SDK는 이스케이프된 JSON 문자열만 필터 규칙으로 지원합니다.

채널 멤버십에 필터 규칙을 설정하려면 PutChannelMembershipPreferencesAPI를 사용하세요. SendChannelMessageAPI 호출의 일부로 채널 메시지에 메시지 속성을 포함할 수 있습니다.

필터 규칙 일치

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"] } }