Menggunakan aturan filter untuk memfilter pesan - Amazon Chime SDK

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan aturan filter untuk memfilter pesan

Amazon Chime SDK mendukung pengaturan aturan filter pada keanggotaan saluran pengguna instance aplikasi untuk membatasi pesan mana yang akan mereka terima. Aturan filter ditetapkan pada keanggotaan saluran dan dijalankan terhadap peta atribut pesan. Peta atribut pesan harus berupa peta kunci string ke nilai string. Aturan filter mendukung inklusi dan pengecualian dengan pencocokan string yang tepat.

penting
  • Amazon Chime SDK hanya mendukung string JSON yang lolos sebagai aturan filter.

  • Semua anggota saluran notifikasi menerima pemberitahuan push, termasuk pengirim pesan. Untuk mencegah hal itu terjadi, lihat contoh aturan pertama di bawah ini.

Untuk menetapkan aturan filter pada keanggotaan channel, gunakan PutChannelMembershipPreferencesAPI. Anda dapat menyertakan atribut pesan dalam pesan saluran sebagai bagian dari panggilan SendChannelMessageAPI.

Jenis aturan filter

Amazon Chime SDK mendukung jenis aturan filter berikut:

  • Pencocokan string yang tepat inklusif

  • Pencocokan string yang tepat secara eksklusif

  • Beberapa aturan filter menggunakan AND atau OR

Batas aturan filter

Amazon Chime SDK memberlakukan pembatasan berikut pada aturan filter:

  • Kami hanya mendukung pencocokan string yang tepat.

  • Ukuran aturan filter total 2KB.

  • Ukuran atribut pesan total 1KB.

  • Maksimal lima (5) kendala terpisah di dalam aturan filter OR.

  • Kompleksitas maksimum 20 untuk seluruh aturan filter. Kompleksitas dihitung sebagai jumlah dari jumlah kunci dan nilai dalam aturan filter:

    Misalnya, aturan filter ini memiliki kompleksitas 4.

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

    Kami menghitung nilai itu sebagai berikut:

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

Contoh aturan filter

Contoh berikut menunjukkan beberapa cara untuk menggunakan preferensi keanggotaan saluran dan aturan filter.

Mencegah pesan masuk ke pengirim

Aturan filter ini mengirimkan pesan ke semua anggota saluran kecuali pengirim pesan.

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

Pengguna instans aplikasi dengan preferensi yang ditampilkan di atas menerima pesan saluran dengan atribut berikut:

"MessageAttributes": { "senderId": { "StringValues": ["USER_ARN"] } }
Pencocokan string inklusif

Aturan filter ini memungkinkan pesan apa pun dengan kunci atribut pesan “mention” dan nilai “Bob.”

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

Pengguna instance aplikasi dengan preferensi yang ditampilkan di atas menerima pesan channel dengan atribut pesan berikut:

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

Namun, pengguna instance aplikasi tidak akan menerima pesan saluran dengan atribut berikut:

"MessageAttributes": { "mention": { "StringValues": ["Tom"] } }
Pencocokan string eksklusif

Aturan filter ini memungkinkan pesan apa pun kecuali yang berisi kunci atribut “type” dan nilai “Room”.

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

Pengguna instance aplikasi dengan preferensi tersebut menerima pesan channel dengan atribut pesan berikut:

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

Namun, pengguna instance aplikasi tidak melihat pesan channel dengan atribut berikut:

"MessageAttributes": { "type": { "StringValues": ["Room"] } }
Aturan filter ganda dengan logika AND

Saat Anda menggabungkan aturan filter dengan logika AND, pesan harus memenuhi semua kriteria filter agar filter dapat diterapkan.

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

Pengguna instance aplikasi dengan preferensi di atas menerima pesan channel dengan atribut pesan berikut:

"MessageAttributes": { "mention": { "StringValues": ["Bob"] }, "type": { "StringValues": ["Conversation"] } }
Aturan filter ganda dengan logika OR

Anda gunakan $or untuk menggabungkan aturan filter dengan logika OR. Saat Anda menggunakan logika OR, pesan harus memenuhi salah satu kriteria agar filter dapat diterapkan.

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

Pengguna instance aplikasi dengan preferensi di atas menerima pesan channel dengan atribut pesan berikut:

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

Pengguna instance aplikasi dengan preferensi di atas menerima pesan channel dengan atribut pesan berikut:

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