

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

# Menggunakan pesan Amazon Chime SDK
<a name="using-the-messaging-sdk"></a>

Anda menggunakan bagian Panduan Pengembang Amazon Chime SDK ini untuk membantu membuat aplikasi perpesanan yang berjalan di layanan Amazon Chime SDK. SDK ini menyediakan informasi konseptual dan praktis yang diperlukan untuk membuat aplikasi perpesanan dasar.

**Topics**
+ [Bermigrasi ke namespace identitas Amazon Chime SDK](identity-namespace-migration.md)
+ [Bermigrasi ke namespace perpesanan Amazon Chime SDK](messaging-namespace-migration.md)
+ [Memahami prasyarat untuk perpesanan Amazon Chime SDK](messaging-prerequisites.md)
+ [Memahami konsep perpesanan Amazon Chime SDK](messaging-concepts.md)
+ [Memahami arsitektur perpesanan Amazon Chime SDK](messaging-architecture.md)
+ [Memahami jenis pesan Amazon Chime SDK](msg-types.md)
+ [Memulai dengan pesan Amazon Chime SDK](getting-started.md)
+ [Memahami pesan sistem untuk perpesanan Amazon Chime SDK](system-messages.md)
+ [Contoh peran IAM untuk perpesanan Amazon Chime SDK](iam-roles.md)
+ [Memahami otorisasi berdasarkan peran](auth-by-role.md)
+ [Streaming data perpesanan di perpesanan Amazon Chime SDK](streaming-export.md)
+ [Menggunakan saluran elastis untuk menyelenggarakan acara langsung dalam rapat Amazon Chime SDK](elastic-channels.md)
+ [Menggunakan notifikasi push seluler untuk perpesanan Amazon Chime SDK untuk menerima pesan](using-push-notifications.md)
+ [Menggunakan peran terkait layanan untuk perpesanan Amazon Chime SDK](using-roles.md)
+ [Menggunakan alur saluran untuk memproses pesan untuk perpesanan Amazon Chime SDK](using-channel-flows.md)
+ [Menggunakan AppInstanceBots sebagai agen saluran cerdas untuk perpesanan Amazon Chime SDK](appinstance-bots.md)
+ [Mengelola retensi pesan untuk perpesanan Amazon Chime SDK](manage-retention.md)
+ [Komponen antarmuka pengguna untuk perpesanan Amazon Chime SDK](ui-components.md)
+ [Mengintegrasikan pesan Amazon Chime SDK dengan pustaka klien](integrate-client-library.md)
+ [Menggunakan pesan Amazon Chime SDK dengan JavaScript](use-javascript.md)

# Bermigrasi ke namespace identitas Amazon Chime SDK
<a name="identity-namespace-migration"></a>

Namespace [Identity Amazon Chime SDK](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Identity.html) adalah tempat khusus untuk APIs digunakan untuk membuat dan mengelola sumber daya identitas Amazon Chime SDK, termasuk dan. AppInstances AppInstanceUsers Anda menggunakan namespace untuk menangani titik akhir API identitas Amazon Chime SDK di Wilayah AWS mana pun yang tersedia. Gunakan namespace ini jika Anda baru mulai menggunakan Amazon Chime SDK. Untuk informasi lebih lanjut tentang Wilayah, lihat [Wilayah AWS yang tersedia untuk Amazon Chime SDK](sdk-available-regions.md) di panduan ini.

Aplikasi yang ada yang menggunakan namespace [Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime.html) harus berencana untuk bermigrasi ke namespace khusus.

**Topics**
+ [Alasan untuk bermigrasi](#identity-migration-reasons)
+ [Sebelum Anda bermigrasi](#id-before-migrating)
+ [Perbedaan antara ruang nama](#id-namespace-differences)

## Alasan untuk bermigrasi
<a name="identity-migration-reasons"></a>

Kami mendorong Anda untuk bermigrasi ke namespace Identity [Amazon Chime SDK](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Identity.html) karena alasan berikut:

**Pilihan Endpoint API**  
[Namespace Amazon Chime SDK Identity adalah satu-satunya namespace API yang dapat menggunakan titik akhir API di Wilayah mana pun yang membuatnya tersedia.](https://docs.aws.amazon.com/chime-sdk/latest/dg/sdk-available-regions.html) Jika Anda ingin menggunakan endpoint API selain`us-east-1`, Anda harus menggunakan namespace Amazon Chime SDK Identity. Untuk informasi lebih lanjut tentang titik akhir saat ini, lihat [Pemetaan API](migrate-from-chm-namespace.md#name-end-map) di panduan ini.

**Diperbarui dan pesan baru APIs**  
Kami hanya menambahkan atau memperbarui identitas APIs di namespace Identity Amazon Chime SDK.

## Sebelum Anda bermigrasi
<a name="id-before-migrating"></a>

Sebelum Anda bermigrasi, perhatikan perbedaan antara ruang nama. Tabel berikut mencantumkan dan menjelaskannya.


|  | Ruang nama Identitas Amazon Chime SDK | Ruang nama Amazon Chime | 
| --- | --- | --- | 
| AWS Ruang nama SDK | ChimeSDKIdentity | Chime | 
| Daerah | Beberapa | us-east-1 saja | 
| Prinsipal layanan | https://identity.chime.amazonaws.com | https://chime.amazonaws.com | 
| APIs | Hanya APIs untuk identitas | APIs untuk identitas dan bagian lain dari Amazon Chime | 
| Kedaluwarsa Pengguna | Tersedia | Tidak tersedia | 
| Bot | Tersedia | Tidak tersedia | 

## Perbedaan antara ruang nama
<a name="id-namespace-differences"></a>

Bagian berikut menjelaskan perbedaan antara `ChimeSDKIdentity` ruang nama `Chime` dan ruang nama.

**AWS Ruang nama SDK**  
Namespace Amazon Chime SDK menggunakan nama formal. `Chime` Namespace Identity Amazon Chime SDK menggunakan nama formal. `ChimeSDKIdentity` Format nama yang tepat bervariasi menurut platform.

Misalnya, jika Anda menggunakan AWS SDK di Node.js untuk membuat identitas, Anda menggunakan baris kode untuk menangani namespace.

```
const chimeIdentity = AWS.Chime();
```

Untuk bermigrasi ke `ChimeSDKIdentity` namespace, perbarui baris kode ini dengan namespace baru dan wilayah titik akhir.

```
const chimeIdentity = AWS.ChimeSDKIdentity({ region: "eu-central-1" });
```

**Wilayah**  
Namespace [Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime.html) hanya dapat menangani titik akhir API di Wilayah. `us-east-1` Namespace [Amazon Chime SDK Identity](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Identity.html) dapat menangani titik akhir Amazon Chime SDK Identity API di Wilayah mana pun yang tersedia. Untuk daftar Wilayah titik akhir saat ini, lihat [Wilayah AWS yang tersedia untuk Amazon Chime SDK](sdk-available-regions.md) di panduan ini.

**Titik akhir**  
[Namespace [Identity Amazon Chime SDK](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Identity.html) menggunakan titik akhir API yang berbeda dari namespace Amazon Chime.](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime.html)

Hanya titik akhir yang digunakan untuk membuat sumber daya identitas yang dapat digunakan untuk memperbaruinya. Ini berarti yang AppInstance dibuat melalui titik akhir di hanya `eu-central-1` dapat dimodifikasi melalui`eu-central-1`. Ini juga berarti Anda tidak dapat menangani yang AppInstance dibuat melalui namespace Chime dengan SDKIdentity namespace Chime di`us-east-1`, atau membuat saluran di Wilayah selain wilayah tempat dan anggota dibuat. AppInstance AppInstanceUser Untuk informasi lebih lanjut tentang titik akhir saat ini, lihat [Pemetaan API](migrate-from-chm-namespace.md#name-end-map) di panduan ini.

**Pemimpin layanan**  
Namespace [Identity Amazon Chime SDK](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Messaging.html) menggunakan prinsip layanan baru:. `Identity.chime.amazonaws.com` Jika Anda memiliki SQS, SNS, atau kebijakan akses IAM lainnya yang memberikan akses ke layanan, Anda perlu memperbarui kebijakan tersebut untuk memberikan akses ke prinsipal layanan baru.

**APIs**  
Namespace [Amazon Chime SDK Identity](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Identity.html) hanya berisi APIs untuk membuat dan mengelola sumber daya pesan, serta untuk mengirim dan menerima pesan. Namespace [Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime.html) termasuk APIs untuk bagian lain dari layanan Amazon Chime serta pengiriman pesan.

**Kedaluwarsa pengguna**  
Pengaturan kedaluwarsa pada pembuatan AppInstanceUsers memungkinkan Anda untuk membuat pengguna sementara. Misalnya, Anda dapat membuat pengguna obrolan yang hanya ada selama durasi siaran besar. Hanya namespace Identity yang mendukung pengaturan kedaluwarsa untuk. AppInstanceUsers

**Bot**  
Anda menggunakan [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_identity-chime_AppInstanceBot.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_identity-chime_AppInstanceBot.html)API untuk menambahkan bot obrolan yang didukung oleh Amazon Lex V2 ke dalam aplikasi Anda. Anda hanya dapat menggunakan AppInstanceBots di namespace Identity. Untuk informasi lebih lanjut tentang bot, lihat [Menggunakan AppInstanceBots sebagai agen saluran cerdas untuk perpesanan Amazon Chime SDK](appinstance-bots.md) di panduan ini.

**Tambahan APIs**  
Namespace Identity memiliki daftar tambahan tambahan yang APIs tidak dimiliki namespace Chime. Jika Anda memulai dengan Amazon Chime SDK, gunakan namespace Identity untuk memiliki akses ke semua fitur terbaru. Untuk informasi selengkapnya tentang saat ini APIs, lihat [Identitas SDK Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Identity.html) di Referensi API *Amazon Chime* SDK.

# Bermigrasi ke namespace perpesanan Amazon Chime SDK
<a name="messaging-namespace-migration"></a>

Namespace [Amazon Chime SDK Messaging](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Messaging.html) adalah tempat khusus bagi mereka yang membuat dan mengelola sumber daya APIs pesan Amazon Chime SDK. Anda menggunakan namespace untuk menangani titik akhir API perpesanan Amazon Chime SDK di Wilayah AWS mana pun yang tersedia. Gunakan namespace ini jika Anda baru mulai menggunakan Amazon Chime SDK. Untuk informasi lebih lanjut tentang Wilayah, lihat [Wilayah AWS yang tersedia untuk Amazon Chime SDK](sdk-available-regions.md) di panduan ini.

Aplikasi yang ada yang menggunakan namespace [Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime.html) harus berencana untuk bermigrasi ke namespace khusus.

**Topics**
+ [Alasan untuk bermigrasi](#migration-reasons)
+ [Sebelum Anda bermigrasi](#before-migrating)
+ [Perbedaan antara ruang nama](#namespace-differences)

## Alasan untuk bermigrasi
<a name="migration-reasons"></a>

Kami mendorong Anda untuk bermigrasi ke namespace [Amazon Chime SDK](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Messaging.html) Messaging karena alasan berikut:

**Pilihan Endpoint API**  
[Namespace Amazon Chime SDK Messaging adalah satu-satunya namespace API yang dapat menggunakan titik akhir API di Wilayah mana pun yang membuatnya tersedia.](https://docs.aws.amazon.com/chime-sdk/latest/dg/sdk-available-regions.html) Jika Anda ingin menggunakan titik akhir API selain US East (Virginia N.), Anda harus menggunakan namespace Amazon Chime SDK Messaging.  
Untuk informasi selengkapnya tentang cara perpesanan Amazon Chime SDK menggunakan AWS Wilayah, lihat [Wilayah yang Tersedia](https://docs.aws.amazon.com/chime-sdk/latest/dg/available-regions.html) di panduan ini.

**Diperbarui dan pesan baru APIs**  
Kami hanya menambahkan atau memperbarui pesan APIs di ruang nama Amazon Chime SDK Messaging.

## Sebelum Anda bermigrasi
<a name="before-migrating"></a>

Sebelum Anda bermigrasi, perhatikan perbedaan antara ruang nama. Tabel berikut mencantumkan dan menjelaskannya.


|  | Ruang nama Pesan Amazon Chime SDK | Ruang nama Amazon Chime | 
| --- | --- | --- | 
| AWS Ruang nama SDK | ChimeSDKMessaging | Chime | 
| Daerah | Beberapa | Hanya US East (Virginia N.) | 
| APIs | Hanya APIs untuk pengiriman pesan | APIs untuk pengiriman pesan dan bagian lain dari Amazon Chime | 
| Arus | Available | Tidak tersedia | 
| Saluran elastis | Available | Tidak tersedia | 

## Perbedaan antara ruang nama
<a name="namespace-differences"></a>

Bagian berikut menjelaskan perbedaan antara `Amazon Chime SDK Messaging` ruang nama `Amazon Chime` dan ruang nama.

**AWS Ruang nama SDK**  
Namespace Amazon Chime SDK menggunakan nama formal. `Chime` Namespace Amazon Chime SDK Messaging menggunakan nama resmi. `ChimeSDKMessaging` Format nama yang tepat bervariasi menurut platform.

Misalnya, jika Anda menggunakan AWS SDK di Node.js untuk membuat pesan, Anda menggunakan baris kode untuk menangani namespace.

```
const chimeMessaging = AWS.Chime();
```

Untuk bermigrasi ke Amazon Chime Messaging SDK, perbarui baris kode ini dengan namespace baru dan wilayah titik akhir.

```
const chimeMessaging = AWS.ChimeSDKMessaging({ region: "Europe (Frankfurt)" });
```

**Wilayah**  
Namespace [Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime.html) hanya dapat menangani titik akhir API di Wilayah. `US East (N. Virginia)` Namespace [Amazon Chime SDK Messaging](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Messaging.html) dapat menangani titik akhir API perpesanan Amazon Chime SDK di Wilayah mana pun yang tersedia. Untuk daftar Wilayah perpesanan saat ini, lihat [Wilayah AWS yang tersedia untuk Amazon Chime SDK](sdk-available-regions.md) di panduan ini.

**Titik akhir**  
[Namespace [Amazon Chime SDK Messaging](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Messaging.html) menggunakan titik akhir API yang berbeda dari namespace Amazon Chime.](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime.html)

Hanya titik akhir yang digunakan untuk membuat sumber daya pesan yang dapat digunakan untuk memodifikasinya. Ini berarti sumber daya pesan yang dibuat melalui titik akhir di hanya `Europe (Frankfurt)` dapat dimodifikasi melalui`Europe (Frankfurt)`. Ini berarti bahwa saluran yang dibuat melalui titik akhir di Eropa (Frankfurt) hanya dapat dimodifikasi melalui Eropa (Frankfurt). Ini juga berarti bahwa Anda tidak dapat menangani saluran yang dibuat melalui `Chime` namespace dengan `ChimeSDKMessaging` namespace di US East (Virginia N.). Untuk informasi lebih lanjut tentang titik akhir saat ini, lihat [Pemetaan API](migrate-from-chm-namespace.md#name-end-map) di panduan ini.

**Pemimpin layanan**  
Namespace [Amazon Chime SDK Messaging](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Messaging.html) menggunakan prinsip layanan baru:. `messaging.chime.amazonaws.com` Jika Anda memiliki SQS, SNS, atau kebijakan akses IAM lainnya yang memberikan akses ke layanan, Anda perlu memperbarui kebijakan tersebut untuk memberikan akses ke prinsipal layanan baru.

**APIs**  
Namespace [Amazon Chime SDK Messaging](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Messaging.html) hanya berisi APIs untuk membuat dan mengelola sumber daya pesan, serta untuk mengirim dan menerima pesan. Namespace [Amazon Chime](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime.html) termasuk APIs untuk bagian lain dari layanan Amazon Chime serta pengiriman pesan.

**Aliran saluran**  
Alur saluran memungkinkan pengembang menjalankan logika bisnis pada pesan dalam penerbangan sebelum dikirim ke anggota saluran pesan. Misalnya, Anda dapat membuat alur yang menghapus data sensitif seperti nomor ID pemerintah, nomor telepon, atau kata-kata kotor dari pesan sebelum dikirim. Itu dapat membantu menerapkan kebijakan komunikasi perusahaan atau pedoman komunikasi lainnya.

Anda juga dapat menggunakan alur saluran untuk menjalankan fungsi seperti menggabungkan tanggapan terhadap polling sebelum mengirim hasilnya kembali ke peserta, atau mengirim pesan melalui SMS. 

Channel Flow hanya tersedia di `ChimeSDKMessaging` namespace. Untuk informasi lebih lanjut tentang mereka, lihat [Menggunakan alur saluran untuk memproses pesan untuk perpesanan Amazon Chime SDK](using-channel-flows.md) di panduan ini.

**Saluran elastis**  
Saluran elastis mendukung pengalaman obrolan skala besar dengan hingga satu juta pengguna obrolan secara otomatis diseimbangkan di sejumlah sub-saluran yang ditentukan. Saluran elastis hanya tersedia di `ChimeSDKMessaging` titik akhir. Untuk informasi lebih lanjut tentang saluran elastis, lihat [Menggunakan saluran elastis untuk menyelenggarakan acara langsung dalam rapat Amazon Chime SDK](elastic-channels.md) di panduan ini.

**Tambahan APIs**  
Namespace Messaging memiliki daftar yang berkembang APIs yang tidak dimiliki `Chime` namespace. Jika Anda memulai dengan Amazon Chime SDK, gunakan namespace perpesanan untuk akses ke semua fitur terbaru. Untuk informasi selengkapnya tentang saat ini APIs, lihat [Pesan Amazon Chime SDK](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_Operations_Amazon_Chime_SDK_Messaging.html) di Referensi API *Amazon Chime* SDK.

# Memahami prasyarat untuk perpesanan Amazon Chime SDK
<a name="messaging-prerequisites"></a>

Anda memerlukan yang berikut ini untuk menggunakan pesan Amazon Chime SDK.
+ Kemampuan untuk memprogram.
+ Sebuah AWS akun.
+ Izin untuk mengonfigurasi peran IAM untuk aplikasi menggunakan pesan Amazon Chime SDK.

Untuk sebagian besar kasus, Anda juga perlu:
+ **Aplikasi klien** - Menampilkan UI perpesanan, menghubungkan ke soket web menggunakan Amazon Chime SDKs, mengelola status.
+ **Aplikasi server** — Mengelola identitas dan pengguna.

# Memahami konsep perpesanan Amazon Chime SDK
<a name="messaging-concepts"></a>

Untuk menggunakan pesan Amazon Chime SDK secara efektif, Anda harus memahami istilah dan konsep berikut.

**AppInstance**  
Untuk menggunakan pesan Amazon Chime SDK, Anda harus terlebih dahulu membuat pesan. AppInstance Sebuah AppInstance berisi AppInstanceUsers dan Saluran. Biasanya, Anda membuat satu AppInstance untuk aplikasi Anda. Sebuah AWS akun dapat memiliki banyak AppInstances. Anda membuat pengaturan level aplikasi, seperti penyimpanan pesan dan konfigurasi streaming, di AppInstance level tersebut. AppInstances diidentifikasi oleh ARN unik dalam format ini:. `arn:aws:chime:region:aws_account_id:app-instance/app_instance_id`

**AppInstanceUser**  
AppInstanceUsers adalah entitas yang mengirim pesan, membuat saluran, bergabung dengan saluran, dan sebagainya. Biasanya, Anda membuat one-to-one pemetaan `AppInstanceUser` ke pengguna aplikasi Anda. Anda juga dapat membuat layanan `AppInstanceUser` untuk terhubung ke back-end, yang memungkinkan pengguna mengidentifikasi pesan yang berasal dari layanan back-end. AppInstanceUsers diidentifikasi oleh ARN, seperti. `arn:aws:chime:region:aws_account_id:app-instance/app_instance_id/user/app_instance_user_id` Anda mengontrol`app_instance_user_id`, dan sebagai praktik terbaik, gunakan kembali IDs yang sudah dimiliki aplikasi Anda.

**Channel**  
Ketika Anda menambahkan `AppInstanceUser` ke saluran, pengguna tersebut menjadi anggota dan dapat mengirim dan menerima pesan. Saluran dapat bersifat publik, yang memungkinkan setiap pengguna untuk menambahkan diri mereka sebagai anggota, atau pribadi, yang memungkinkan hanya moderator saluran untuk menambahkan anggota. Anda juga dapat menyembunyikan anggota saluran. Anggota tersembunyi dapat mengamati percakapan tetapi tidak mengirim pesan, dan mereka tidak ditambahkan ke keanggotaan saluran.

**SubChannel**  
Anggota saluran elastis dibagi menjadi wadah logis yang disebut SubChannels. Ketika Anda menambahkan AppInstanceUser ke saluran elastis, pengguna menjadi anggota SubChannel dan dapat mengirim dan menerima pesan untuk itu SubChannel. Keanggotaan saluran dan pesan berada pada SubChannel tingkat yang berarti bahwa pesan yang dikirim oleh anggota di salah satu tidak SubChannel akan diterima oleh anggota di yang lain SubChannel. Anggota dipindahkan ke yang berbeda SubChannels untuk mendukung sifat elastis saluran dan mempromosikan keterlibatan.

**UserMessage**  
Seseorang `AppInstanceUser` yang termasuk dalam saluran dapat mengirim dan menerima pesan pengguna. `AppInstanceUser`Dapat mengirim `STANDARD` atau mengirim `CONTROL` pesan. `STANDARD`pesan dapat berisi 4KB data dan 1KB metadata. `CONTROL`pesan hanya dapat berisi 30 byte data. Pesan bisa `PERSISTENT` atau`NON_PERSISTENT`. Anda dapat mengambil `PERSISTENT` pesan dari riwayat saluran. `NON_PERSISTENT`pesan hanya dilihat oleh anggota saluran yang saat ini terhubung ke pesan Amazon Chime SDK.

**Pesan Sistem**  
Amazon Chime SDK menghasilkan pesan sistem sebagai respons terhadap peristiwa seperti anggota yang bergabung atau meninggalkan saluran.

# Memahami arsitektur perpesanan Amazon Chime SDK
<a name="messaging-architecture"></a>

Anda dapat menggunakan pesan Amazon Chime SDK sebagai sisi server dan SDK sisi klien. Sisi server APIs membuat dan. `AppInstance` `AppInstanceUser` Anda dapat menggunakan berbagai kait dan konfigurasi untuk menambahkan logika dan validasi bisnis khusus aplikasi. Untuk informasi lebih lanjut tentang melakukan itu, lihat[Streaming data perpesanan di perpesanan Amazon Chime SDK](streaming-export.md). Selain itu, proses sisi server dapat memanggil APIs atas nama`AppInstanceUser`, atau mengontrol dedicated `AppInstanceUser` yang mewakili proses back-end.

Aplikasi sisi klien yang direpresentasikan sebagai `AppInstanceUser` dapat memanggil pesan Amazon Chime SDK secara langsung. APIs Aplikasi sisi klien menggunakan WebSocket protokol untuk terhubung ke SDK perpesanan saat online. Saat terhubung, mereka menerima pesan real-time dari saluran mana pun yang menjadi anggotanya. Ketika terputus, `AppInstanceUser` masih milik saluran yang ditambahkan, dan dapat memuat riwayat pesan saluran tersebut dengan menggunakan berbasis HTTP SDK. APIs

Aplikasi sisi klien memiliki izin untuk membuat panggilan API sebagai satu. `AppInstanceUser` Untuk mencakup kredensi IAM ke satu`AppInstanceUser`, aplikasi sisi klien mengasumsikan peran IAM berparameter melalui AWS Cognito Identity Pools, atau oleh API back-end kecil yang dihosting sendiri. Untuk informasi selengkapnya tentang otentikasi, lihat[Mengautentikasi aplikasi klien pengguna akhir untuk perpesanan Amazon Chime SDK](auth-client-apps.md). Sebaliknya, aplikasi sisi server biasanya memiliki izin yang terkait dengan satu pengguna instance aplikasi, seperti pengguna dengan izin administratif, atau mereka memiliki izin untuk melakukan panggilan API atas nama semua pengguna instance aplikasi. 

# Memahami jenis pesan Amazon Chime SDK
<a name="msg-types"></a>

Anda mengirim pesan melalui saluran. Anda dapat mengirim`STANDARD`,`CONTROL`, atau `SYSTEM` pesan.
+ `STANDARD`pesan dapat berukuran hingga 4KB dan berisi metadata. Metadata bersifat arbitrer, dan Anda dapat menggunakannya dalam berbagai cara, seperti berisi tautan ke lampiran.
+ `CONTROL`pesan dibatasi hingga 30 byte dan tidak mengandung metadata.
+ `STANDARD`dan `CONTROL` pesan bisa persisten atau tidak persisten. Pesan persisten disimpan dalam riwayat saluran dan dilihat dengan menggunakan panggilan `ListChannelMessages` API. Pesan yang tidak persisten dikirim ke setiap yang `AppInstanceUser` terhubung melalui WebSocket.
+ Amazon Chime SDK mengirimkan `SYSTEM` pesan otomatis untuk acara seperti anggota yang bergabung atau meninggalkan saluran.

# Memulai dengan pesan Amazon Chime SDK
<a name="getting-started"></a>

Topik di bagian ini menjelaskan cara mulai membangun aplikasi perpesanan Amazon Chime SDK.

**Topics**
+ [Membuat pesan AppInstance untuk Amazon Chime SDK](create-app-instance.md)
+ [Melakukan panggilan SDK dari layanan back-end untuk perpesanan Amazon Chime SDK](call-from-backend.md)
+ [Mengautentikasi aplikasi klien pengguna akhir untuk perpesanan Amazon Chime SDK](auth-client-apps.md)
+ [Membuat saluran untuk perpesanan Amazon Chime SDK](creating-channels.md)
+ [Mengirim pesan dalam pesan Amazon Chime SDK](send-messages.md)
+ [Menggunakan ExpirationSettings pesan Amazon Chime SDK](expiration.md)
+ [Menggunakan WebSockets untuk menerima pesan di perpesanan Amazon Chime SDK](websockets.md)
+ [Mengonfigurasi lampiran di perpesanan Amazon Chime SDK](configure-attachments.md)

# Membuat pesan AppInstance untuk Amazon Chime SDK
<a name="create-app-instance"></a>

Untuk menggunakan pesan Amazon Chime SDK, Anda harus terlebih dahulu membuat Amazon Chime SDK di akun Anda. `AppInstance` AWS 

**Topics**
+ [Membangun sebuah AppInstance](#app-instance-steps)
+ [Menciptakan sebuah AppInstanceUser](#create-app-instance-user)

## Membangun sebuah AppInstance
<a name="app-instance-steps"></a>

**Untuk membuat pesan `AppInstance` untuk**

1. Di CLI, jalankan `aws chime-sdk-identity create-app-instance --name NameOfAppInstance.`

1. Dalam respons buat, catat`AppInstanceArn`. `arn:aws:chime:region: aws_account_id:app-instance/app_instance_id`.

## Menciptakan sebuah AppInstanceUser
<a name="create-app-instance-user"></a>

Setelah Anda membuat`AppInstance`, Anda membuat `AppInstanceUser` di dalamnya`AppInstance`. Anda biasanya melakukan ini saat pengguna pertama kali mendaftar atau masuk ke aplikasi Anda. Anda juga dapat membuat `AppInstanceUser` yang bertindak atas nama layanan back-end Anda.

Contoh berikut menunjukkan cara membuat back-end`AppInstanceUser`:

```
aws chime-sdk-identity create-app-instance-user \
    --app-instance-arn "app_instance_arn" \
    --app-instance-user-id "back-end-worker" \
    --name "back-end-worker"
```

Dalam respons buat, perhatikan`AppInstanceUserArn`. Dibutuhkan formulir ini:`arn:aws:chime:region: aws_account_id:app-instance/app_instance_id/user/app_instance_user_id`. Dalam contoh ini, `app_instance_user_id` adalah "back-end-worker.”

**catatan**  
Sebagai praktik terbaik, saat membuat aplikasi `AppInstanceUser` untuk klien, mintalah `AppInstanceUserId` kecocokan ID unik yang ada untuk pengguna tersebut, seperti penyedia identitas. `sub` Nama adalah placeholder opsional yang dilampirkan ke beberapa entitas API, seperti pengirim pesan. Ini memungkinkan Anda untuk mengontrol nama tampilan pengguna di satu tempat, daripada perlu mencarinya dari `AppInstanceUser` ARN, yang juga dilampirkan sebagai pengirim pesan.

# Melakukan panggilan SDK dari layanan back-end untuk perpesanan Amazon Chime SDK
<a name="call-from-backend"></a>

Setelah Anda membuat pengguna untuk mewakili layanan back-end Anda, Anda membuat saluran, mengirim pesan ke saluran tersebut, dan membaca pesan dari saluran tersebut.

Jalankan perintah CLI berikut untuk membuat saluran publik.

```
aws chime-sdk-messaging create-channel \
    --chime-bearer "app_instance_user_arn" \
    --app-instance-arn "app_instance_arn" \
    --name "firstChannel"
```

Perintah menghasilkan ARN dalam format ini: `arn:aws:chime:region:aws_account_id:app-instance/app_instance_id/channel/channel_id.`

**Topics**
+ [Bagaimana otorisasi IAM bekerja untuk layanan back-end](#how-iam-works)
+ [Memahami otorisasi API implisit](#api-implicit-auth)
+ [Mengirim dan mencantumkan pesan saluran](#send-list-msgs)

## Bagaimana otorisasi IAM bekerja untuk layanan back-end
<a name="how-iam-works"></a>

Dalam perintah CLI dari bagian sebelumnya, perhatikan parameternya`chime-bearer`. Ini mengidentifikasi pengguna yang membuat atau berinteraksi dengan sumber daya seperti saluran dan pesan. Hampir semua pesan Amazon Chime SDK APIs diambil `chime-bearer` sebagai parameter, kecuali APIs dimaksudkan untuk dipanggil hanya oleh pengembang, seperti. `CreateAppInstance`

Izin IAM untuk APIs pesan Amazon Chime SDK memerlukan yang cocok `app-instance-user-arn ` dengan parameter. `chime-bearer` Tambahan ARNs —biasanya saluran ARNs —mungkin diperlukan berdasarkan API. Untuk layanan back-end seperti contoh di atas, ini mengarah ke kebijakan IAM seperti contoh berikut:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": [
            "chime:SendChannelMessage",
            "chime:ListChannelMessages",
            "chime:CreateChannelMembership",
            "chime:ListChannelMemberships",
            "chime:DeleteChannelMembership",
            "chime:CreateChannel",
            "chime:ListChannels",
            "chime:DeleteChannel"
        ],
        "Resource": [
            "arn:aws:chime:us-east-1:123456789012:app-instance/app_instance_id/user/back-end-worker",
            "arn:aws:chime:us-east-1:123456789012:app-instance/app_instance_id/channel/*"
        ]
    }
}
```

------

Perhatikan `AppInstanceUser` ARN dan saluran ARN di bagian ini. `Resource` Contoh kebijakan IAM ini memberikan izin layanan back-end untuk melakukan panggilan API sebagai pengguna dengan ID ".” back-end-worker Jika Anda ingin layanan back-end Anda dapat melakukan panggilan untuk orang-orang yang menggunakan aplikasi Anda, ubah ke`app_instance_user_arn`. `arn:aws:chime:region:aws_account_id:app-instance/app_instance_id/user/*`

## Memahami otorisasi API implisit
<a name="api-implicit-auth"></a>

Selain kebijakan IAM, APIs pesan Amazon Chime SDK memiliki izin implisit. Misalnya, seorang hanya `AppInstanceUser` dapat mengirim pesan atau mencantumkan keanggotaan saluran di saluran tempat pengguna berada. Satu pengecualian untuk ini adalah `AppInstanceUser` orang yang dipromosikan`AppInstanceAdmin`. Secara default, admin memiliki izin untuk semua saluran di aplikasi Anda. Untuk sebagian besar kasus penggunaan, Anda hanya memerlukan ini untuk layanan back-end yang berisi logika bisnis yang signifikan.

Perintah CLI berikut mempromosikan pengguna back-end ke admin.

```
aws chime-sdk-identity create-app-instance-admin \
    --app-instance-admin-arn "app_instance_user_arn" \
    --app-instance-arn "app_instance_arn"
```

## Mengirim dan mencantumkan pesan saluran
<a name="send-list-msgs"></a>

Perintah CLI berikut mengirimkan pesan saluran.

```
aws chime-sdk-messaging send-channel-message \
    --chime-bearer "app_instance_user_arn" \
    --channel-arn "channel_arn" \
    --content "hello world" \
    --type STANDARD \
    --persistence PERSISTENT
```

Perintah CLI berikut mencantumkan pesan saluran dalam urutan kronologis terbalik.
+ `aws chime list-channel-messages`
+ `aws chime-sdk-messaging list-channel-messages`

```
aws chime-sdk-messaging list-channel-messages \
    --chime-bearer "app_instance_user_arn" \
    --channel-arn "channel_arn"
```

# Mengautentikasi aplikasi klien pengguna akhir untuk perpesanan Amazon Chime SDK
<a name="auth-client-apps"></a>

Anda juga dapat menjalankan pesan Amazon Chime SDK dari aplikasi klien pengguna akhir. [Melakukan panggilan SDK dari layanan back-end untuk perpesanan Amazon Chime SDK](call-from-backend.md)menjelaskan cara membuat panggilan API seperti create-channel,, send-channel-message dan. list-channel-messages Aplikasi klien pengguna akhir seperti browser dan aplikasi seluler melakukan panggilan API yang sama ini. Aplikasi klien juga dapat terhubung melalui WebSocket untuk menerima pembaruan waktu nyata pada pesan dan acara ke saluran yang menjadi anggotanya. Bagian ini mencakup cara memberikan kredensil IAM ke aplikasi klien yang dicakup oleh pengguna instance aplikasi tertentu. Setelah pengguna akhir memiliki kredensil ini, mereka dapat melakukan panggilan API yang ditampilkan di. [Melakukan panggilan SDK dari layanan back-end untuk perpesanan Amazon Chime SDK](call-from-backend.md) Untuk melihat demo lengkap aplikasi klien, lihat [ https://github.com/aws-samples/amazon-chime-sdk/tree/main/apps/chat](https://github.com/aws-samples/amazon-chime-sdk/tree/main/apps/chat). Untuk informasi selengkapnya tentang menerima pesan real-time dari saluran yang dimiliki aplikasi klien, lihat[Menggunakan WebSockets untuk menerima pesan di perpesanan Amazon Chime SDK](websockets.md).

## Memberikan kredensi IAM kepada pengguna akhir
<a name="connect-id-provider"></a>

Pesan Amazon Chime SDK terintegrasi secara native dengan kebijakan AWS Identity and Access Management (IAM) untuk mengautentikasi permintaan yang masuk. Kebijakan IAM mendefinisikan apa yang dapat dilakukan pengguna individu. Kebijakan IAM dapat dibuat untuk memberikan kredensil terbatas cakupan untuk kasus penggunaan Anda. Untuk informasi selengkapnya tentang cara membuat kebijakan untuk pengguna perpesanan Amazon Chime SDK, lihat. [Contoh peran IAM untuk perpesanan Amazon Chime SDK](iam-roles.md)

Jika Anda memiliki penyedia identitas yang sudah ada, Anda memiliki opsi berikut untuk mengintegrasikan identitas yang ada dengan pesan Amazon Chime SDK.
+ Anda dapat menggunakan penyedia identitas yang ada untuk mengautentikasi pengguna dan kemudian mengintegrasikan layanan otentikasi dengan AWS Security Token Service (STS) untuk membuat layanan penjual kredenal Anda sendiri untuk klien. STS APIs menyediakan asumsi Peran IAM.
+ Jika Anda sudah memiliki penyedia identitas yang kompatibel dengan SAMP atau OpenID, sebaiknya gunakan Amazon [Cognito Identity Pools, yang mengabstraksikan](https://docs.aws.amazon.com/cognito/latest/developerguide/identity-pools.html) panggilan ke STS dan. AWS [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) Amazon Cognito terintegrasi dengan OpenID, SAMP, dan penyedia identitas publik seperti Facebook, Login with Amazon, Google, dan Masuk dengan Apple.

Jika Anda tidak memiliki penyedia identitas, Anda dapat memulai dengan Amazon Cognito User Pools. Untuk contoh cara menggunakan Amazon Cognito dengan fitur perpesanan Amazon Chime SDK, [lihat Membangun fitur obrolan ke dalam aplikasi Anda dengan pesan Amazon Chime](https://aws.amazon.com/blogs/business-productivity/build-chat-features-into-your-application-with-amazon-chime-sdk-messaging/) SDK. 

Sebagai alternatif, Anda dapat menggunakan [AWS STS](https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html)untuk membuat layanan penjual kredenal Anda sendiri atau membangun penyedia identitas Anda sendiri.

**Menggunakan STS untuk menjual kredensi**  
[Jika Anda sudah memiliki IDP seperti ActiveDirectory LDAP, dan Anda ingin menerapkan layanan penjual kredenal kustom, atau memberikan akses ke obrolan untuk peserta rapat yang tidak diautentikasi, Anda dapat menggunakan STS API.AWSAssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) Untuk melakukannya, pertama-tama Anda membuat Peran SDK perpesanan Amazon Chime SDK. Untuk informasi selengkapnya tentang membuat peran tersebut, lihat [Membuat peran untuk mendelegasikan izin ke pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html).

Peran IAM akan memiliki izin untuk tindakan perpesanan Amazon Chime SDK yang akan digunakan aplikasi Anda, mirip dengan yang berikut:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "chime:GetMessagingSessionEndpoint"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "chime:SendChannelMessage",
                "chime:ListChannelMessages",
                "chime:CreateChannelMembership",
                "chime:ListChannelMemberships",
                "chime:DeleteChannelMembership",
                "chime:CreateChannelModerator",
                "chime:ListChannelModerators",
                "chime:DescribeChannelModerator",
                "chime:CreateChannel",
                "chime:DescribeChannel",
                "chime:ListChannels",
                "chime:DeleteChannel",
                "chime:RedactChannelMessage",
                "chime:UpdateChannelMessage",
                "chime:Connect",
                "chime:ListChannelBans",
                "chime:CreateChannelBan",
                "chime:DeleteChannelBan",
                "chime:ListChannelMembershipsForAppInstanceUser",
                "chime:AssociateChannelFlow",
                "chime:DisassociateChannelFlow",
                "chime:GetChannelMessageStatus"
            ],
            "Resource": [
            "arn:aws:chime:us-east-1:123456789012:app-instance/app_instance_id/user/my_applications_user_id",
            "arn:aws:chime:us-east-1:123456789012:app-instance/app_instance_id/channel/*"
    ]
        }
    ]
}
```

------

Untuk contoh ini, sebut peran ini sebagai *ChimeMessagingSampleAppUserRole*.

Perhatikan tag sesi dalam *ChimeMessagingSampleAppUserRole*kebijakan `${my_application_user_id}` di sumber ARN pengguna. Tag sesi ini diparameterisasi dalam panggilan [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)API untuk membatasi kredensil yang dikembalikan ke izin untuk satu pengguna.

[https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)Dan [https://docs.aws.amazon.com/STS/latest/APIReference/API_TagSesstion.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_TagSesstion.html) APIs dipanggil menggunakan entitas IAM yang sudah kredensialisasi, seperti pengguna IAM. Ini juga APIs dapat disebut dengan peran IAM yang berbeda seperti [peran AWS Lambda lari](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html). Identitas IAM itu harus memiliki izin untuk memanggil `AssumeRole` dan `TagSession` mengaktifkan. *ChimeMessagingSampleAppUserRole* 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
         {
            "Effect": "Allow",
            "Action": [ 
                "sts:AssumeRole",
                "sts:TagSession"
                ],
            "Resource": "arn:aws:iam::123456789012:role/ChimeMessagingSampleAppUserRole"
        }
    ]
}
```

------

 Untuk contoh ini, sebut peran ini sebagai *ChimeSampleAppServerRole*.

Anda perlu mengatur `ChimeMessagingSampleAppUserRole` dengan kebijakan kepercayaan yang memungkinkan `ChimeMessagingSampleAppServerRole` untuk memanggil [STS AssumeRole API](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) di atasnya. Untuk informasi selengkapnya tentang penggunaan kebijakan kepercayaan dengan peran IAM, lihat [Cara menggunakan kebijakan kepercayaan dengan peran IAM](https://aws.amazon.com/blogs/security/how-to-use-trust-policies-with-iam-roles/). Anda dapat menggunakan Konsol Peran AWS IAM untuk menambahkan kebijakan ini ke. `ChimeMessagingSampleAppUserRole` Contoh berikut menunjukkan hubungan kepercayaan yang khas.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:role/ChimeMessagingSampleAppServerRole"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

 Dalam penerapan sampel, instans [Amazon](https://aws.amazon.com/ec2/) EC2, atau instans diluncurkan AWS Lambda dengan. `ChimeMessagingSampleAppServerRole` Server kemudian:

1. Melakukan otorisasi khusus aplikasi apa pun pada permintaan klien untuk menerima kredensil.

1. Memanggil `AssumeRole` STS `ChimeMessagingSampleAppUserRole` aktif, dengan tag yang membuat parameter. `${aws:PrincipalTag/my_applications_user_id}`

1. Meneruskan kredensil yang dikembalikan dalam `AssumeRole` panggilan ke pengguna.

Contoh berikut menunjukkan perintah CLI untuk mengasumsikan peran untuk langkah 2:

`aws sts assume-role --role-arn arn:aws:iam::my_aws_account_id:role/ChimeMessagingSampleAppUserRole --role-session-name demo --tags Key=my_applications_user_id,Value=123456789 ` 

# Membuat saluran untuk perpesanan Amazon Chime SDK
<a name="creating-channels"></a>

Anda dan pengguna akhir Anda dapat membuat saluran. Setelah dibuat, Anda atau pengguna akhir Anda juga perlu menambahkan anggota ke saluran. Kode sampel untuk membuat saluran tersedia dalam [aplikasi sampel di GitHub](https://github.com/aws-samples/amazon-chime-sdk/tree/main/apps/chat).

Untuk informasi selengkapnya tentang membuat channel dan menambahkan anggota, lihat:
+  [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannel.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannel.html) 
+  [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html) 

# Mengirim pesan dalam pesan Amazon Chime SDK
<a name="send-messages"></a>

Gunakan [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_SendChannelMessage.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_SendChannelMessage.html)API untuk mengirim pesan. Kode sampel tersedia dalam [aplikasi sampel di GitHub](https://github.com/aws-samples/amazon-chime-sdk/tree/main/apps/chat). 

# Menggunakan ExpirationSettings pesan Amazon Chime SDK
<a name="expiration"></a>

Saat Anda membuat `AppInstanceUser` atau a`Channel`, Anda dapat menggunakan `ExpirationSettings` untuk mengonfigurasi sumber daya tersebut untuk penghapusan otomatis. `ExpirationSettings`membantu mengurangi biaya penyimpanan dan mencegah resource-limit-exceeded masalah. Misalnya, Anda dapat menghapus saluran yang tidak digunakan setelah 7 hari, atau menghapus saluran `AppInstanceUser` yang hanya dipanggil untuk tujuan pengujian.

Untuk`AppInstanceUser`, Anda menentukan periode kedaluwarsa berdasarkan waktu pembuatan pengguna. Untuk`Channel`, Anda menentukan periode kedaluwarsa berdasarkan waktu pembuatan saluran, atau waktu pesan terakhir. Yang terakhir memungkinkan Anda menggunakan aktivitas pesan untuk menyesuaikan penghapusan otomatis.

**penting**  
Tak lama setelah sumber daya kedaluwarsa, `ExpirationSettings` mulailah proses latar belakang untuk menghapus sumber daya tersebut. Prosesnya biasanya memakan waktu 6 jam, tetapi waktu itu dapat bervariasi.  
Kedaluwarsa `AppInstanceUsers` dan `Channels` yang belum dihapus masih tampak valid dan aktif. Anda dapat memperbarui atau menghapus pengaturan kedaluwarsa mereka, dan sistem menghormati perubahan Anda.

**Topics**
+ [Mengkonfigurasi ExpirationSettings](#create-expiration)
+ [AWS CloudTrail acara untuk penghapusan sumber daya yang kedaluwarsa](#ct-events)

## Mengkonfigurasi ExpirationSettings
<a name="create-expiration"></a>

Bagian berikut menjelaskan cara mengkonfigurasi `ExpirationSettings` dari sebuah `AppInstanceUser` atau a`Channel`. 

### Mengkonfigurasi ExpirationSettings saat Anda membuat sumber daya
<a name="configure-on-create"></a>

Anda dapat mengkonfigurasi `ExpirationSettings` ketika Anda menjalankan [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateAppInstanceUser.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateAppInstanceUser.html)atau [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannel.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannel.html) APIs. Jika Anda mengatur `ExpirationSettings` parameter, Anda harus memberikan izin IAM berikut:
+ `chime:PutAppInstanceUserExpirationSettings`saat membuat `AppInstanceUser`
+ `chime:PutChannelExpirationSettings`saat membuat`Channel`.

Contoh berikut menggunakan AWS CLI untuk membuat `AppInstanceUser` yang kedaluwarsa setelah sehari.

```
aws chime-sdk-identity create-app-instance-user \
--app-instance-arn "app_instance_arn" \
--app-instance-user-id "backend-worker" \
--name "backend-worker" \
--expiration-settings '{
            "ExpirationDays": 1,
            "ExpirationCriterion": "CREATED_TIMESTAMP"
        }'
```

Contoh berikut menggunakan AWS CLI untuk membuat `Channel` yang kedaluwarsa setelah sehari setelah terakhir menerima pesan.

```
aws chime-sdk-messaging create-channel \
--chime-bearer "app_instance_user_arn" \
--app-instance-arn "app_instance_arn" \
--name "firstChannel" \
--expiration-settings '{
            "ExpirationDays": 1,
            "ExpirationCriterion": "LAST_MESSAGE_TIMESTAMP"
        }'
```

### Menggunakan Put APIs untuk mengkonfigurasi ExpirationSettings
<a name="configure-on-put"></a>

Anda juga dapat menggunakan [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_PutAppInstanceUserExpirationSettings.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_PutAppInstanceUserExpirationSettings.html)dan [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_PutChannelExpirationSettings.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_PutChannelExpirationSettings.html) APIs untuk membuat, memperbarui, dan menghapus`ExpirationSettings`. 

Contoh berikut menunjukkan Anda untuk menggunakan AWS CLI untuk memperbarui an`AppInstanceUser`. `ExpirationSettings`

```
aws chime-sdk-identity put-app-instance-user-expiration-settings \
--app-instance-user-arn "app_instance_user_arn" \
--expiration-settings '{
            "ExpirationDays": 30,
            "ExpirationCriterion": "CREATED_TIMESTAMP"
        }'
```

Contoh berikut menunjukkan Anda untuk menggunakan AWS CLI untuk menghapus saluran. `ExpirationSettings`

```
aws chime-sdk-messaging put-channel-expiration-settings \
--chime-bearer "app_instance_user_arn" \
--channel-arn "channel_arn"
```

## AWS CloudTrail acara untuk penghapusan sumber daya yang kedaluwarsa
<a name="ct-events"></a>

Setelah sistem menghapus sumber daya yang kedaluwarsa, ia mengirimkan `ExpireChannel` acara `ExpireAppInstanceUser` atau ke. AWS CloudTrail Jenis acara tergantung pada jenis aset yang dihapus.

Contoh berikut menunjukkan suatu `AppInstanceUser` peristiwa.

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "accountId": "123456789012",
        "invokedBy": "chime.amazonaws.com"
    },
    "eventTime": "2023-03-15T00:00:00Z",
    "eventSource": "chime.amazonaws.com",
    "eventName": "ExpireAppInstanceUser",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "chime.amazonaws.com",
    "userAgent": "chime.amazonaws.com",
    "requestParameters": null,
    "responseElements": null,
    "eventID": "12345678-1234-1234-1234-123456789012",
    "readOnly": false,
    "resources": [
        {
            "accountId": "123456789012",
            "type": "AWS::Chime::AppInstanceUser",
            "ARN": "arn:aws:chime:us-east-1:123456789012:app-instance/app-instance-id/user/user-id"
        }
    ],
    "eventType": "AwsServiceEvent",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "serviceEventDetails": {
        "reason": "AppInstanceUser deleted due to expiration settings."
    },
    "eventCategory": "Management"
}
```

# Menggunakan WebSockets untuk menerima pesan di perpesanan Amazon Chime SDK
<a name="websockets"></a>

 Anda dapat menggunakan [Amazon Chime JS SDK](https://github.com/aws/amazon-chime-sdk-js) untuk menerima pesan menggunakan WebSockets, atau Anda dapat menggunakan pustaka WebSocket klien pilihan Anda.

Ikuti topik ini dalam urutan yang tercantum untuk mulai menggunakan WebSockets:

**Topics**
+ [Mendefinisikan kebijakan IAM](#define-iam-policy)
+ [Mengambil titik akhir](#retrieve-endpoint)
+ [Membangun koneksi](#connect-api)
+ [Menggunakan prefetch untuk menyampaikan detail saluran](#prefetch)
+ [Memproses acara](#process-events)

## Mendefinisikan kebijakan IAM
<a name="define-iam-policy"></a>

Untuk memulai, tentukan kebijakan IAM yang memberi Anda izin untuk membuat WebSocket koneksi. Contoh kebijakan berikut memberikan `AppInstanceUser` izin untuk membuat WebSocket koneksi.

```
"Version": "2012-10-17",		 	 	 
"Statement": [
  {
    "Effect": "Allow",
    "Action: [
      "chime:Connect"
    ],
    "Resource": [
      "arn:aws:chime:region:{aws_account_id}:app-instance/{app_instance_id}/user/{app_instance_user_id}"
    ]
 },
 {
    "Effect": "Allow",
    "Action: [
      "chime:GetMessagingSessionEndpoint"
    ],
    "Resource": [
      "*"
    ]
 }
 ]
}
```

## Mengambil titik akhir
<a name="retrieve-endpoint"></a>

Langkah-langkah berikut menjelaskan cara mengambil titik akhir yang digunakan dalam koneksi WebSocket.

1. Gunakan [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_GetMessagingSessionEndpoint.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_GetMessagingSessionEndpoint.html)API untuk mengambil titik WebSocket akhir. 

1. Gunakan URL yang dikembalikan oleh [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_GetMessagingSessionEndpoint.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_GetMessagingSessionEndpoint.html)API untuk membuat WebSocket URL Tanda Tangan Versi 4 Tanda Tangan. Jika Anda memerlukan bantuan untuk melakukan itu, Anda dapat mengikuti petunjuk di[Membangun koneksi](#connect-api).
**catatan**  
WebSocket URLs memiliki formulir berikut: `id.region.ws-messaging.chime.aws`

## Membangun koneksi
<a name="connect-api"></a>

 Setelah Anda mengambil endpoint, Anda menggunakan connect API untuk membuat WebSocket sambungan ke server back-end Amazon Chime SDK dan menerima pesan untuk file. `AppInstanceUser` Anda harus menggunakan AWS Signature Version 4 untuk menandatangani permintaan. Untuk informasi selengkapnya tentang menandatangani permintaan, lihat [Menandatangani AWS Permintaan dengan Tanda Tangan Versi 4](https://docs.aws.amazon.com/general/latest/gr/Signature Version 4_signing.html).

**catatan**  
Untuk mengambil titik akhir, Anda dapat menjalankan API. [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_GetMessagingSessionEndpoint.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_GetMessagingSessionEndpoint.html) Anda dapat menggunakan pustaka WebSocket klien pilihan Anda untuk terhubung ke titik akhir.

**Permintaan Sintaks**

```
GET /connect
?X-Amz-Algorithm=AWS4-HMAC-SHA256
&X-Amz-Credential=AKIARALLEXAMPLE%2F20201214%2Fregion%2Fchime%2Faws4_request
&X-Amz-Date=20201214T171359Z
&X-Amz-Expires=10
&X-Amz-SignedHeaders=host
&sessionId={sessionId}
&userArn={appInstanceUserArn}
&X-Amz-Signature=db75397d79583EXAMPLE
```

**Parameter Permintaan URI**

Semua Parameter Kueri Permintaan URI harus dikodekan URL.

**X-Amz-Algoritma**

Mengidentifikasi versi AWS Signature dan algoritma yang Anda gunakan untuk menghitung tanda tangan. Amazon Chime SDK hanya mendukung otentikasi AWS Signature Version 4, jadi nilainya adalah. `AWS4-HMAC-SHA256`

**X-Amz-Kredensi**

Selain ID kunci akses Anda, parameter ini juga menyediakan AWS Wilayah dan layanan—cakupan—yang tanda tangannya valid. Nilai ini harus sesuai dengan cakupan yang Anda gunakan dalam perhitungan tanda tangan. Bentuk umum untuk nilai parameter ini adalah:

`<yourAccessKeyId>/<date>/<awsRegion>/<awsService >/aws4_request`

Contoh:

`AKIAIOSFODNN7EXAMPLE/20201214/us-east-1/chime/aws4_request`

**X-Amz-Tanggal**

Format tanggal dan waktu harus mengikuti standar ISO 8601, dan Anda harus memformatnya sebagai. `yyyyMMddTHHmmssZ` Misalnya, Anda harus mengonversi **08/01/2020 15:32:41.982-700** ke Coordinated Universal Time (UTC) dan mengirimkannya sebagai. `20200801T083241Z`

**X-Amz-Signed-Header**

Daftar header yang Anda gunakan untuk menghitung tanda tangan. Header berikut diperlukan dalam perhitungan tanda tangan:
+ Header host HTTP.
+ Setiap header x-amz-\$1 yang Anda rencanakan untuk ditambahkan ke permintaan.

**catatan**  
Untuk keamanan tambahan, tandatangani semua header permintaan yang Anda rencanakan untuk disertakan dalam permintaan Anda.

**Tanda Tangan X-Amz**

Memberikan tanda tangan untuk mengautentikasi permintaan Anda. Tanda tangan ini harus cocok dengan tanda tangan yang dihitung Amazon Chime SDK. Jika tidak, Amazon Chime SDK menolak permintaan tersebut. Misalnya, `733255ef022bec3f2a8701cd61d4b371f3f28c9f19EXAMPLEd48d5193d7`.

**X-Amz-Token Keamanan**

Parameter kredensi opsional jika menggunakan kredensil yang bersumber dari Security Token Service. Untuk informasi selengkapnya tentang layanan ini, lihat yang [https://docs.aws.amazon.com/STS/terbaru//APIReference](https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html).

**SessionId**

Menunjukkan Id unik untuk WebSocket koneksi yang sedang dibuat.

**UserArn**

Menunjukkan identitas orang yang `AppInstanceUser` mencoba membuat koneksi. Nilainya harus ARN dari. `AppInstanceUser` Sebagai contoh, `arn:aws:chime:us%2Deast%2D1:123456789012:app%2Dinstance/694d2099%2Dcb1e%2D463e%2D9d64%2D697ff5b8950e/user/johndoe`. 

## Menggunakan prefetch untuk menyampaikan detail saluran
<a name="prefetch"></a>

Saat Anda membuat WebSocket sambungan, Anda dapat menentukan `prefetch-on=connect` parameter kueri untuk mengirimkan `CHANNEL_DETAILS` peristiwa. Fitur prefetch dilengkapi dengan connect API, dan fitur ini memungkinkan pengguna untuk melihat tampilan obrolan yang diperkaya tanpa panggilan API tambahan. Pengguna dapat:
+ Lihat pratinjau pesan saluran terakhir, ditambah stempel waktunya.
+ Lihat anggota saluran.
+ Lihat penanda saluran yang belum dibaca.

Setelah pengguna terhubung dengan parameter prefetch yang ditentukan, pengguna menerima acara yang dibuat sesi, yang menunjukkan koneksi telah dibuat. Pengguna kemudian menerima hingga 50 `CHANNEL_DETAILS` acara. Jika pengguna memiliki kurang dari 50 saluran, API connect akan mengambil semua saluran melalui `CHANNEL_DETAILS` acara. Jika pengguna memiliki lebih dari 50 saluran, API akan mengambil 50 saluran teratas yang berisi pesan yang belum dibaca dan nilai terbaru. `LastMessageTimestamp` `CHANNEL_DETAILS`Acara tiba dalam urutan acak, dan Anda menerima acara untuk semua 50 saluran.

Juga, prefetch mengembalikan berikut untuk `ChannelMessages` dan: `ChannelMemberships`
+ **ChannelMessages**— Daftar [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ChannelMessageSummary.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ChannelMessageSummary.html)objek, diurutkan berdasarkan `CreatedTimestamp` urutan menurun. Hanya menyertakan 20 pesan terbaru yang terlihat oleh pengguna. Jika ada pesan yang ditargetkan di saluran yang tidak terlihat oleh pengguna saat ini, maka kurang dari 20 pesan mungkin dikembalikan. `ChannelMessagesHasMore`Boolean akan disetel ke true untuk menunjukkan ada lebih banyak pesan. Batas lunak, dapat disesuaikan di tingkat AWS akun.
+ **ChannelMemberships**— Daftar [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ChannelMembershipSummary.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ChannelMembershipSummary.html)objek. Termasuk maksimal 30 anggota saluran. Batas lunak, dapat disesuaikan di tingkat AWS akun.

Contoh ini menunjukkan cara menggunakan`prefetch-on=connect`.

```
GET /connect
?X-Amz-Algorithm=AWS4-HMAC-SHA256
&X-Amz-Credential=AKIARALLEXAMPLE%2F20201214%2Fregion%2Fchime%2Faws4_request
&X-Amz-Date=20201214T171359Z
&X-Amz-Expires=10
&X-Amz-SignedHeaders=host
&sessionId=sessionId
&prefetch-on=connect
&userArn=appInstanceUserArn
&X-Amz-Signature=db75397d79583EXAMPLE
```

Contoh ini menunjukkan respons untuk satu saluran. Anda akan menerima tanggapan untuk semua 50 saluran.

```
{
   "Headers": { 
        "x-amz-chime-event-type": "CHANNEL_DETAILS", 
        "x-amz-chime-message-type": "SYSTEM" 
        },
   "Payload": JSON.stringify"({
        Channel: [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ChannelSummary.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ChannelSummary.html) 
        ChannelMessages: List of [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ChannelMessageSummary.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ChannelMessageSummary.html)  
        ChannelMemberships: List of [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ChannelMembershipSummary.html ](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ChannelMembershipSummary.html )
        ReadMarkerTimestamp: Timestamp 
        ChannelMessagesHasMore: Boolean 
    })
}
```

## Memproses acara
<a name="process-events"></a>

`AppInstanceUser`Untuk menerima pesan setelah mereka membuat koneksi, Anda harus menambahkannya ke saluran. Untuk melakukan itu, gunakan [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html)API.

**catatan**  
A `AppInstanceUser` selalu menerima pesan untuk semua saluran milik mereka. Pesan berhenti saat `AppInstance` pengguna terputus.

Sebuah `AppInstanceAdmin` dan a `ChannelModerator` tidak menerima pesan di saluran kecuali Anda menggunakan [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html)API untuk menambahkannya secara eksplisit.

Topik berikut menjelaskan cara memproses peristiwa.

**Topics**
+ [Memahami struktur pesan](#message-structures)
+ [Penanganan terputus](#handle-disconnects)

### Memahami struktur pesan
<a name="message-structures"></a>

Setiap WebSocket pesan yang Anda terima mematuhi format ini:

```
{
   "Headers": {"key": "value"},
   "Payload": "{\"key\": \"value\"}"
}
```

**Header**  
Pesan Amazon Chime SDK menggunakan tombol header berikut:
+ `x-amz-chime-event-type`
+ `x-amz-chime-message-type`
+ `x-amz-chime-event-reason`

Bagian selanjutnya mencantumkan dan menjelaskan kemungkinan nilai dan muatan header.

**Payload**  
Pesan Websocket mengembalikan string JSON. Struktur string JSON tergantung pada header. `x-amz-event-type` Tabel berikut mencantumkan `x-amz-chime-event-type` nilai dan muatan yang mungkin:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/chime-sdk/latest/dg/websockets.html)

**x-amz-chime-message-jenis**  
Tabel berikut mencantumkan jenis `x-amz-chime-message-type` pesan.


| Jenis pesan | Deskripsi | 
| --- | --- | 
| `STANDARD` | Dikirim ketika websocket menerima pesan saluran STANDARD. | 
| `CONTROL` | Dikirim saat WebSocket menerima pesan saluran KONTROL. | 
| `SYSTEM` | Semua pesan websocket lainnya yang dikirim oleh Amazon Chime SDK Messaging. | 

**x-amz-chime-event-alasan**  
Ini adalah header opsional yang didukung untuk kasus penggunaan tertentu. Header memberikan informasi tentang mengapa acara tertentu diterima.


| Alasan acara | Deskripsi | 
| --- | --- | 
| Subchannel\$1Deleted | `DELETE_CHANNEL_MEMBERSHIP`peristiwa yang diterima oleh moderator saluran elastis. Hanya dilihat oleh moderator setelah balancing keanggotaan menghapus sub-saluran milik mereka. | 

### Penanganan terputus
<a name="handle-disconnects"></a>

Websockets dapat terputus karena perubahan konektivitas jaringan, atau ketika kredensil kedaluwarsa. Setelah Anda membuka WebSocket, Amazon Chime SDK mengirimkan ping reguler ke klien perpesanan untuk memastikannya masih terhubung. Jika koneksi ditutup, klien menerima kode WebSocket tutup. Klien dapat mencoba menyambung kembali, atau tidak, tergantung pada kode tutup. Tabel berikut menunjukkan kode tutup yang dapat digunakan klien untuk menyambung kembali.

Untuk 1000 hingga 4000 kode penutupan, sambungkan kembali hanya untuk pesan berikut:


| Kode penutupan | Dapat menyambung kembali | Alasan | 
| --- | --- | --- | 
| 1001 | Ya | Penutupan normal | 
| 1006 | Ya | Penutupan abnormal | 
| 1011 | Ya | Kesalahan server internal | 
| 1012 | Ya | Mulai ulang layanan | 
| 1013 | Ya | Coba lagi nanti | 
| 1014 | Ya | Server bertindak sebagai gateway atau proxy dan menerima respons yang tidak valid dari server hulu. Ini mirip dengan Kode Status HTTP 502. | 

Untuk kode 4XXX, selalu sambungkan kembali *kecuali* untuk pesan berikut:


| Kode penutupan | Dapat menyambung kembali | Alasan | 
| --- | --- | --- | 
| 4002 | Tidak | Klien diprakarsai | 
| 4003 | Tidak | Dilarang | 
| 4401 | Tidak | Tidak diotorisasi | 

Ketika aplikasi menggunakan kode tutup untuk menyambung kembali, aplikasi harus:

1. Panggil [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_GetMessagingSessionEndpoint.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_GetMessagingSessionEndpoint.html)API lagi untuk mendapatkan URL dasar baru. 

1. Segarkan kredensi IAM jika sudah kedaluwarsa.

1. Connect melalui WebSocket. 

Jika Anda menggunakan amazon-chime-sdk-js pustaka, ini akan ditangani untuk Anda jika Anda menerapkan properti [needsRefresh ()](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Credentials.html#needsRefresh-property) dan metode [refresh (](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Credentials.html#refresh-property)). Untuk contoh kerja, lihat [https://github.com/aws-samples/amazon-chime-sdk/blob/dc11c4c76c78d28f618577706bba2087919a5635/apps/chat/src/providers/AuthProvider.jsx](https://github.com/aws-samples/amazon-chime-sdk/blob/dc11c4c76c78d28f618577706bba2087919a5635/apps/chat/src/providers/AuthProvider.jsx#L93-L101) \$1L93 -L101.

# Mengonfigurasi lampiran di perpesanan Amazon Chime SDK
<a name="configure-attachments"></a>

Amazon Chime SDK memungkinkan Anda menggunakan penyimpanan Anda sendiri untuk lampiran pesan, dan menyertakannya sebagai metadata pesan. Amazon Simple Storage Service (S3) adalah cara termudah untuk memulai lampiran.

**Untuk menggunakan S3 untuk lampiran**

1. Buat ember S3 untuk menyimpan lampiran.

1. Buat kebijakan IAM untuk bucket yang memungkinkan pengguna Amazon Chime SDK mengunggah, mengunduh, dan menghapus lampiran dari bucket S3 Anda.

1. Buat peran IAM untuk digunakan oleh penyedia Identitas Anda untuk menjual kredensil kepada pengguna untuk lampiran.

[Aplikasi sampel](https://github.com/aws-samples/amazon-chime-sdk/tree/main/apps/chat) memberikan contoh bagaimana melakukan ini dengan Amazon S3, Amazon Cognito, dan Amazon Chime SDK.

# Memahami pesan sistem untuk perpesanan Amazon Chime SDK
<a name="system-messages"></a>

Amazon Chime SDK mengirimkan pesan sistem ke semua klien yang terhubung untuk acara yang terjadi di saluran. Acara meliputi:
+ `UPDATE_CHANNEL`— Acara ini menandakan setiap pembaruan yang dilakukan pada detail saluran, seperti nama atau metadata.
+ `DELETE_CHANNEL`Acara ini menandakan bahwa saluran dan semua datanya, termasuk pesan, keanggotaan, moderator dan larangan, akan dihapus.
+ `CREATE_CHANNEL_MEMBERSHIP`— Acara ini menandakan bahwa seseorang `AppInstanceUser` telah ditambahkan sebagai anggota ke saluran. Acara ini juga berisi rincian yang baru`AppInstanceUser`.
+ `DELETE_CHANNEL_MEMBERSHIP`— Acara ini menandakan bahwa a `AppInstanceUser` telah dihapus dari saluran. Acara ini juga berisi `AppInstanceUser` detail yang dihapus.
+ `UPDATE_CHANNEL_MEMBERSHIP`— Acara ini hanya berlaku untuk saluran elastis. Acara ini menandakan bahwa keseimbangan keanggotaan mentransfer `AppInstanceUser` dari satu sub-saluran ke sub-saluran lainnya. Acara ini juga berisi `AppInstanceUser` rincian, ditambah informasi tentang sub-saluran yang `AppInstanceUser` ditransfer ke.

# Contoh peran IAM untuk perpesanan Amazon Chime SDK
<a name="iam-roles"></a>

Agar pengguna dapat mengakses fitur perpesanan Amazon Chime SDK, Anda harus menentukan peran dan kebijakan IAM untuk memberikan kredensil kepada pengguna saat mereka masuk. Kebijakan IAM mendefinisikan sumber daya yang dapat diakses pengguna.

Contoh di bagian ini memberikan kebijakan dasar yang dapat Anda sesuaikan dengan kebutuhan Anda. Untuk informasi selengkapnya tentang cara kerja kebijakan, lihat[Melakukan panggilan SDK dari layanan back-end untuk perpesanan Amazon Chime SDK](call-from-backend.md). 

Contoh ini menunjukkan kebijakan untuk pengembang yang membangun aplikasi menggunakan pesan Amazon Chime SDK.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "chime:CreateAppInstance",
                "chime:DescribeAppInstance",
                "chime:ListAppInstances",
                "chime:UpdateAppInstance",
                "chime:DeleteAppInstance",
                "chime:CreateAppInstanceUser",
                "chime:DeleteAppInstanceUser",
                "chime:ListAppInstanceUsers",
                "chime:UpdateAppInstanceUser",
                "chime:DescribeAppInstanceUser",
                "chime:CreateAppInstanceAdmin",
                "chime:DescribeAppInstanceAdmin",
                "chime:ListAppInstanceAdmins",
                "chime:DeleteAppInstanceAdmin",
                "chime:PutAppInstanceRetentionSettings",
                "chime:GetAppInstanceRetentionSettings",
                "chime:PutAppInstanceStreamingConfigurations",
                "chime:GetAppInstanceStreamingConfigurations",
                "chime:DeleteAppInstanceStreamingConfigurations",
                "chime:TagResource",
                "chime:UntagResource",
                "chime:ListTagsForResource",
                "chime:CreateChannelFlow",
                "chime:UpdateChannelFlow",
                "chime:DescribeChannelFlow",
                "chime:DeleteChannelFlow",
                "chime:ListChannelFlows",
                "chime:ListChannelsAssociatedWithChannelFlow",
                "chime:ChannelFlowCallback"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
```

------

Contoh ini menunjukkan kebijakan yang memungkinkan pengguna mengakses tindakan pengguna Amazon Chime SDK.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": "chime:GetMessagingSessionEndpoint",
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Action": [
                "chime:CreateChannel",
                "chime:DescribeChannel",
                "chime:DeleteChannel",
                "chime:UpdateChannel",
                "chime:ListChannels",
                "chime:Listsubchannels",
                "chime:ListChannelMembershipsForAppInstanceUser",
                "chime:DescribeChannelMembershipForAppInstanceUser",
                "chime:ListChannelsModeratedByAppInstanceUser",
                "chime:DescribeChannelModeratedByAppInstanceUser",
                "chime:UpdateChannelReadMarker",
                "chime:CreateChannelModerator",
                "chime:DescribeChannelModerator",
                "chime:ListChannelModerators",
                "chime:DeleteChannelModerator",
                "chime:SendChannelMessage",
                "chime:GetChannelMessage",
                "chime:DeleteChannelMessage",
                "chime:UpdateChannelMessage",
                "chime:RedactChannelMessage",
                "chime:ListChannelMessages",
                "chime:CreateChannelMembership",
                "chime:DescribeChannelMembership",
                "chime:DeleteChannelMembership",
                "chime:ListChannelMemberships",
                "chime:CreateChannelBan",
                "chime:DeleteChannelBan",
                "chime:ListChannelBans",
                "chime:DescribeChannelBan",
                "chime:Connect",
                "chime:AssociateChannelFlow",
                "chime:DisassociateChannelFlow",
                "chime:GetChannelMessageStatus"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:chime:us-east-1:123456789012:app-instance/app_instance_id/user/app_instance_user_id",
                "arn:aws:chime:us-east-1:123456789012:app-instance/app_instance_id/channel/*"
            ]
        }
    ]
}
```

------

Contoh ini menunjukkan kebijakan yang memberi pengguna akses minimal ke tindakan pengguna Amazon Chime SDK.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": "chime:GetMessagingSessionEndpoint",
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Action": [
                "chime:ListChannels",
                "chime:DescribeChannel",
                "chime:ListChannelMembershipsForAppInstanceUser",
                "chime:DescribeChannelMembershipForAppInstanceUser",
                "chime:ListChannelsModeratedByAppInstanceUser",
                "chime:DescribeChannelModeratedByAppInstanceUser",
                "chime:SendChannelMessage",
                "chime:GetChannelMessage",
                "chime:ListChannelMessages",
                "chime:Connect"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:chime:us-east-1:123456789012:app-instance/app_instance_id/user/app_instance_user_id",
                "arn:aws:chime:us-east-1:123456789012:app-instance/app_instance_id/channel/*"
            ]
        }
    ]
}
```

------

Contoh ini menunjukkan kebijakan untuk membuat WebSocket koneksi untuk file`AppInstanceUser`. Untuk informasi selengkapnya tentang WebSocket koneksi, lihat[Menggunakan WebSockets untuk menerima pesan di perpesanan Amazon Chime SDK](websockets.md).

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
   {
     "Effect": "Allow",
     "Action": [
             "chime:Connect"
            ],
     "Resource": [
             "arn:aws:chime:us-east-1:123456789012:app-instance/app_instance_id/user/app_instance_user_id"
         ]
      }
   ]
}
```

------

# Memahami otorisasi berdasarkan peran
<a name="auth-by-role"></a>

Tabel dalam topik ini mencantumkan tindakan yang dapat dijalankan oleh pengguna instance aplikasi, bergantung pada perannya.

**Legenda**
+ **Diizinkan** - Jika konteks Aksi/Sumber Daya yang benar ditentukan dalam Kebijakan IAM, maka itu dapat berhasil dijalankan.
+ **Diizinkan dengan pembatasan** - Jika konteks Tindakan/Sumber Daya yang benar ditentukan dalam Kebijakan IAM maka kondisi tertentu harus dipenuhi untuk berhasil menjalankan tindakan.
+ **Ditolak** - Bahkan jika konteks Tindakan/Sumber Daya yang benar ditentukan dalam Kebijakan IAM, itu masih akan diblokir oleh bagian belakang.

**Topics**
+ [AppInstanceAdmin](#appinstanceadmin)
+ [ChannelModerator](#channelmoderator)
+ [Anggota](#member)
+ [Non-anggota](#non-member)

## AppInstanceAdmin
<a name="appinstanceadmin"></a>

Administrator instance aplikasi dapat melakukan tindakan pada saluran dalam instance aplikasi yang menjadi admin mereka.


| Nama API | Diizinkan atau ditolak | Catatan | 
| --- | --- | --- | 
| `UpdateChannel` | Diizinkan dengan pembatasan |  Tidak dapat memperbarui ElasticChannelConfiguration setelah disetel | 
| `DeleteChannel` | Diizinkan |  | 
| `DescribeChannel` | Diizinkan |  | 
| `ListChannel` | Diizinkan |  | 
| `ListChannelMembershipsForAppInstanceUser` | Diizinkan | Anda juga dapat mengisi [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_DescribeChannelModeratedByAppInstanceUser.html#API_DescribeChannelModeratedByAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_DescribeChannelModeratedByAppInstanceUser.html#API_DescribeChannelModeratedByAppInstanceUser_RequestSyntax)dengan yang lain`AppInstanceUser`. | 
| `DescribeChannelMembershipForAppInstanceUser` | Diizinkan | Anda juga dapat mengisi [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_DescribeChannelModeratedByAppInstanceUser.html#API_DescribeChannelModeratedByAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_DescribeChannelModeratedByAppInstanceUser.html#API_DescribeChannelModeratedByAppInstanceUser_RequestSyntax)dengan yang lain`AppInstanceUser`. | 
| `ListChannelsModeratedByAppInstanceUser` | Diizinkan | Anda juga dapat mengisi [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_DescribeChannelModeratedByAppInstanceUser.html#API_DescribeChannelModeratedByAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_DescribeChannelModeratedByAppInstanceUser.html#API_DescribeChannelModeratedByAppInstanceUser_RequestSyntax)dengan yang lain AppInstanceUser. | 
| `DescribeChannelModeratedByAppInstanceUser` | Diizinkan | Anda juga dapat mengisi [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_DescribeChannelModeratedByAppInstanceUser.html#API_DescribeChannelModeratedByAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_DescribeChannelModeratedByAppInstanceUser.html#API_DescribeChannelModeratedByAppInstanceUser_RequestSyntax)dengan yang lain `ppInstanceUser` A. Tidak diperbolehkan untuk saluran elastis. | 
| `CreateChannelMembership` | Diizinkan |  | 
| `DescribeChannelMembership` | Diizinkan |  | 
| `ListChannelMembership` | Diizinkan |  | 
| `DeleteChannelMembership` | Diizinkan |  | 
| `SendChannelMessage` | Diizinkan dengan pembatasan | Pertama-tama Anda harus menggunakan [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateChannelMembership.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateChannelMembership.html)untuk membuat keanggotaan untuk Anda sendiri, dan kemudian memanggil API. | 
| `GetChannelMessage` | Diizinkan |  | 
| `ListChannelMessage` | Diizinkan |  | 
| `DeleteChannelMessage` | Diizinkan |  | 
| `RedactChannelMessage` | Diizinkan |  | 
| `UpdateChannelMessage` | Diizinkan dengan pembatasan | Anda hanya dapat mengedit pesan Anda sendiri. | 
| `CreateChannelModerator` | Diizinkan |  | 
| `DeleteChannelModerator` | Diizinkan |  | 
| `DescribeChannelModerator` | Diizinkan |  | 
| `ListChannelModerator` | Diizinkan |  | 
| `CreateChannelBan` | Diizinkan dengan pembatasan | `AppInstanceUser`Yang Anda larang tidak bisa menjadi `AppInstanceAdmin` atau moderator saluran itu. | 
| `DeleteChannelBan` | Diizinkan dengan pembatasan |  | 
| `DescribeChannelBan` | Diizinkan |  | 
| `ListChannelBan` | Diizinkan |  | 
| `UpdateChannelReadMarker` | Diizinkan dengan pembatasan | Untuk saluran non-elastis, Anda perlu menggunakan [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html)API untuk membuat keanggotaan untuk diri Anda sendiri terlebih dahulu, lalu memanggil API. Tidak diperbolehkan untuk saluran elastis.  | 
|  `GetChannelMessage`  |  Diizinkan dengan Pembatasan | Diizinkan hanya untuk pesan terkirim. Tidak diizinkan untuk pesan yang diproses berdasarkan alur saluran kecuali Anda adalah pengirim pesan. | 
| `ListChannelMessages` |  Diizinkan |  | 
| `DeleteChannelMessage` |  Diizinkan dengan Pembatasan | Diizinkan hanya untuk pesan terkirim. | 
| `RedactChannelMessage` |  Diizinkan dengan Pembatasan | Diizinkan hanya untuk pesan terkirim. | 
| `UpdateChannelMessage` |  Diizinkan dengan Pembatasan | Anda hanya dapat mengedit pesan terkirim Anda sendiri. | 
| `AssociateChannelFlow` |  Diizinkan |  | 
| `DisassociateChannelFlow` |  Diizinkan |  | 
| `GetChannelMessageStatus` |  Diizinkan dengan Pembatasan | Anda hanya bisa mendapatkan status pesan untuk pesan Anda sendiri. | 
|  `ListSubChannels`  | Diizinkan |  | 

## ChannelModerator
<a name="channelmoderator"></a>

Moderator saluran dapat melakukan tindakan hanya pada saluran yang mereka memiliki peran moderator.

**catatan**  
Seorang moderator yang `AppInstanceAdmin` dapat melakukan tindakan pada saluran yang diizinkan oleh peran itu.


| Nama API | Diizinkan atau ditolak | Catatan | 
| --- | --- | --- | 
| `UpdateChannel` | Diizinkan |  Tidak dapat memperbarui ElasticChannelConfiguration setelah disetel | 
| `DeleteChannel` | Diizinkan  |  | 
| `DescribeChannel` | Diizinkan dengan pembatasan | Anda hanya bisa mendapatkan detail untuk saluran publik. | 
| `ListChannel` | Diizinkan dengan pembatasan | Anda hanya bisa mendapatkan detail untuk saluran publik. | 
| `ListChannelMembershipsForAppInstanceUser` | Diizinkan dengan pembatasan | Anda hanya dapat menggunakan ARN Anda sebagai [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax)nilai. | 
| `DescribeChannelMembershipForAppInstanceUser` | Diizinkan dengan pembatasan | Anda hanya dapat menggunakan ARN Anda sebagai [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax)nilai. | 
| `ListChannelsModeratedByAppInstanceUser` | Diizinkan dengan pembatasan | Anda hanya dapat menggunakan ARN Anda sebagai [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax)nilai. | 
| `DescribeChannelModeratedByAppInstanceUser` | Diizinkan dengan pembatasan | Anda juga dapat mengisi [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax)dengan yang lain AppInstanceUser. | 
| `CreateChannelMembership` | Diizinkan |  | 
| `DescribeChannelMembership` | Diizinkan |  | 
| `ListChannelMembership` | Diizinkan |  | 
| `DeleteChannelMembership` | Diizinkan |  | 
| `SendChannelMessage` | Diizinkan dengan pembatasan | Anda perlu menggunakan [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html)API untuk membuat keanggotaan untuk diri Anda sendiri terlebih dahulu, lalu memanggil `SendChannelMessage` API. | 
| `GetChannelMessage` | Diizinkan |  | 
| `ListChannelMessage` | Diizinkan |  | 
| `DeleteChannelMessage` | Ditolak |  | 
| `RedactChannelMessage` | Diizinkan |  | 
| `UpdateChannelMessage` | Diizinkan dengan pembatasan | Anda hanya dapat memperbarui pesan Anda sendiri. | 
| `CreateChannelModerator` | Diizinkan | Anda perlu menggunakan [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html)API untuk membuat keanggotaan untuk diri Anda sendiri terlebih dahulu, lalu memanggil `CreateChannelModerator` API. | 
| `DeleteChannelModerator` | Diizinkan |  | 
| `DescribeChannelModerator` | Diizinkan |  | 
| `ListChannelModerator` | Diizinkan |  | 
| `CreateChannelBan` | Diizinkan dengan pembatasan | Yang `AppInstanceUser` Anda larang tidak bisa menjadi `AppInstanceAdmin` atau moderator saluran itu. | 
| `DeleteChannelBan` | Diizinkan dengan pembatasan |  | 
| `DescribeChannelBan` | Diizinkan |  | 
| `ListChannelBan` | Diizinkan |  | 
| `UpdateChannelReadMarker` | Diizinkan dengan pembatasan |  Untuk saluran non-elastis, Anda perlu menggunakan [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html)untuk membuat keanggotaan untuk diri Anda sendiri terlebih dahulu, dan kemudian memanggil `UpdateChannelReadMarker` API.  Tidak diperbolehkan untuk saluran elastis.  | 
| `GetChannelMessage` |  Diizinkan dengan Pembatasan | Diizinkan hanya untuk pesan terkirim. Tidak diizinkan untuk pesan yang diproses berdasarkan alur saluran kecuali Anda adalah pengirim pesan. | 
| `ListChannelMessages` |  Diizinkan |  | 
| `DeleteChannelMessage` |  Ditolak |  | 
| `RedactChannelMessage` |  Diizinkan dengan Pembatasan | Diizinkan hanya untuk pesan terkirim. | 
| `UpdateChannelMessage` |  Diizinkan dengan Pembatasan | Anda hanya dapat mengedit pesan terkirim Anda sendiri. | 
| `AssociateChannelFlow` |  Diizinkan |  | 
| `DisassociateChannelFlow` |  Diizinkan |  | 
| `GetChannelMessageStatus` |  Diizinkan dengan Pembatasan | Anda hanya bisa mendapatkan status pesan untuk pesan Anda sendiri. | 
|  `ListSubChannels`  | Diizinkan |  | 

## Anggota
<a name="member"></a>

An `AppInstanceUser` menjadi anggota saluran jika mereka ditambahkan ke saluran melalui [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html)API. 

Anggota dapat melakukan tindakan hanya pada saluran tempat mereka berada.

**catatan**  
Anggota yang merupakan `AppInstanceAdmin` atau `ChannelModerator` dapat melakukan tindakan pada Saluran yang diizinkan oleh dua peran tersebut.


| Nama API | Diizinkan atau ditolak | Catatan | 
| --- | --- | --- | 
| `UpdateChannel` | Ditolak |  | 
| `DeleteChannel` | Ditolak |  | 
| `DescribeChannel` | Diizinkan dengan pembatasan | Anda hanya bisa mendapatkan detail untuk saluran publik. | 
| `ListChannel` | Diizinkan dengan pembatasan | Anda hanya bisa mendapatkan detail untuk saluran publik. | 
| `ListChannelMembershipsForAppInstanceUser` | Diizinkan dengan pembatasan | Anda hanya dapat menggunakan ARN Anda sebagai [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax)nilai. | 
| `DescribeChannelMembershipForAppInstanceUser` | Diizinkan dengan pembatasan | Anda hanya dapat menggunakan ARN Anda sebagai [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax)nilai. | 
| `ListChannelsModeratedByAppInstanceUser` | Diizinkan dengan pembatasan | Anda hanya dapat menggunakan ARN Anda sebagai [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax)nilai. | 
| `DescribeChannelModeratedByAppInstanceUser` | Diizinkan dengan pembatasan |  Anda juga dapat mengisi [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_DescribeChannelModeratedByAppInstanceUser.html#API_DescribeChannelModeratedByAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_DescribeChannelModeratedByAppInstanceUser.html#API_DescribeChannelModeratedByAppInstanceUser_RequestSyntax)dengan yang lain AppInstanceUser. Tidak diperbolehkan untuk saluran elastis. | 
| `CreateChannelMembership` | Diizinkan dengan pembatasan | Anda hanya dapat menambahkan anggota lain untuk [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannel.html#chime-CreateChannel-request-Mode](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannel.html#chime-CreateChannel-request-Mode)saluran. | 
| `DescribeChannelMembership` | Diizinkan |  | 
| `ListChannelMembership` | Diizinkan |  | 
| `DeleteChannelMembership` | Diizinkan |  | 
| `SendChannelMessage` | Diizinkan |  | 
| `GetChannelMessage` | Diizinkan |  | 
| `ListChannelMessage` | Diizinkan |  | 
| `DeleteChannelMessage` | Ditolak |  | 
| `RedactChannelMessage` | Diizinkan dengan pembatasan | Anda hanya dapat menyunting pesan Anda sendiri. | 
| `UpdateChannelMessage` | Diizinkan dengan pembatasan | Anda hanya dapat memperbarui pesan Anda sendiri. | 
| `CreateChannelModerator` | Ditolak |  | 
| `DeleteChannelModerator` | Ditolak |  | 
| `DescribeChannelModerator` | Ditolak |  | 
| `ListChannelModerator` | Ditolak |  | 
| `CreateChannelBan` | Ditolak |  | 
| `DeleteChannelBan` | Ditolak |  | 
| `DescribeChannelBan` | Ditolak |  | 
| `ListChannelBan` | Ditolak |  | 
| `UpdateChannelReadMarker` | Diizinkan dengan pembatasan |  Tidak diperbolehkan untuk saluran elastis.  | 
| `GetChannelMessage` |  Diizinkan dengan Pembatasan | Diizinkan hanya untuk pesan terkirim. Tidak diizinkan untuk pesan yang diproses berdasarkan alur saluran kecuali Anda adalah pengirim pesan. | 
| `ListChannelMessages` |  Diizinkan |  | 
| `DeleteChannelMessage` |  Diizinkan dengan Pembatasan | Diizinkan hanya untuk pesan terkirim. | 
| `RedactChannelMessage` |  Diizinkan dengan Pembatasan | Diizinkan hanya untuk pesan terkirim. | 
| `UpdateChannelMessage` |  Diizinkan dengan Pembatasan | Anda hanya dapat mengedit pesan terkirim Anda sendiri. | 
| `AssociateChannelFlow` |  Ditolak |  | 
| `DisassociateChannelFlow` |  Ditolak |  | 
| `GetChannelMessageStatus` |  Diizinkan dengan Pembatasan | Anda hanya bisa mendapatkan status pesan untuk pesan Anda sendiri. | 
| `Listsubchannels` | Ditolak |  | 

## Non-anggota
<a name="non-member"></a>

Non-anggota adalah reguler `AppInstanceUser` dan mereka tidak dapat melakukan tindakan terkait saluran apa pun kecuali Anda menggunakan [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html)API untuk menambahkannya.

**catatan**  
Seorang non-anggota yang merupakan `AppInstanceAdmin` atau `ChannelModerator` dapat melakukan tindakan terkait saluran yang diizinkan oleh kedua peran tersebut.


| Nama API | Diizinkan atau ditolak | Catatan | 
| --- | --- | --- | 
| `UpdateChannel` | Ditolak |  | 
| `DeleteChannel` | Ditolak |  | 
| `DescribeChannel` | Diizinkan dengan pembatasan | Anda hanya bisa mendapatkan detail untuk saluran publik. | 
| `ListChannel` | Diizinkan dengan pembatasan | Anda hanya bisa mendapatkan detail untuk saluran publik. | 
| `ListChannelMembershipsForAppInstanceUser` | Diizinkan dengan pembatasan | Anda hanya dapat menggunakan ARN Anda sebagai [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax)nilai. | 
| `DescribeChannelMembershipForAppInstanceUser` | Diizinkan dengan pembatasan | Anda juga dapat mengisi [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_DescribeChannelModeratedByAppInstanceUser.html#API_DescribeChannelModeratedByAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_DescribeChannelModeratedByAppInstanceUser.html#API_DescribeChannelModeratedByAppInstanceUser_RequestSyntax)dengan yang lain`AppInstanceUser`. Tidak diperbolehkan untuk saluran elastis. | 
| `ListChannelsModeratedByAppInstanceUser` | Diizinkan dengan pembatasan | Anda hanya dapat menggunakan ARN Anda sebagai [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax)nilai. | 
| `DescribeChannelModeratedByAppInstanceUser` | Diizinkan dengan pembatasan | Anda hanya dapat menggunakan ARN Anda sebagai [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_ListChannelMembershipsForAppInstanceUser.html#API_ListChannelMembershipsForAppInstanceUser_RequestSyntax)nilai. | 
| `CreateChannelMembership` | Ditolak |  | 
| `DescribeChannelMembership` | Diizinkan dengan pembatasan | Anda hanya bisa mendapatkan detail untuk saluran publik. | 
| `ListChannelMembership` | Diizinkan dengan pembatasan | Anda hanya bisa mendapatkan detail untuk saluran publik. | 
| `DeleteChannelMembership` | Ditolak |  | 
| `SendChannelMessage` | Ditolak |  | 
| `GetChannelMessage` | Diizinkan dengan pembatasan | Anda hanya bisa mendapatkan detail untuk saluran publik. | 
| `ListChannelMessage` | Diizinkan dengan pembatasan | Anda hanya bisa mendapatkan detail untuk saluran publik. | 
| `DeleteChannelMessage` | Ditolak |  | 
| `RedactChannelMessage` | Ditolak |  | 
| `UpdateChannelMessage` | Ditolak |  | 
| `CreateChannelModerator` | Ditolak |  | 
| `DeleteChannelModerator` | Ditolak |  | 
| `DescribeChannelModerator` | Ditolak |  | 
| `ListChannelModerator` | Ditolak |  | 
| `CreateChannelBan` | Ditolak |  | 
| `DeleteChannelBan` | Ditolak |  | 
| `DescribeChannelBan` | Ditolak |  | 
| `ListChannelBan` | Ditolak |  | 
| `UpdateChannelReadMarker` | Ditolak |  | 
| `GetChannelMessage` |  Diizinkan dengan Pembatasan | Diizinkan hanya untuk pesan terkirim. Tidak diizinkan untuk pesan yang diproses berdasarkan alur saluran kecuali Anda adalah pengirim pesan. | 
| `ListChannelMessages` |  Diizinkan dengan Pembatasan |  | 
| `DeleteChannelMessage` |  Ditolak | Ditolak | 
| `RedactChannelMessage` |  Ditolak |  | 
| `UpdateChannelMessage` |  Ditolak |  | 
| `AssociateChannelFlow` |  Ditolak |  | 
| `DisassociateChannelFlow` |  Ditolak |  | 
| `GetChannelMessageStatus` |  Diizinkan dengan Pembatasan | Anda hanya bisa mendapatkan status pesan untuk pesan Anda sendiri. | 

# Streaming data perpesanan di perpesanan Amazon Chime SDK
<a name="streaming-export"></a>

Anda dapat mengonfigurasi data `AppInstance` untuk menerima, seperti pesan dan acara saluran, dalam bentuk aliran. Anda kemudian dapat bereaksi terhadap data tersebut secara real time. Saat ini, pesan Amazon Chime SDK hanya menerima aliran Kinesis sebagai tujuan streaming. Anda harus memiliki prasyarat ini untuk menggunakan aliran Kinesis dengan fitur ini:
+ Aliran Kinesis harus dalam AWS akun yang sama dengan. `AppInstance`
+ Aliran harus berada di wilayah yang sama dengan`AppInstance`.
+ Nama aliran memiliki awalan yang dimulai dengan`chime-messaging-`.
+ Anda harus mengkonfigurasi setidaknya dua pecahan. Setiap pecahan dapat menerima data hingga 1MB per detik, jadi skala streaming Anda sesuai dengan itu.
+ Anda harus mengaktifkan enkripsi sisi server (SSE).

**Untuk mengkonfigurasi aliran Kinesis**

1. Buat satu atau lebih aliran Kinesis menggunakan prasyarat di bagian sebelumnya, lalu dapatkan ARN. Pastikan pemanggil memiliki izin Kinesis selain izin Amazon Chime.

   Contoh berikut menunjukkan cara menggunakan AWS CLI untuk membuat aliran Kinesis dengan dua pecahan, dan cara mengaktifkan SSE.

   `aws kinesis create-stream --stream-name chime-messaging-unique-name --shard-count 2`

   `aws kinesis start-stream-encryption --stream-name chime-messaging-unique-name --encryption-type KMS --key-id "alias/aws/kinesis"`

1. Konfigurasikan streaming dengan memanggil [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_PutMessagingStreamingConfigurations.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_PutMessagingStreamingConfigurations.html)API.

   Anda dapat mengonfigurasi satu atau kedua dari dua tipe data, dan Anda dapat memilih aliran yang sama atau aliran terpisah untuk mereka.

   Contoh berikut menunjukkan bagaimana menggunakan AWS CLI untuk mengkonfigurasi `appinstance` untuk streaming `ChannelMessage` dan tipe `Channel` data.

   ```
   aws chime-sdk-messaging put-messaging-streaming-configurations --app-instance-arn app_instance_arn \
   --streaming-configurations DataType=ChannelMessage,ResourceArn=kinesis_data_stream_arn
   ```

   ```
   aws chime-sdk-messaging put-messaging-streaming-configurations --app-instance-arn app_instance_arn \
   --streaming-configurations DataType=Channel,ResourceArn=kinesis_data_stream_arn
   ```

   Tipe data memiliki cakupan berikut:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/chime-sdk/latest/dg/streaming-export.html)

1. Mulai membaca data dari aliran Kinesis yang dikonfigurasi.
**catatan**  
Setiap peristiwa yang dikirim sebelum Anda mengonfigurasi streaming tidak dikirim ke aliran Kinesis Anda.

**Format data**  
Kinesis mengeluarkan catatan dalam format JSON dengan bidang berikut: dan. `EventType` `Payload` Format payload tergantung pada. `EventType` Tabel berikut mencantumkan jenis acara dan format payload yang sesuai.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/chime-sdk/latest/dg/streaming-export.html)

# Menggunakan saluran elastis untuk menyelenggarakan acara langsung dalam rapat Amazon Chime SDK
<a name="elastic-channels"></a>

Saluran elastis mendukung pengalaman obrolan skala besar dengan hingga 1 juta anggota. Penggunaan umum termasuk pesta menonton untuk acara olahraga atau politik. Anda dapat menggunakan saluran elastis hanya di wilayah AS Timur (Virginia N.).

Saluran elastis terdiri dari satu saluran dengan konfigurasi umum, ditambah jumlah sub-saluran yang bervariasi atau *elastis*. Konfigurasi juga mencakup ambang minimum dan maksimum untuk anggota di sub-saluran. 

Misalnya, Anda membuat saluran elastis dengan 100 sub-saluran, dan untuk sub-saluran Anda menetapkan ambang batas rendah 500 anggota dan ambang batas tinggi 10.000 anggota. Ketika pengguna bergabung dengan saluran contoh ini, sistem secara otomatis menetapkannya ke satu sub-saluran hingga jumlah anggota melebihi 10.000. Pada saat itu, sistem membuat sub-saluran baru dan menambahkan anggota baru di sana. Saat pengguna pergi, sistem menghapus sub-saluran dan mendistribusikan anggota di seluruh sub-saluran yang tersisa.

Memisahkan audiens di seluruh sub-saluran membuat percakapan lebih mudah diikuti oleh peserta. Moderator juga mengurangi beban kerja, karena mereka hanya perlu menonton beberapa sub-saluran. Selain itu, moderator dapat menggunakan alat bawaan yang disediakan saluran elastis. Misalnya, moderator dapat [melarang pengguna](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelBan.html) dari saluran, [membuat moderator](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelModerator.html), dan menggunakan [alur saluran](https://docs.aws.amazon.com/chime-sdk/latest/dg/using-channel-flows.html) untuk memoderasi semua pesan di saluran secara otomatis.

*Untuk informasi selengkapnya tentang kuota Amazon Chime SDK Messaging, lihat [Kuota Pesan di](https://docs.aws.amazon.com/general/latest/gr/chime-sdk.html) Referensi Umum Amazon Chime SDK.*

**Topics**
+ [Prasyarat](#elastic-prereqs)
+ [Konsep saluran elastis](#elastic-concepts)
+ [Fitur tambahan yang didukung](#additional-features)
+ [Membuat saluran elastis untuk rapat Amazon Chime SDK](create-elastic-channel.md)
+ [Mengelola anggota saluran elastis untuk rapat Amazon Chime SDK](manage-elastic-members.md)
+ [Mengirim pesan saluran elastis dalam rapat Amazon Chime SDK](send-messages-elastic.md)
+ [Memahami pesan WebSocket sistem di saluran elastis untuk rapat Amazon Chime SDK](websocket-messages-elastic.md)
+ [Menggunakan aliran Kinesis untuk menerima pesan sistem untuk rapat Amazon Chime SDK](elastic-onboard-streams.md)
+ [Menguji saluran elastis untuk rapat Amazon Chime SDK di aplikasi demo kami](elastic-testing.md)

## Prasyarat
<a name="elastic-prereqs"></a>

Anda harus memiliki yang berikut untuk menggunakan saluran elastis.
+ Pengetahuan tentang fungsionalitas Amazon Chime SDK Messaging, seperti mengelola saluran, serta mengirim serta menerima pesan.
+ Kemampuan untuk memanggil Amazon Chime SDK Messaging. APIs

## Konsep saluran elastis
<a name="elastic-concepts"></a>

Untuk menggunakan saluran elastis secara efektif, Anda harus memahami konsep-konsep ini.

**Sub-saluran**  
Saluran elastis membagi anggotanya menjadi wadah logis yang disebut sub-saluran. Saat Anda menambahkan `AppInstanceUser` ke saluran elastis, pengguna menjadi anggota sub-saluran. Pengguna itu dapat mengirim dan menerima pesan, tetapi hanya dengan anggota lain dari sub-saluran itu. Sistem tidak pernah mengizinkan pesan dari satu sub-saluran muncul di sub-saluran lain.

**Penskalaan**  
Untuk mendukung keterlibatan pengguna, setiap sub-saluran harus memenuhi persyaratan keanggotaan minimum. Anda memberikan nilai itu saat Anda membuat saluran elastis. Saat pengguna bergabung atau meninggalkan acara, sistem mentransfer anggota ke sub-saluran yang berbeda, yang membuat keseluruhan saluran “elastis.” Sub-saluran menjalankan tindakan penskalaan berikut.  
+ **SCALE\$1OUT** — Ketika permintaan keanggotaan saluran elastis baru masuk dan semua sub-saluran penuh, sistem akan menskalakan dengan membuat sub-saluran baru, dan kemudian mentransfer keanggotaan dari sub-saluran yang ada ke sub-saluran baru.
+ **SCALE\$1IN** — Ketika jumlah keanggotaan sub-saluran berada di bawah persyaratan minimum, dan sub-saluran lain memiliki kapasitas untuk mengakomodasi semua anggota sub-saluran pertama, `SCALE_IN` acara mentransfer keanggotaan tersebut, dan kemudian menghapus sub-saluran dan semua pesan.
Jika Anda perlu mengakses pesan dari saluran yang telah dihapus, Anda harus mengaktifkan streaming pesan terlebih dahulu. Untuk informasi lebih lanjut, lihat[Streaming data perpesanan di perpesanan Amazon Chime SDK](streaming-export.md).

**Transfer anggota**  
Ini terjadi ketika keseimbangan keanggotaan memindahkan `AppInstanceUser` dari satu sub-saluran ke sub-saluran lainnya. `AppInstanceUser`Masih milik saluran elastis setelah transfer. Namun, sub-saluran baru berisi keanggotaan dan pesan yang berbeda, sehingga pesan yang dikirim oleh `AppInstanceUser` setelah transfer masuk ke anggota yang berbeda. Keseimbangan keanggotaan tidak mempengaruhi keanggotaan moderator.

**catatan**  
 Saluran elastis tidak mendukung keanggotaan tersembunyi, preferensi keanggotaan, dan stempel waktu baca pesan.

## Fitur tambahan yang didukung
<a name="additional-features"></a>

Saluran elastis juga mendukung fitur perpesanan ini.
+ [Prefetch](websockets.md#prefetch)
+ [Aliran saluran](using-channel-flows.md)

# Membuat saluran elastis untuk rapat Amazon Chime SDK
<a name="create-elastic-channel"></a>

Anda menggunakan `ElasticChannelConfiguration` bidang di [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannel.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannel.html)API untuk membuat saluran elastis. Setelah Anda membuat saluran elastis, Anda membuat keanggotaan saluran.

**catatan**  
Untuk saluran non-elastis, saluran `AppInstanceUser` yang membuat saluran secara otomatis ditambahkan ke saluran itu sebagai anggota dan moderator. Untuk saluran elastis, pembuat saluran hanya ditambahkan sebagai moderator.
Anda tidak dapat memperbarui set `ElasticChannelConfiguration` sekali.
Anda tidak dapat memperbarui saluran dari elastis ke non-elastis dan sebaliknya.
Anda tidak dapat menyertakan daftar anggota ARNs dalam permintaan [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannel.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannel.html)API. Namun, Anda dapat memasukkan daftar moderator ARNs.
Anda tidak dapat membuat saluran elastis `UNRESTRICTED` tipe.

# Mengelola anggota saluran elastis untuk rapat Amazon Chime SDK
<a name="manage-elastic-members"></a>

Untuk mengelola anggota dalam saluran elastis, gunakan [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html), [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelModerator.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelModerator.html), dan [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelBan.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelBan.html) APIs. Informasi berikut menjelaskan cara menggunakannya.

**Keanggotaan saluran**  
`CreateChannelMembership`API membuat keanggotaan di tingkat sub-saluran. sub-saluran dapat mencakup moderator dan anggota reguler.  
+ **Moderator** — Anda dapat menambahkan moderator ke beberapa sub-saluran. Itu memungkinkan moderator untuk mengirim pesan pada masing-masing sub-saluran yang mereka miliki. Saat Anda menambahkan moderator ke sub-saluran, Anda harus menyediakan. `SubChannelId`

  Jika Anda ingin menetapkan moderator ke sub-saluran baru secara otomatis, Anda dapat [mengaktifkan streaming pesan](streaming-export.md), mendengarkan acara pembuatan sub-saluran, dan kemudian membuat keanggotaan moderator sebagai respons terhadap peristiwa tersebut.

  Terakhir, Anda dapat menghapus moderator dari sub-saluran tertentu, atau dari semua sub-saluran. Anda menggunakan [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_DeleteChannelMembership.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_DeleteChannelMembership.html)API dalam kedua kasus. Untuk menghapus moderator dari sub-saluran tertentu, Anda menyediakan. `SubChannelId` Jika Anda tidak memberikan ID untuk sub-saluran, sistem akan menghapus moderator dari semua sub-saluran. Terakhir, Anda dapat menggunakan [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ListSubChannels](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ListSubChannels)API untuk membuat daftar sub-saluran dan jumlah anggota di masing-masing.
+ **Anggota reguler** — Ini terdiri dari sebagian besar keanggotaan saluran. Anda hanya dapat menambahkan anggota reguler ke satu sub-saluran. Selain itu, Anda tidak dapat meneruskan `SubChannelId` saat membuat atau menghapus keanggotaan saluran, karena sistem mengontrol sub-saluran mana keanggotaan dibuat.

**Moderator saluran**  
`CreateChannelModerator`API menciptakan moderator pada tingkat saluran elastis. Moderator dapat melihat semua pesan di semua sub-saluran. Saat Anda mempromosikan anggota reguler ke moderator saluran, sistem akan menghapus semua keanggotaan saluran yang ada untuk anggota tersebut. Hal yang sama terjadi ketika Anda menurunkan moderator.

**Larangan saluran**  
`CreateChannelBan`API membuat larangan pada tingkat saluran elastis. Dilarang tidak `AppInstanceUser` dapat dimiliki oleh sub-saluran mana pun. Saat Anda melarang anggota, sistem akan menghapus semua keanggotaan saluran untuk anggota tersebut.

# Mengirim pesan saluran elastis dalam rapat Amazon Chime SDK
<a name="send-messages-elastic"></a>

[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_SendChannelMessage.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_SendChannelMessage.html)API membuat pesan di tingkat sub-saluran. Untuk mengirim pesan, Anda harus memiliki`subChannelId`. Anda juga dapat menggunakan [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_UpdateChannelMessage.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_UpdateChannelMessage.html), dan [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_RedactChannelMessage.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_RedactChannelMessage.html) APIs untuk mengedit dan menghapus pesan, tetapi dalam semua kasus, Anda harus memiliki`subChannelId`.

**catatan**  
Pengirim pesan hanya dapat mengedit atau menyunting pesan jika mereka termasuk sub-saluran yang mereka kirimi pesan. Jika saldo keanggotaan mentransfer anggota ke sub-saluran lain, anggota tersebut hanya dapat mengedit atau menyunting pesan yang mereka kirim di sub-saluran baru tersebut.

# Memahami pesan WebSocket sistem di saluran elastis untuk rapat Amazon Chime SDK
<a name="websocket-messages-elastic"></a>

Amazon Chime SDK mengirimkan pesan sistem ke semua klien yang terhubung untuk peristiwa yang terjadi di saluran. Daftar berikut menjelaskan pesan sistem untuk saluran elastis.

**Acara pesan**  
Muatan acara untuk saluran elastis berisi `subChannelId` bidang. Muatan untuk saluran non-elastis tetap sama.

**Acara keanggotaan**  
`DELETE_CHANNEL_MEMBERSHIP`Acara `CREATE_CHANNEL_MEMBERSHIP` dan sekarang memiliki `subChannelId` bidang dalam muatan mereka.   
Saluran elastis tidak mendukung `BATCH_CREATE_CHANNEL_MEMBERHSIP` acara tersebut. Saat Anda memanggil [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_BatchCreateChannelMembership.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_BatchCreateChannelMembership.html)API, sistem mengirimkan `CREATE_CHANNEL_MEMBERSHIP` peristiwa individual.  
Anda sekarang dapat menggunakan jenis `UPDATE_CHANNEL_MEMBERSHIP` acara untuk memberi sinyal perubahan dalam informasi keanggotaan. Misalnya, selama transfer anggota dari satu sub-saluran ke sub-saluran lainnya, sistem mengirimkan `UPDATE_CHANNEL_MEMBERSHIP` acara dengan yang baru `SubChannelId` di muatan untuk menunjukkan bahwa anggota telah ditransfer.   
Sistem hanya mengirimkan `UPDATE_CHANNEL_MEMBERSHIP` acara ke anggota yang ditransfer, dan bukan ke anggota sub-saluran lainnya. Untuk alasan ini, kami mendorong Anda untuk menggunakan [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ListChannelMemberships.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ListChannelMemberships.html)API alih-alih mengisi daftar WebSockets nama keanggotaan saluran Anda. Untuk informasi lebih lanjut, lihat[Menggunakan WebSockets untuk menerima pesan di perpesanan Amazon Chime SDK](websockets.md). 

# Menggunakan aliran Kinesis untuk menerima pesan sistem untuk rapat Amazon Chime SDK
<a name="elastic-onboard-streams"></a>

Anda dapat mengkonfigurasi `AppInstance` untuk menerima data dalam bentuk aliran. Misalnya, aliran dapat mencakup pesan, peristiwa sub-saluran, dan acara saluran.

Sebagai bagian dari itu, kami mendukung `CREATE_SUB_CHANNEL` dan `DELETE_SUB_CHANNEL` acara. Mereka menunjukkan kapan sub-saluran dibuat atau dihapus sebagai bagian dari keseimbangan keanggotaan. Untuk informasi selengkapnya tentang menerima aliran data, lihat. [Streaming data perpesanan di perpesanan Amazon Chime SDK](streaming-export.md)

# Menguji saluran elastis untuk rapat Amazon Chime SDK di aplikasi demo kami
<a name="elastic-testing"></a>

[Anda dapat menguji semua fitur Amazon Chime SDK Messaging di GitHub /. https://github.com/aws-samples/ amazon-chime-sdk tree/main/apps/chat](https://github.com/aws-samples/amazon-chime-sdk/tree/main/apps/chat) 

# Menggunakan notifikasi push seluler untuk perpesanan Amazon Chime SDK untuk menerima pesan
<a name="using-push-notifications"></a>

Anda dapat mengonfigurasi Amazon Chime SDK Messaging untuk mengirim pesan saluran ke saluran notifikasi push seluler. Amazon Chime SDK memerlukan aplikasi Amazon Pinpoint yang dikonfigurasi untuk pemberitahuan push. Aplikasi Amazon Pinpoint Anda harus memenuhi prasyarat ini: 
+ Aplikasi Amazon Pinpoint Anda harus memiliki setidaknya saluran FCM atau APNS yang dikonfigurasi dan diaktifkan.
+ Aplikasi Amazon Pinpoint Anda harus berada di AWS akun dan wilayah yang sama dengan instans aplikasi Amazon Chime SDK Anda.

**catatan**  
Secara default, semua anggota saluran pemberitahuan push menerima pemberitahuan push, termasuk pengirim pesan. Namun, Anda dapat menetapkan aturan filter yang mencegah pesan masuk ke pengirim. Untuk informasi lebih lanjut, lihat[Menggunakan aturan filter untuk memfilter pesan untuk pesan Amazon Chime SDK](filter-msgs.md), nanti di bagian ini.

**Topics**
+ [Buat aplikasi Amazon Pinpoint untuk perpesanan Amazon Chime SDK](create-pinpoint.md)
+ [Membuat peran layanan untuk perpesanan Amazon Chime SDK](create-service-role.md)
+ [Mendaftarkan titik akhir perangkat seluler sebagai pengguna Instans Aplikasi untuk perpesanan Amazon Chime SDK](register-endpoint.md)
+ [Kirim pesan saluran dengan notifikasi diaktifkan di perpesanan Amazon Chime SDK](send-channel-msg-with-notifications.md)
+ [Menerima pemberitahuan push di perpesanan Amazon Chime SDK](receive-notifications.md)
+ [Mendebug kegagalan notifikasi push untuk perpesanan Amazon Chime SDK](debug-notifications.md)
+ [Menggunakan aturan filter untuk memfilter pesan untuk pesan Amazon Chime SDK](filter-msgs.md)

# Buat aplikasi Amazon Pinpoint untuk perpesanan Amazon Chime SDK
<a name="create-pinpoint"></a>

Untuk mengirim pemberitahuan push, Amazon Chime SDK memerlukan aplikasi Amazon Pinpoint yang dikonfigurasi untuk mengirim push ke aplikasi seluler Anda. Langkah-langkah berikut menjelaskan cara menggunakan AWS konsol untuk membuat aplikasi Pinpoint.

**Untuk membuat aplikasi Amazon Pinpoint**

1. Masuk ke Konsol AWS Manajemen dan buka konsol Amazon Pinpoint di. [https://console.aws.amazon.com/pinpoint/](https://console.aws.amazon.com/pinpoint/)

   Jika ini adalah pertama kalinya Anda menggunakan Amazon Pinpoint, Anda melihat halaman yang memperkenalkan Anda ke fitur layanan.

1. Di bagian **Memulai**, masukkan nama untuk proyek Anda, lalu pilih **Buat proyek**.

1. Pada halaman **Konfigurasi fitur**, di samping **Pemberitahuan Push** pilih **Konfigurasi**.

1. Pada halaman **Siapkan pemberitahuan push**, alihkan **layanan Pemberitahuan Push Apple (APNs)**, **Firebase Cloud Messaging (FCM)**, atau keduanya, dan lengkapi bidang yang diperlukan.
**penting**  
Amazon Chime SDK saat ini hanya mendukung pengiriman pemberitahuan push ke APNs dan FCM.

1. Setelah selesai, silakan pilih **Simpan**.

1. Kembali ke konsol Amazon Pinpoint di [https://console.aws.amazon.com/pinpoint/](https://console.aws.amazon.com/pinpoint/)dan catat nilai **Project ID**. Anda menggunakannya sebagai ARN untuk aplikasi Amazon Pinpoint Anda.

# Membuat peran layanan untuk perpesanan Amazon Chime SDK
<a name="create-service-role"></a>

AWS menggunakan peran layanan untuk memberikan izin ke AWS layanan sehingga dapat mengakses AWS sumber daya. Kebijakan yang Anda lampirkan ke peran layanan menentukan sumber daya yang dapat diakses oleh layanan dan apa yang dapat dilakukannya dengan sumber daya tersebut. Peran layanan yang Anda buat untuk Amazon Chime SDK memberikan izin layanan untuk melakukan `SendMessages` panggilan ke aplikasi Amazon Pinpoint Anda.

**Membuat peran layanan**

1. Masuk ke AWS Management Console dan buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Pada panel navigasi, pilih **Kebijakan**, lalu pilih **Buat kebijakan**.

1. Pilih tab **JSON** dan salin kebijakan di bawah ini ke dalam kotak teks. Pastikan untuk mengganti `project_id` dengan ID aplikasi Amazon Pinpoint yang dibuat pada langkah sebelumnya, dan `aws_account_id` dengan ID AWS Akun Anda.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Action": "mobiletargeting:SendMessages",
           "Resource": "arn:aws:mobiletargeting:us-east-1:123456789012:apps/project_id/messages",
           "Effect": "Allow"
       }
   }
   ```

------

1. Pilih **Berikutnya: Tanda**.

1. Pilih **Berikutnya: Tinjau**, dan masukkan **AmazonChimePushNotificationPolicy** di bidang **Nama**, dan pilih **Buat Kebijakan**.

1. Di panel navigasi, pilih **Peran**, lalu pilih **Buat peran**.

1. Pada halaman **Buat peran**, pilih **AWS layanan**, buka daftar **Pilih kasus pengguna** dan pilih **EC2**.

1. Pilih **Berikutnya: Izin**, dan di kotak pencarian, masukkan**AmazonChimePushNotificationPolicy**, dan pilih kotak centang di sebelah kebijakan.

1. Pilih **Berikutnya: Tanda**.

1. Pilih **Berikutnya: Tinjau**, dan masukkan **ServiceRoleForAmazonChimePushNotification** di bidang **Nama**. 
**penting**  
Anda harus menggunakan nama yang tercantum di atas. Amazon Chime SDK hanya menerima nama tertentu itu.

1. Pilih **Buat peran**, dan di halaman **Peran.** masukkan **ServiceRoleForAmazonChimePushNotification** di kotak pencarian, dan pilih peran yang cocok.

1. Pilih tab **Trust Relationships**, pilih **Edit trust relationship** dan ganti kebijakan yang ada dengan kebijakan di bawah ini.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "messaging.chime.amazonaws.com"
                },
                "Action": "sts:AssumeRole"
            }
       ]
   }
   ```

------

1. Pilih **Perbarui Kebijakan Kepercayaan**.

**penting**  
Memodifikasi peran dengan mengubah nama, kebijakan izin, atau kebijakan kepercayaan dapat merusak fungsi pemberitahuan push. 

# Mendaftarkan titik akhir perangkat seluler sebagai pengguna Instans Aplikasi untuk perpesanan Amazon Chime SDK
<a name="register-endpoint"></a>

Untuk menerima pemberitahuan push, pengguna instance aplikasi harus terlebih dahulu menggunakan [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_identity-chime_RegisterAppInstanceUserEndpoint.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_identity-chime_RegisterAppInstanceUserEndpoint.html)API untuk mendaftarkan perangkat seluler. Mereka harus mendaftar dari aplikasi seluler yang memiliki akses ke token perangkat untuk sistem operasi perangkat.

Untuk memastikan pengguna instance aplikasi memiliki akses ke aplikasi Amazon Pinpoint yang tercantum di ARN, pengguna harus memiliki izin untuk memanggil `mobiletargeting:GetApp` Amazon Pinpoint ARN. Jika tidak, Amazon Chime SDK memunculkan kesalahan 403 Forbidden saat menelepon. [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_identity-chime_RegisterAppInstanceUserEndpoint.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_identity-chime_RegisterAppInstanceUserEndpoint.html)

Contoh ini menunjukkan kebijakan yang diperlukan untuk mendaftarkan titik akhir.

------
#### [ JSON ]

****  

```
{ 
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "PermissionToRegisterEndpoint",
            "Effect": "Allow",
            "Action": "chime:RegisterAppInstanceUserEndpoint",
            "Resource": "arn:aws:chime:us-east-1:123456789012:app-instance/app_instance_id/user/app_instance_user_id"
        },
        {
            "Sid": "PermissionToGetAppOnPinpoint",
            "Effect": "Allow",
            "Action": "mobiletargeting:GetApp",
            "Resource": "arn:aws:mobiletargeting:us-east-1:123456789012:apps/project_id"
        }
    ]
}
```

------

**Untuk mendaftarkan titik akhir**
+ Gunakan Amazon Pinpoint ARN dan token perangkat Anda untuk memanggil API. [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_identity-chime_RegisterAppInstanceUserEndpoint.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_identity-chime_RegisterAppInstanceUserEndpoint.html)

# Kirim pesan saluran dengan notifikasi diaktifkan di perpesanan Amazon Chime SDK
<a name="send-channel-msg-with-notifications"></a>

[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_SendChannelMessage.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_SendChannelMessage.html)API memiliki `PushNotification` atribut opsional yang digunakan Amazon Chime SDK untuk membuat notifikasi push untuk dikirim ke Amazon Pinpoint. Saat ini, Amazon Chime SDK hanya mendukung judul notifikasi dan bidang isi. 

Amazon Chime SDK juga mendukung dorongan APNs VoIP. Untuk mengirim pemberitahuan push sebagai push APNs VoIP, atur tipe di `PushNotification` atribut ke VOIP.

# Menerima pemberitahuan push di perpesanan Amazon Chime SDK
<a name="receive-notifications"></a>

Seiring dengan judul dan isi notifikasi push pesan saluran, Amazon Chime SDK juga menyertakan ID pesan saluran dan saluran ARN dalam muatan data. Anda menggunakan informasi tersebut untuk memuat pesan saluran lengkap.

Contoh berikut menunjukkan payload notifikasi push yang khas.

```
{
    "pinpoint.openApp=true",
    "pinpoint.notification.title=PushNotificationTitle",
    "pinpoint.notification.body=PushNotificationBody",
    "pinpoint.campaign.campaign_id=_DIRECT",
    "pinpoint.notification.silentPush=0",
    "pinpoint.jsonBody="{
        "chime.message_id":"ChannelMessageId",
        "chime.channel_arn":"ChannelARN"
    }
}
```

## Menonaktifkan atau memfilter tanda terima pemberitahuan push
<a name="disable-filter-receipt"></a>

Amazon Chime SDK menyediakan beberapa opsi untuk memungkinkan pengguna instance aplikasi mengontrol apakah mereka ingin menerima pemberitahuan push.

**Menonaktifkan semua pemberitahuan push**  
 Pengguna instans aplikasi dapat menonaktifkan notifikasi push sepenuhnya dengan memanggil [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_identity-chime_UpdateAppInstanceUserEndpoint.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_identity-chime_UpdateAppInstanceUserEndpoint.html)dan menyetel `AllowMessages` atribut ke`NONE`. 

**Menonaktifkan pemberitahuan push untuk saluran**  
Pengguna instans aplikasi dapat menonaktifkan pemberitahuan push untuk saluran tertentu dengan [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_PutChannelMembershipPreferences.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_PutChannelMembershipPreferences.html)menelepon `NONE` di bidang **PushNotification Preferensi**. 

**Memfilter pemberitahuan push untuk saluran**  
Pengguna Instans Aplikasi dapat menetapkan aturan filter sehingga mereka hanya menerima pemberitahuan push tertentu menggunakan [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_PutChannelMembershipPreferences.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_PutChannelMembershipPreferences.html)API. Untuk informasi lebih lanjut, lihat[Menggunakan aturan filter untuk memfilter pesan untuk pesan Amazon Chime SDK](filter-msgs.md). 

# Mendebug kegagalan notifikasi push untuk perpesanan Amazon Chime SDK
<a name="debug-notifications"></a>

Amazon Chime SDK terintegrasi dengan EventBridge Amazon untuk memberi tahu Anda tentang kegagalan pengiriman pesan push. Untuk kegagalan debug lebih lanjut, Anda juga dapat melihat [CloudWatchmetrik yang dikirimkan](https://docs.aws.amazon.com/pinpoint/latest/userguide/monitoring-metrics.html) Amazon Pinpoint untuk kegagalan.

Tabel berikut mencantumkan dan menjelaskan pesan kesalahan pengiriman.


| Pesan | Deskripsi | 
| --- | --- | 
| Pemrosesan permintaan telah gagal karena kesalahan yang tidak diketahui, pengecualian atau kegagalan. | Kami mengalami kesalahan internal. Coba lagi. | 
| Sumber daya yang ditentukan tidak ditemukan. AppInstanceUserEndpointakan dinonaktifkan. | Aplikasi Amazon Pinpoint tidak ada. | 
| Terlalu banyak permintaan dikirim ke Amazon Pinpoint. | Amazon Pinpoint telah membatasi pesan keluar Anda. | 
| Tidak dapat mengirim pesan. Harap verifikasi Kebijakan Izin IAM pada. ServiceRoleForAmazonChimePushNotification | Peran yang dibuat untuk Amazon Chime SDK tidak memiliki izin untuk menelepon. `mobiletargeting:SendMessages` Harap verifikasi kebijakan IAM tentang peran tersebut. | 
| Tidak dapat mengirim pesan. Harap verifikasi Hubungan Kepercayaan IAM di ServiceRoleForAmazonChimePushNotification. | Amazon Chime SDK tidak memiliki izin untuk mengakses peran pemberitahuan push.  Harap verifikasi kebijakan kepercayaan peran IAM berisi prinsip layanan,`messaging.chime.amazonaws.com`. | 

# Menggunakan aturan filter untuk memfilter pesan untuk pesan Amazon Chime SDK
<a name="filter-msgs"></a>

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 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_PutChannelMembershipPreferences.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_PutChannelMembershipPreferences.html)API. Anda dapat menyertakan atribut pesan dalam pesan saluran sebagai bagian dari panggilan [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_SendChannelMessage.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_SendChannelMessage.html)API.

**Topics**
+ [Jenis aturan filter](#filter-rule-types)
+ [Batas aturan filter](#filter-rule-limits)
+ [Contoh aturan filter](#example-preference-rule)

## Jenis aturan filter
<a name="filter-rule-types"></a>

Amazon Chime SDK mendukung jenis aturan filter berikut: 
+ Pencocokan string yang tepat inklusif
+ Pencocokan string persis eksklusif
+ Beberapa aturan filter menggunakan AND atau OR

## Batas aturan filter
<a name="filter-rule-limits"></a>

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
<a name="example-preference-rule"></a>

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

# Menggunakan peran terkait layanan untuk perpesanan Amazon Chime SDK
<a name="using-roles"></a>

[Amazon Chime SDK menggunakan peran terkait layanan AWS Identity and Access Management (IAM).](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role) Peran terkait layanan adalah jenis peran IAM unik yang menautkan langsung ke Amazon Chime SDK. Amazon Chime SDK menetapkan sebelumnya peran terkait layanan, dan mereka menyertakan semua izin yang diperlukan layanan untuk memanggil layanan lain atas nama Anda. AWS 

Peran terkait layanan membuat pengaturan Amazon Chime SDK menjadi lebih efisien, karena Anda tidak diharuskan menambahkan izin yang diperlukan secara manual. Amazon Chime SDK mendefinisikan izin peran terkait layanannya, dan kecuali ditentukan lain, hanya Amazon Chime SDK yang dapat mengambil perannya. Izin yang ditentukan mencakup kebijakan kepercayaan dan izin. Kebijakan izin tidak dapat dilampirkan ke entitas IAM lainnya.

Anda dapat menghapus peran tertaut layanan hanya setelah terlebih dahulu menghapus sumber dayanya yang terkait. Ini melindungi sumber daya Amazon Chime SDK karena Anda tidak dapat secara tidak sengaja menghapus izin untuk mengakses sumber daya.

Untuk informasi tentang layanan lain yang mendukung peran terkait layanan, lihat [Layanan AWS yang bekerja dengan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html). Cari layanan yang memiliki **Yes **di kolom **Service-Linked Role**. Pilih **Ya** dengan tautan untuk melihat dokumentasi untuk layanan itu.

**Topics**
+ [Menggunakan peran terkait layanan untuk streaming data di perpesanan Amazon Chime SDK](stream-service-linked.md)

# Menggunakan peran terkait layanan untuk streaming data di perpesanan Amazon Chime SDK
<a name="stream-service-linked"></a>

Bagian berikut menjelaskan cara mengelola peran terkait layanan untuk streaming data.

**Topics**
+ [Izin peran terkait layanan](#role-permissions)
+ [Membuat peran tertaut layanan](#create-service-linked-role)
+ [Mengedit peran yang ditautkan ke layanan](#editing-roles)
+ [Menghapus sumber daya yang digunakan oleh peran terkait layanan](#cleaning-up)
+ [Menghapus peran yang ditautkan ke layanan](#deleting-roles)

## Izin peran terkait layanan
<a name="role-permissions"></a>

Amazon Chime SDK menggunakan peran terkait layanan bernama. **AWSServiceRoleForChimeSDKMessaging** Peran tersebut memberikan akses ke AWS layanan dan sumber daya yang digunakan atau dikelola oleh Amazon Chime SDK, seperti aliran Kinesis yang digunakan untuk streaming data. 

Peran **AWSServiceRoleForChimeSDKMessaging**terkait layanan mempercayai layanan berikut sehingga layanan tersebut dapat mengambil peran tersebut:
+ messaging.chime.amazonaws.com

Kebijakan izin peran memungkinkan Amazon Chime SDK menyelesaikan tindakan berikut pada sumber daya yang ditentukan:
+ `kms:GenerateDataKey`hanya ketika permintaan dibuat menggunakan`kinesis.*.amazonaws.com`.
+ `kinesis:PutRecord`,`kinesis:PutRecords`, atau `kinesis:DescribeStream` hanya pada aliran dengan format berikut:`arn:aws:kinesis:*:*:stream/chime-messaging-*`.

Contoh berikut menunjukkan kebijakan.

------
#### [ JSON ]

****  

```
{
    	"Version":"2012-10-17",		 	 	 
    	"Statement": [
    		{
    			"Effect": "Allow",
    			"Action": [
    				"kms:GenerateDataKey"
    			],
    			"Resource": "*",
    			"Condition": {
    				"StringLike": {
    					"kms:ViaService": [
    						"kinesis.*.amazonaws.com"
    					]
    				}
    			}
    		},
    		{
    			"Effect": "Allow",
    			"Action": [
    				"kinesis:PutRecord",
    				"kinesis:PutRecords",
    				"kinesis:DescribeStream"
    			],
    			"Resource": [
    				"arn:aws:kinesis:*:*:stream/chime-messaging-*"
    			]
    		}
    	]
    }
```

------

Anda harus mengonfigurasi izin untuk mengizinkan entitas IAM seperti pengguna, grup, atau peran untuk membuat, mengedit, atau menghapus peran terkait layanan. Untuk informasi selengkapnya, lihat [Izin peran terkait layanan di Panduan](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions) pengguna *IAM*.

## Membuat peran tertaut layanan
<a name="create-service-linked-role"></a>

Anda tidak perlu membuat peran terkait layanan secara manual. Saat Anda menggunakan [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_PutMessagingStreamingConfigurations.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_PutMessagingStreamingConfigurations.html)API untuk membuat konfigurasi streaming data, Amazon Chime SDK akan membuat peran terkait layanan untuk Anda. 

Anda juga dapat menggunakan konsol IAM untuk membuat peran terkait layanan dengan kasus penggunaan Amazon Chime SDK. Di AWS CLI atau AWS API, buat peran terkait layanan dengan nama layanan. `messaging.chime.amazonaws.com` Untuk informasi selengkapnya, lihat [Membuat peran terkait layanan di Panduan](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#create-service-linked-role) pengguna *IAM*. Jika Anda menghapus peran ini, Anda dapat mengulangi proses ini untuk membuatnya lagi.

## Mengedit peran yang ditautkan ke layanan
<a name="editing-roles"></a>

Setelah Anda membuat peran terkait layanan, Anda hanya dapat mengedit deskripsinya, dan Anda melakukannya menggunakan IAM. Untuk informasi selengkapnya, lihat [Mengedit peran terkait layanan](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role) di Panduan pengguna *IAM*.

## Menghapus sumber daya yang digunakan oleh peran terkait layanan
<a name="cleaning-up"></a>

Sebelum dapat menggunakan IAM untuk menghapus peran tertaut-layanan, Anda harus terlebih dahulu menghapus semua sumber daya yang digunakan oleh peran tersebut.

**catatan**  
Penghapusan dapat gagal jika Anda mencoba menghapus sumber daya saat Amazon Chime SDK menggunakannya. Jika penghapusan gagal, tunggu beberapa menit dan coba operasi lagi.

**Untuk menghapus sumber daya yang digunakan oleh AmazonChimeServiceChatStreamingAccess peran**  
Jalankan perintah CLI berikut untuk mematikan streaming data untuk instance aplikasi:
+ `aws chime-sdk-messaging delete-messaging-streaming-configurations --app-instance-arn app_instance_arn`

Tindakan ini menghapus semua konfigurasi streaming untuk instance aplikasi Anda.

## Menghapus peran yang ditautkan ke layanan
<a name="deleting-roles"></a>

Bila Anda tidak lagi membutuhkan fitur atau layanan yang memerlukan peran terkait layanan, sebaiknya hapus peran tersebut adalah praktik terbaik. Jika tidak, Anda memiliki entitas yang tidak digunakan yang tidak dipantau atau dipelihara secara aktif. Namun, Anda harus menghapus sumber daya yang digunakan oleh peran terkait layanan sebelum dapat menghapus peran secara manual.

Anda dapat menggunakan konsol IAM AWS CLI, atau AWS API untuk menghapus peran **AmazonChimeServiceRoleForChimeSDKMessaging**terkait layanan. Untuk informasi selengkapnya, lihat [Menghapus peran terkait layanan di Panduan pengguna](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role) IAM.

# Menggunakan alur saluran untuk memproses pesan untuk perpesanan Amazon Chime SDK
<a name="using-channel-flows"></a>

Anda menggunakan alur saluran untuk menjalankan logika bisnis pada pesan dalam penerbangan sebelum dikirim ke penerima di saluran pesan. Alur saluran dapat melakukan tindakan seperti menghapus nomor ID pemerintah, nomor telepon, atau kata-kata kotor dari pesan. Anda juga dapat menggunakan alur saluran untuk menjalankan fungsi seperti menggabungkan respons terhadap polling sebelum mengirimkan hasilnya kembali ke peserta.

**Prasyarat**
+ Pengetahuan tentang fungsionalitas SDK Amazon Chime dasar, seperti mengelola saluran, serta mengirim serta menerima pesan.
+ Kemampuan untuk memanggil pesan Amazon Chime SDK. APIs

**Konsep aliran saluran**

Untuk menggunakan aliran saluran secara efektif, Anda harus memahami konsep-konsep ini:

**Prosesor saluran**  
 AWS Lambda Fungsi yang menjalankan logika preprocessing pada pesan saluran. Saat Anda mengaitkan saluran dengan aliran saluran, prosesor dalam aliran dipanggil untuk setiap pesan di saluran. Untuk mengurangi latensi, prosesor tunggal bekerja paling baik untuk sebagian besar kasus penggunaan. Terakhir, setiap prosesor harus membuat panggilan balik ke layanan Amazon Chime SDK setelah pemrosesan selesai.   
Saat ini kami hanya mendukung satu prosesor per aliran saluran. Jika Anda membutuhkan lebih dari satu prosesor, kirimkan tiket dukungan untuk peningkatan.

**Aliran saluran**  
Channel Flows adalah kontainer hingga tiga prosesor saluran, ditambah urutan run. Anda mengaitkan alur dengan saluran, dan prosesor mengambil tindakan pada semua pesan yang dikirim ke saluran tersebut.

**Memanggil aliran saluran**  
Item berikut memanggil alur saluran:
+ Pesan standar persisten baru
+ Pesan standar non-persisten baru
+ Pesan standar persisten yang diperbarui

**catatan**  
Alur saluran tidak memproses pesan Kontrol atau Sistem. Untuk informasi selengkapnya tentang jenis pesan yang disediakan oleh Amazon Chime SDK Messaging, lihat. [Memahami jenis pesan Amazon Chime SDK](msg-types.md)

**Topics**
+ [Menyiapkan Prosesor Saluran untuk perpesanan Amazon Chime SDK](processor-setup.md)
+ [Membuat alur saluran untuk perpesanan Amazon Chime SDK](create-channel-flow.md)
+ [Mengaitkan dan memisahkan alur saluran untuk perpesanan Amazon Chime SDK](associate-channel-flow.md)
+ [Mengirim pesan dalam pesan Amazon Chime SDK](sending-msgs.md)
+ [Membuat peringatan kegagalan dengan mengotomatiskan pesan Amazon Chime SDK EventBridge](event-bridge-events.md)

# Menyiapkan Prosesor Saluran untuk perpesanan Amazon Chime SDK
<a name="processor-setup"></a>

Untuk mulai menggunakan alur saluran, pertama-tama Anda membuat fungsi Lambda prosesor untuk menangani preprocessing untuk kasus penggunaan Anda. Misalnya, Anda dapat memperbarui konten pesan atau metadata, menolak pesan dan mencegahnya dikirim, atau membiarkan pesan asli lewat.

**Prasyarat**
+ Fungsi Lambda harus berada di AWS akun yang sama dan AWS Wilayah yang sama dengan. AppInstance

**Memberikan izin pemanggilan**  
Anda harus memberikan izin layanan pesan Amazon Chime SDK untuk memanggil sumber daya Lambda Anda. Untuk informasi selengkapnya tentang izin, lihat [Menggunakan kebijakan berbasis sumber daya](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html) untuk. AWS Lambda Contoh:

  
**Utama**: “messaging.chime.amazonaws.com”  
**Tindakan**: lambda: InvokeFunction  
**Efek**: Izinkan  
**AWS: SourceAccount**:*Your AWS AccountId*.  
**AWS: SourceArn**: `"arn:aws:chime:region:AWS AccountId: appInstance/"`

**catatan**  
Anda dapat memberikan ID instans aplikasi tertentu untuk memanggil prosesor, atau menggunakan wildcard untuk mengizinkan semua instance aplikasi Amazon Chime SDK di akun untuk memanggil prosesor Anda.

**Memberikan izin panggilan balik**  
Anda juga perlu mengizinkan fungsi Lambda prosesor Anda untuk memanggil API. `ChannelFlowCallback` Untuk informasi tentang melakukan itu, lihat [AWS Lambda menjalankan peran](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) dalam *panduan AWS Lambda pengembang*. 

Anda dapat menambahkan kebijakan Inline ke peran run fungsi Lambda Anda. Contoh ini memungkinkan prosesor untuk memanggil file. `ChannelFlowCallback API`

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "chime:ChannelFlowCallback"
            ],
            "Resource": [
            "arn:aws:chime:us-east-1:111122223333:appInstance/*"
            ]
        }
    ]
}
```

------

**catatan**  
Ikuti praktik terbaik untuk fungsi Lambda. Untuk informasi lebih lanjut, lihat topik ini:   
[Praktik Terbaik Efisiensi Kinerja](https://docs.aws.amazon.com/whitepapers/latest/serverless-architectures-lambda/performance-efficiency-best-practices.html) 
[Praktik terbaik untuk bekerja dengan AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html)
[Mengkonfigurasi konkurensi cadangan](https://docs.aws.amazon.com/lambda/latest/dg/configuration-concurrency.html#configuration-concurrency-reserved)
[Pemanggilan asinkron](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html)

**Memohon fungsi prosesor Lambda**  
Saat pengguna mengirim pesan, permintaan input berikut akan memanggil fungsi Lambda prosesor.

```
{
    "EventType": "string"
    "CallbackId": "string"
    "ChannelMessage": {
        "MessageId": "string",
        "ChannelArn": "string",
        "Content": "string",
        "Metadata": "string",
        "Sender":{
            "Arn": "string", 
            "Name": "string"
        },
        "Persistence": "string",
        "LastEditedTimestamp": "string", 
        "Type": "string",
        "CreatedTimestamp": "string", 
    }
}
```

EventType  
Acara dikirim ke prosesor. Nilainya adalah `CHANNEL_MESSAGE_EVENT` konstanta.

CallbackId  
Token yang digunakan saat memanggil `ChannelFlowCallback` API dari prosesor.

ChannelMessage  
*ChannelArn*ARN saluran  
*Konten* Konten Pesan yang akan diproses  
*CreatedTimestamp*Waktu di mana pesan itu dibuat  
*LastEditedTimestamp*Waktu di mana pesan diedit  
*MessageId*Pengidentifikasi pesan  
*Metadata Pesan metadata* yang akan diproses  
*Persistence* Boolean yang mengontrol apakah pesan bertahan di back end. Nilai Valid: `PERSISTENT | NON_PERSISTENT`  
*Pengirim Pengirim* pesan. Jenis: sebuah [identityobjek](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_Identity.html).  
*Ketik* Jenis pesan. ChannelFlowhanya mendukung jenis `STANDARD` pesan. Nilai Valid: `STANDARD`

Fungsi prosesor menentukan hal berikut tentang setiap pesan.
+ Apakah akan memperbarui konten pesan, metadata, atau keduanya
+ Apakah akan menolak pesan 
+ Apakah meninggalkan pesan tidak berubah

Saat pemrosesan selesai, fungsi Lambda prosesor mengirimkan hasilnya kembali ke layanan Pesan Amazon Chime SDK sehingga pesan dapat dikirim ke semua penerima. Status pesan ditandai `PENDING` sampai fungsi prosesor Lambda mengirimkan kembali hasilnya. Fungsi prosesor Lambda memiliki 48 jam untuk mengirim kembali hasilnya. Kami tidak menjamin pengiriman pesan setelah itu, dan [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ChannelFlowCallback.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ChannelFlowCallback.html)API melempar pesan kesalahan Forbidden Exception. Untuk mengirim kembali hasilnya, panggil `ChannelFlowCallback` API.

# Membuat alur saluran untuk perpesanan Amazon Chime SDK
<a name="create-channel-flow"></a>

Setelah Anda memiliki pengaturan prosesor, Anda menggunakan Amazon Chime SDK Messaging APIs untuk membuat alur saluran. Anda dapat menggunakan `Fallback` tindakan untuk menentukan apakah akan menghentikan atau melanjutkan pemrosesan jika aliran saluran tidak dapat terhubung ke fungsi Lambda prosesor. Jika prosesor memiliki tindakan fallback`ABORT`, prosesor akan menyetel status pesan ke`FAILED`, dan tidak mengirim pesan. Perhatikan bahwa jika prosesor terakhir dalam urutan aliran saluran memiliki tindakan mundur`CONTINUE`, pesan dianggap diproses dan dikirim ke penerima di saluran. Setelah Anda membuat alur saluran, Anda dapat mengaitkannya dengan saluran individual. Untuk informasi selengkapnya, lihat dokumentasi [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelFlow.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelFlow.html)API. 

# Mengaitkan dan memisahkan alur saluran untuk perpesanan Amazon Chime SDK
<a name="associate-channel-flow"></a>

Saat Anda mengaitkan saluran dikaitkan dengan aliran saluran, prosesor dalam aliran saluran memproses semua pesan yang dikirim ke saluran. Anda harus menjadi moderator atau administrator saluran untuk memanggil asosiasi aliran saluran dan disasosiasi. APIs Ingat fakta-fakta ini saat Anda pergi.
+ Anda dapat mengaitkan maksimum 1 aliran saluran dengan saluran pada waktu tertentu. Untuk mengaitkan alur saluran, panggil [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_AssociateChannelFlow.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_AssociateChannelFlow.html)API. 
+ Untuk memisahkan alur saluran dan menghentikan pra-pemrosesan pesan saluran, hubungi API. [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_DisassociateChannelFlow.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_DisassociateChannelFlow.html) 

# Mengirim pesan dalam pesan Amazon Chime SDK
<a name="sending-msgs"></a>

Anda menggunakan `SendChannelMessage` API untuk mengirim pesan ke saluran. Untuk saluran yang terkait dengan aliran saluran, prosesor menetapkan salah satu nilai status berikut.




| Status pesan | Deskripsi | 
| --- | --- | 
| `SENT` | Pesan berhasil diproses. | 
| `PENDING` | Pemrosesan yang sedang berlangsung. | 
| `FAILED` | Pemrosesan gagal karena fungsi prosesor Lambda tidak dapat dijangkau. | 
| `DENIED` | Pesan tidak akan terkirim. | 

**Menerima acara status menengah**  
**Acara Websocket**

Acara Websocket dikirim ke saluran setelah berhasil membuat koneksi. Untuk informasi lebih lanjut, lihat[Menggunakan WebSockets untuk menerima pesan di perpesanan Amazon Chime SDK](websockets.md). 


| Tipe peristiwa | Status | Penerima | Catatan | 
| --- | --- | --- | --- | 
| `CREATE_CHANNEL_MESSAGE` | `SENT` | Semua anggota saluran | `SendChannelMessage`API dengan preprocessing yang sukses | 
| `UPDATE_CHANNEL_MESSAGE` | `SENT` | Semua anggota saluran | `UpdateChannelMessage`API dengan preprocessing yang sukses | 
| `PENDING_CREATE_CHANNEL_MESSAGE` | `PENDING` | Hanya pengirim pesan | `SendChannelMessage`API dengan preprocessing yang sedang berlangsung | 
| `PENDING_UPDATE_CHANNEL_MESSAGE` | `PENDING` | Hanya pengirim pesan | `UpdateChannelMessage`API dengan preprocessing yang sedang berlangsung | 
| `FAILED_CREATE_CHANNEL_MESSAGE` | `FAILED` | Hanya pengirim pesan | `SendChannelMessage`API dengan preprocessing yang gagal | 
| `FAILED_UPDATE_CHANNEL_MESSAGE` | `FAILED` | Hanya pengirim pesan | `UpdateChannelMessage`API dengan preprocessing yang gagal | 
| `DENIED_CREATE_CHANNEL_MESSAGE` | `DENIED` | Hanya pengirim pesan | `SendChannelMessage`API dengan prosesor menyangkal pesan | 
| `DENIED_UPDATE_CHANNEL_MESSAGE` | `DENIED` | Hanya pengirim pesan | `UpdateChannelMessage`API dengan prosesor menyangkal pesan | 

**API GetChannelMessageStatus**  
API ini menyediakan cara alternatif untuk mengambil status pesan jika acara tidak diterima karena koneksi websocket yang buruk. Untuk informasi selengkapnya, lihat dokumentasi [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_GetChannelMessageStatus.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_GetChannelMessageStatus.html)API.

**catatan**  
API ini tidak mengembalikan status untuk pesan yang ditolak, karena kami tidak menyimpannya.

# Membuat peringatan kegagalan dengan mengotomatiskan pesan Amazon Chime SDK EventBridge
<a name="event-bridge-events"></a>

Amazon Chime SDK memberikan Peristiwa ketika ada kesalahan dalam menjalankan fungsi Lambda prosesor Anda. Peristiwa dikirim terlepas dari `Fallback` tindakan yang ditentukan untuk prosesor saat membuat aliran saluran. Anda dapat menulis aturan sederhana untuk menentukan peristiwa ini, ditambah tindakan otomatis yang harus diambil ketika salah satu peristiwa tersebut cocok dengan aturan. Untuk informasi selengkapnya, lihat [Panduan EventBridge Pengguna Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/). Ketika kesalahan seperti ini terjadi, maka tergantung pada `Fallback` tindakan yang Anda konfigurasikan, anggota di saluran tidak dapat mengirim pesan, atau pesan akan mengalir melalui saluran tanpa pemrosesan. Untuk informasi selengkapnya tentang `Fallback` tindakan, lihat [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_Processor.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_Processor.html)di referensi Amazon Chime SDK API. 

Contoh ini menunjukkan peristiwa kegagalan yang khas.

```
{
    "version": "0",
    "id": "12345678-1234-1234-1234-111122223333",
    "detail-type": "Chime ChannelFlow Processing Status",
    "source": "aws.chime",
    "account": "111122223333",
    "time": "yyyy-mm-ddThh:mm:ssZ",
    "region": "region",
    "resources": [],
    "detail": {
        "eventType": "ProcessorInvocationFailure",
        "appInstanceArn": "arn:aws:chime:region:AWSAccountId:app-instance/AppInstanceId",
        "channelArn": "arn:aws:chime:region:AWSAccountId:app-instance/AppInstanceId/channel/ChannelId",
        "messageId": "298efac7298efac7298efac7298efac7298efac7298efac7298efac7298efac7",
        "processorResourceArn": "arn:aws:lambda:region:AWSAccountId:function:ChannelFlowLambda",
        "failureReason": "User is not authorized to perform: lambda:InvokeFunction on resource: arn:aws:lambda:region:AppInstanceId:function:ChannelFlowLambda because no resource-based policy allows the lambda:InvokeFunction action"
      }
}
```

# Menggunakan AppInstanceBots sebagai agen saluran cerdas untuk perpesanan Amazon Chime SDK
<a name="appinstance-bots"></a>

Anda dapat menggunakan `AppInstanceBots` sebagai agen saluran cerdas. Agen mengenali frasa kunci yang dikirim melalui `ChannelMessages` oleh anggota saluran. Model pemahaman bahasa alami bot menyelesaikan pesan. Pada gilirannya, itu memungkinkan satu atau lebih anggota saluran untuk terlibat dalam dialog bahasa alami yang ditentukan oleh model bot. Anda menyediakan bot, sehingga Anda mengontrol kedalaman dialog dan integrasi dengan sistem perusahaan Anda.

**Prasyarat**
+ Pengetahuan tentang fungsionalitas SDK Amazon Chime dasar, seperti membuat`AppInstanceUsers`, mengelola saluran, serta mengirim dan menerima pesan.
+ Kemampuan untuk memanggil Amazon Chime SDK Messaging. APIs
+ Pengetahuan tentang fungsionalitas dasar Amazon Lex V2, seperti membuat Bot Amazon Lex V2, memodelkan maksud dan slot, membuat versi bot, alias, menggunakan status sesi, dan integrasi kait Lambda.

**penting**  
Penggunaan Amazon Lex V2 tunduk pada [Ketentuan Layanan AWS](https://aws.amazon.com/service-terms/), termasuk persyaratan khusus untuk AWS Machine Learning dan Layanan Kecerdasan Buatan.

**Topics**
+ [Membuat bot Amazon Lex V2 untuk perpesanan Amazon Chime SDK](create-lex-bot.md)
+ [Menyiapkan AppInstance bot untuk perpesanan Amazon Chime SDK](appinstance-bot-setup.md)
+ [Membuat keanggotaan saluran AppInstanceBot untuk perpesanan Amazon Chime SDK](channel-membership.md)
+ [Mengirim pesan ke pesan AppInstanceBot Amazon Chime SDK](message-appinstancebot.md)
+ [Memproses pesan dari Amazon Lex untuk perpesanan Amazon Chime SDK](process-from-lexv2.md)
+ [Memproses tanggapan dari pesan AppInstanceBot untuk Amazon Chime SDK](process-response.md)
+ [Menggunakan aturan untuk mengirim acara ke Amazon EventBridge untuk pesan Amazon Chime SDK](event-bridge-alerts.md)
+ [Pemecahan masalah yang AppInstanceBots dikonfigurasi dengan bot Amazon Lex V2 untuk perpesanan Amazon Chime SDK](troubleshoot-lex-bots.md)

# Membuat bot Amazon Lex V2 untuk perpesanan Amazon Chime SDK
<a name="create-lex-bot"></a>

Untuk menggunakan AppInstance bot sebagai agen, Anda harus terlebih dahulu membuat bot Amazon Lex V2 untuk mengelola interaksi dialog untuk skenario agen cerdas. Untuk mulai membuat bot Amazon Lex V2, lihat [Memulai Amazon Lex V2](https://docs.aws.amazon.com/lexv2/latest/dg/getting-started.html) di *Panduan Pengembang Amazon Lex V2*. Untuk informasi tentang memigrasikan bot Amazon Lex V1 ke Amazon Lex V2, lihat panduan migrasi [Amazon Lex V1 ke V2](https://docs.aws.amazon.com/lexv2/latest/dg/migration.html).

**Topics**
+ [Prasyarat](#lex-prereqs)
+ [Memberikan izin pemanggilan](#invocation-perms)
+ [Membuat maksud selamat datang untuk perpesanan Amazon Chime SDK](welcome-intent.md)
+ [Membuat versi bot Amazon Lex V2 untuk perpesanan Amazon Chime SDK](lex-versions.md)
+ [Membuat alias bot Amazon Lex V2 untuk perpesanan Amazon Chime SDK](lex-aliases.md)

## Prasyarat
<a name="lex-prereqs"></a>

Bot Amazon Lex V2 Anda harus memiliki prasyarat berikut.
+ Anda harus membuat bot di AWS Wilayah yang mendukung titik akhir runtime Amazon Lex V2.
+ Anda harus membuat bot di AWS akun dan Wilayah yang sama dengan `AppInstance` dan`AppInstanceBot`.
+ Bot harus memberikan izin pemanggilan melalui kebijakan berbasis sumber daya kepada kepala layanan. `messaging.chime.amazonaws.com`
+ Bot dapat memodelkan Niat Selamat Datang. Hal ini memungkinkan `AppInstanceBot` untuk mengumumkan dirinya sendiri dan kemampuannya pada keanggotaan dalam saluran.
+ Bot harus memiliki versi produksi dan alias untuk mengonfigurasi. `AppInstanceBot`
+ Bot harus menggunakan bahasa dan lokal yang didukung. Untuk informasi selengkapnya tentang bahasa dan lokal, lihat [Bahasa dan lokal yang didukung di Amazon Lex V2 di Panduan](https://docs.aws.amazon.com/lexv2/latest/dg/how-languages.html) *Pengembang Amazon Lex V2*.

## Memberikan izin pemanggilan
<a name="invocation-perms"></a>

`AppInstanceBot`Untuk memanggil Bot Amazon Lex V2, kepala layanan pesan Amazon Chime SDK harus memiliki izin untuk memanggil sumber daya Amazon Lex Bot. *Untuk informasi selengkapnya tentang izin kebijakan berbasis sumber daya Amazon Lex V2, lihat [contoh kebijakan berbasis sumber daya untuk Amazon Lex V2 di Panduan Pengembang Amazon Lex V2](https://docs.aws.amazon.com/lexv2/latest/dg/security_iam_resource-based-policy-examples.html).*

Contoh berikut menunjukkan kebijakan berbasis sumber daya.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "messaging.chime.amazonaws.com"
      },
      "Action": [
        "lex:PutSession",
        "lex:DeleteSession",
        "lex:RecognizeText"
      ],
      "Resource": "arn:aws:lex:us-east-1:111122223333:bot-alias/lex-bot-id/lex-bot-alias-id",
      "Condition": {
        "StringEquals": {
        "AWS:SourceAccount": "111122223333"
        },
        "ArnEquals": {
        "AWS:SourceArn": "arn:aws:chime:us-east-1:111122223333:app-instance/app-instance-id/bot/app-instance-bot-id"
        }
      }
    }
  ]
}
```

------

**catatan**  
Untuk mengizinkan seseorang `AppInstanceBot` memanggil bot Amazon Lex V2, gunakan ID AppInstanceBot tersebut. Untuk memungkinkan semua orang `AppInstanceBots` dalam `AppInstance` menjalankan bot Amazon Lex V2, gunakan wildcard. Contoh:  
`arn:aws:chime:region:aws-account-id:app-instance/app-instance-id/bot/*`

# Membuat maksud selamat datang untuk perpesanan Amazon Chime SDK
<a name="welcome-intent"></a>

Jika Anda menambahkan maksud selamat datang opsional ke model bot Amazon Lex V2 Anda, Anda `AppInstanceBot` dapat mengumumkan dirinya sendiri dan kemampuannya saat bergabung dengan saluran. Maksud selamat datang dapat menampilkan pesan, atau dapat memulai dialog dengan anggota saluran. Nama maksud selamat datang dapat bervariasi, dan Anda mendefinisikannya dalam AppInstanceBot konfigurasi.

Untuk informasi selengkapnya tentang maksud, lihat [Menambahkan maksud di Panduan Pengembang](https://docs.aws.amazon.com/lexv2/latest/dg/build-intents.html) *Amazon Lex V2*

# Membuat versi bot Amazon Lex V2 untuk perpesanan Amazon Chime SDK
<a name="lex-versions"></a>

Saat Anda membuat Bot Amazon Lex V2, Anda hanya membuat versi *draf*. Draf adalah salinan bot yang berfungsi yang dapat Anda perbarui. Secara default, versi draf dikaitkan dengan alias yang disebut`TestBotAlias`, dan Anda hanya boleh menggunakan bot draf untuk pengujian manual.

Setelah Anda menyelesaikan pemodelan dialog dan membangun draft bot, Anda membuat satu atau beberapa *versi*, snapshot bernomor dari draft Lex bot. Versi memungkinkan Anda untuk mengontrol implementasi yang digunakan aplikasi klien Anda. Misalnya, Anda dapat mempublikasikan versi untuk digunakan di berbagai bagian alur kerja Anda, seperti pengembangan, penerapan beta, dan produksi.

Untuk informasi selengkapnya tentang pembuatan versi bot Lex, lihat [Membuat versi di Panduan](https://docs.aws.amazon.com/lexv2/latest/dg/versions.html) *Pengembang Amazon Lex V2*.

# Membuat alias bot Amazon Lex V2 untuk perpesanan Amazon Chime SDK
<a name="lex-aliases"></a>

Setelah Anda membuat satu atau beberapa versi bot Amazon Lex V2, Anda membuat *alias*. Alias bertindak sebagai pointer bernama ke versi bot Amazon Lex V2. Misalnya, Anda hanya dapat mengaitkan alias dengan satu versi pada satu waktu.

Untuk informasi selengkapnya tentang alias Lex bot, lihat [Membuat alias di Panduan](https://docs.aws.amazon.com/lexv2/latest/dg/aliases.html) *Pengembang Lex V2*.

# Menyiapkan AppInstance bot untuk perpesanan Amazon Chime SDK
<a name="appinstance-bot-setup"></a>

Setelah Anda memiliki bot Amazon Lex V2 dengan model, versi, dan alias, Anda menggunakan pesan Amazon Chime SDK APIs atau CLI untuk membuat file. AppInstanceBot Untuk informasi selengkapnya tentang penggunaan APIs, lihat dokumentasi [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_identity-chime_CreateAppInstanceBot.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_identity-chime_CreateAppInstanceBot.html)API.

**catatan**  
Anda menggunakan `InvokedBy` atribut untuk mengonfigurasi perilaku interaksi dialog`AppInstanceBot`. Anda dapat mengonfigurasi jenis pesan yang memicu bot, seperti pesan standar atau pesan yang ditargetkan.

Contoh berikut menunjukkan cara menggunakan AWS CLI untuk membuat semua pesan standar dengan`MENTIONS`, dan pesan AppInstanceBot yang ditargetkan, dapat dipanggil.

```
aws chime-sdk-identity create-app-instance-bot \
--app-instance-arn app-instance-arn \
--name app-instance-bot-name \
--configuration '{
   "Lex": {
      "LexBotAliasArn": "lex-bot-alias-arn",
      "LocaleId": "lex_bot_alias_locale_id",
      "InvokedBy": {
          "StandardMessages": "MENTIONS",
          "TargetedMessages": "ALL"
      }
      "WelcomeIntent": "welcome-intent-name"
   }
}
```

# Membuat keanggotaan saluran AppInstanceBot untuk perpesanan Amazon Chime SDK
<a name="channel-membership"></a>

Setelah Anda membuat AppInstanceBot, Anda menambahkannya sebagai anggota ke saluran baru atau yang sudah ada. Untuk informasi selengkapnya, lihat [CreateChannel](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannel.html)dan [ CreateChannelMembership](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html)di dokumentasi *API perpesanan Amazon Chime SDK*.

Contoh berikut menunjukkan cara menggunakan AWS CLI untuk membuat saluran dan menambahkan `AppInstanceBot` sebagai anggota.

```
aws chime-sdk-messaging create-channel \
--chime-bearer caller_app_instance_user_arn \
--app-instance-arn app_instance_arn \
--name channel_name \
--member-arns '[
   "app_instance_bot_arn"
]'
```

Contoh berikut menunjukkan cara menggunakan AWS CLI untuk menambahkan ke saluran yang `AppInstanceBot` ada.

```
aws chime-sdk-messaging create-channel-membership \
--chime-bearer caller_app_instance_user_arn \
--channel-arn channel_arn \
--member-arn app_instance_bot_arn
```

# Mengirim pesan ke pesan AppInstanceBot Amazon Chime SDK
<a name="message-appinstancebot"></a>

Anda menggunakan [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_SendChannelMessage.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_SendChannelMessage.html)API untuk mengirim pesan ke file AppInstanceBot. Anda mengirim pesan ke saluran di mana AppInstanceBot adalah anggota. Jika [model pemahaman bahasa alami](https://docs.aws.amazon.com/lexv2/latest/dg/what-is.html) mengenali konten pesan dan memunculkan maksud Amazon Lex, model akan AppInstanceBot merespons dengan pesan saluran dan memulai dialog.

Anda juga dapat mengirim pesan target ke anggota saluran, yang bisa berupa AppInstanceUser atau AppInstanceBot. Hanya target dan pengirim yang dapat melihat pesan yang ditargetkan. Hanya pengguna yang dapat melihat pesan yang ditargetkan yang dapat mengambil tindakan terhadapnya. Namun, administrator dapat menghapus pesan yang ditargetkan yang tidak dapat mereka lihat. 

Contoh berikut menunjukkan cara menggunakan AWS CLI untuk mengirim pesan saluran.

```
aws chime-sdk-messaging send-channel-message \
--chime-bearer caller_app_instance_user_arn \
--channel-arn channel_arn \
--content content \
--type STANDARD \
--persistence PERSISTENT
```

# Memproses pesan dari Amazon Lex untuk perpesanan Amazon Chime SDK
<a name="process-from-lexv2"></a>

Saat mengirim pesan ke Amazon Lex, Amazon Chime SDK Messaging mengisi `CHIME.channel.arn` dan `CHIME.sender.arn` dengan saluran dan informasi ARN pengirim sebagai atribut permintaan. Anda dapat menggunakan atribut untuk menentukan siapa yang mengirim pesan dan saluran milik pengirim. Untuk informasi selengkapnya, lihat [Mengaktifkan logika kustom dengan fungsi AWS Lambda](https://docs.aws.amazon.com/lexv2/latest/dg/lambda.html) di Panduan Pengembang *Amazon Lex*.

# Memproses tanggapan dari pesan AppInstanceBot untuk Amazon Chime SDK
<a name="process-response"></a>

Saat pengguna mengirim pesan, pengguna AppInstanceBot merespons dengan pesan saluran. Anda dapat membuat daftar pesan saluran untuk mendapatkan respons bot. 

Contoh berikut menunjukkan Anda untuk menggunakan CLI untuk daftar pesan saluran.

```
aws chime-sdk-messaging list-channel-messages \
--chime-bearer caller_app_instance_user_arn \
--channel-arn channel_arn
```

Tanggapan sukses dari AppInstanceBot mengambil format berikut. 

```
{
    "MessageId": "messageId",
    "Content": "*{\"Messages\":[{\"...\"}]}*",
    "ContentType": "application/amz-chime-lex-msgs",
    "MessageAttributes": {
        "CHIME.LEX.sessionState.intent.name": {
            "StringValues": [
                "lex_bot_intent_name"
            ]
        },
        "CHIME.LEX.sessionState.intent.state": {
            "StringValues": [
                "lex_bot_intent_fullfilment_status"
            ]
        },
        "CHIME.LEX.sessionState.originatingRequestId": {
            "StringValues": [
                "lex_bot_originating_request_id"
            ]
        },
        "CHIME.LEX.sessionState.sessionId": {
            "StringValues": [
                "lex_bot_session_id"
            ]
        }
    },
    "Sender": {
        "Arn": "app_instance_bot_arn",
        "Name": "app_instance_bot_name"
    },
    "Type": "STANDARD",
}
```

**Content**  
`Content`Bidang berisi daftar pesan yang berasal dari bot Amazon Lex V2. Untuk informasi selengkapnya tentang pesan-pesan tersebut, lihat [pesan](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html#lexv2-runtime_RecognizeText-response-messages) di Amazon Lex V2 `RecognizeText` API.  
Contoh berikut menunjukkan cara menggunakan `Content` bidang dalam pesan selamat datang.  

```
{
    "Messages":
    [
        {
            "Content": "Hello!",
            "ContentType": "PlainText"
        },
        {
            "ContentType": "ImageResponseCard",
            "ImageResponseCard":
            {
                "Title": "Hello! I'm BB, the Bank Bot.",
                "Subtitle": "I can help you with the following transactions",
                "Buttons":
                [
                    {
                        "Text": "Check balance",
                        "Value": "Check balance"
                    },
                    {
                        "Text": "Escalate to agent",
                        "Value": "Escalate to agent"
                    }
                ]
            }
        }
    ]
}
```
Untuk respons kegagalan, bidang Konten berisi pesan kesalahan dan kode dalam format berikut:  

```
{
    "Code": error_code
}
```

**ContentType**  
`ContentType`Mengacu pada jenis payload yang berisi `Content` bidang, dan harus diperiksa untuk mengurai bidang. `Content`   
Bot Lex V2 menggunakan yang berbeda`ContentType`.
`ContentType`diatur `application/amz-chime-lex-msgs` untuk respons sukses, atau `application/amz-chime-lex-error` untuk respons kegagalan.

**MessageAttributes**  
A *MessageAttribute*adalah peta kunci string untuk nilai string. Tanggapan dari sebuah `AppInstanceBot` berisi atribut pesan berikut yang dipetakan ke respons dari bot Amazon Lex.   
+ **Chime.lex.SessionState.Intent.Name — Nama bot Lex** bermaksud bahwa permintaan tersebut berusaha untuk memenuhi.
+ **Chime.lex.SessionState.Intent.state** — Status maksud saat ini. Nilai yang mungkin meliputi:`Fulfilled`,`InProgress`, dan`Failed`. 
+ **Chime.lex.SessionState. originatingRequestId** — Pengidentifikasi unik untuk permintaan khusus ke bot Amazon Lex. Ini diatur ke `MessageId` pesan pengguna asal yang memicu file. AppInstanceBot
+ **Chime.lex.SessionState.SessionId** — Pengidentifikasi unik untuk percakapan antara pengguna dan bot. Saat pengguna memulai obrolan dengan bot Anda, Amazon Lex membuat sesi.
Untuk informasi selengkapnya tentang sesi Amazon Lex dan status sesi, lihat *Referensi API Amazon Lex*, dan [Mengelola sesi](https://docs.aws.amazon.com/lexv2/latest/dg/using-sessions.html) *di Panduan Pengembang Amazon Lex V2 [https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_SessionState.html](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_SessionState.html)*  
Untuk informasi selengkapnya tentang atribut yang dikembalikan Amazon Lex V2, lihat [Amazon Lex Runtime V2](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_Operations_Amazon_Lex_Runtime_V2.html) APIs.

# Menggunakan aturan untuk mengirim acara ke Amazon EventBridge untuk pesan Amazon Chime SDK
<a name="event-bridge-alerts"></a>

Amazon Chime SDK mengirimkan EventBridge peristiwa saat kesalahan mencegahnya menjalankan Bot Amazon Lex V2. Anda dapat membuat EventBridge aturan yang mengenali peristiwa tersebut dan secara otomatis mengambil tindakan ketika aturan dicocokkan. Untuk informasi selengkapnya, lihat [ EventBridge Aturan Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rules.html) *di Panduan EventBridge Pengguna Amazon*.

Contoh berikut menunjukkan peristiwa kegagalan yang khas.

```
{
  version: '0',
  id: '12345678-1234-1234-1234-111122223333',
  'detail-type': 'Chime Messaging AppInstanceBot Lex Failure',
  source: 'aws.chime',
  account: 'aws-account-id',
  time: 'yyyy-mm-ddThh:mm:ssZ',
  region: "region",
  resources: [],
  detail: {    
    resourceArn: 'arn:aws:chime:region:aws-account-id:app-instance/app-instance-id/bot/app-instance-bot-id',
    failureReason: "1 validation error detected: Value at 'text' failed to satisfy constraint: Member must have length less than or equal to 1024 (Service: LexRuntimeV2, Status Code: 400, Request ID: request-id)"
  }
}
```

# Pemecahan masalah yang AppInstanceBots dikonfigurasi dengan bot Amazon Lex V2 untuk perpesanan Amazon Chime SDK
<a name="troubleshoot-lex-bots"></a>

Topik berikut menjelaskan cara memecahkan masalah umum dengan. AppInstanceBots

## Menemukan kegagalan Amazon Lex V2
<a name="find-lex-failures"></a>

Pesan Amazon Chime SDK mengirimkan [ EventBridge peristiwa Amazon](https://docs.aws.amazon.com/chime-sdk/latest/dg/event-bridge-alerts.html) ketika kesalahan mencegahnya memanggil bot Amazon Lex V2. Untuk informasi selengkapnya tentang menyiapkan aturan dan mengonfigurasi target notifikasi, lihat [Memulai Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-get-started.html) di *Panduan EventBridge Pengguna Amazon*.

Jika menerima EventBridge peristiwa di AWS CloudWatch Log, Anda dapat menggunakan Wawasan AWS CloudWatch Log untuk melakukan kueri EventBridge peristiwa berdasarkan jenis detail pesan Amazon Chime SDK. `failureReason`Daftar penyebab kegagalan. 

Contoh berikut menunjukkan query tipikal.

```
fields @timestamp, @message
| filter `detail-type` = "Chime Messaging AppInstanceBot Lex Failure"
| sort @timestamp desc
```

Jika Amazon Chime SDK Messaging dapat memanggil bot Amazon Lex V2 Anda, SDK akan mengirimkan `CONTROL` pesan dengan pesan kesalahan.

## Memecahkan masalah kesalahan izin bot Amazon Lex V2
<a name="lex-permission-errors"></a>

 AppInstanceBot Untuk memanggil Bot Amazon Lex V2, kepala layanan pesan Amazon Chime SDK harus memiliki izin untuk memanggil sumber daya Amazon Lex V2 Bot. Juga, pastikan kondisi kebijakan sumber daya sesuai dengan ARN dari. `AWS:SourceArn` AppInstanceBot

Untuk informasi selengkapnya tentang mengonfigurasi AppInstanceBot untuk memanggil bot Amazon Lex V2, lihat[Membuat bot Amazon Lex V2 untuk perpesanan Amazon Chime SDK](create-lex-bot.md), sebelumnya di bagian ini.

## Memecahkan masalah pelambatan bot Amazon Lex V2
<a name="lex-throttling"></a>

Amazon Lex memiliki kuota layanan untuk jumlah maksimum percakapan mode teks bersamaan per alias bot. Anda dapat menghubungi tim layanan Amazon Lex untuk kenaikan kuota. Untuk informasi selengkapnya, lihat [pedoman dan kuota Amazon Lex](https://docs.aws.amazon.com/lexv2/latest/dg/quotas.html) di *Panduan Pengembang Amazon Lex*.

# Mengelola retensi pesan untuk perpesanan Amazon Chime SDK
<a name="manage-retention"></a>

Pemilik akun dapat menggunakan Amazon Chime SDK APIs untuk mengaktifkan retensi pesan. Pesan dihapus secara otomatis berdasarkan periode waktu yang ditetapkan oleh administrator. Periode retensi dapat berlangsung dari satu hari hingga 15 tahun. Anda juga dapat menggunakan APIs untuk memperbarui periode penyimpanan pesan atau menonaktifkan penyimpanan pesan kapan saja.

**Topics**
+ [Contoh perintah retensi CLI](#retention-examples)
+ [Mengaktifkan retensi pesan](#enable-retention)
+ [Memulihkan dan menghapus pesan](#restore-and-delete)

## Contoh perintah retensi CLI
<a name="retention-examples"></a>

Contoh berikut menunjukkan perintah CLI khas untuk retensi:

**Mengaktifkan**

`aws chime-sdk-identity put-app-instance-retention-settings --app-instance-arn {appInstanceArn} --app-instance-retention-settings ChannelRetentionSettings={RetentionDays=60}`

**Memperbarui**

`aws chime-sdk-identity put-app-instance-retention-settings --app-instance-arn {appInstanceArn} --app-instance-retention-settings ChannelRetentionSettings={RetentionDays=30}`

**Menonaktifkan**

`aws chime-sdk-identity put-app-instance-retention-settings --app-instance-arn {appInstanceArn} --app-instance-retention-settings ChannelRetentionSettings={}`

## Mengaktifkan retensi pesan
<a name="enable-retention"></a>

Anda menggunakan Amazon Chime SDK APIs untuk mengaktifkan retensi pesan. Anda juga dapat menggunakan APIs untuk memperbarui periode penyimpanan pesan atau menonaktifkan penyimpanan pesan kapan saja. Untuk informasi selengkapnya tentang mengonfigurasi retensi pesan, lihat Referensi [API Amazon Chime SDK](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/Welcome.html).

## Memulihkan dan menghapus pesan
<a name="restore-and-delete"></a>

Anda dapat memulihkan pesan ke pengguna dalam waktu 30 hari setelah pengaturan atau memperbarui periode penyimpanan pesan. Namun, setelah masa tenggang 30 hari itu, semua pesan yang termasuk dalam periode penyimpanan dihapus secara permanen, dan pesan baru dihapus secara permanen segera setelah melewati periode penyimpanan.

**catatan**  
Selama masa tenggang 30 hari, jika Anda memperpanjang kebijakan penyimpanan, atau Anda mematikannya, pesan yang belum melewati periode penyimpanan baru akan terlihat lagi oleh pengguna di akun.

Pesan juga dihapus secara permanen ketika `AppInstanceUser` menghapus saluran atau pesan.

# Komponen antarmuka pengguna untuk perpesanan Amazon Chime SDK
<a name="ui-components"></a>

Anda dapat menggunakan pustaka komponen untuk mengurangi upaya yang diperlukan untuk membangun antarmuka pengguna untuk pesan obrolan. Lihat [Library Komponen Amazon Chime React](https://github.com/aws/amazon-chime-sdk-component-library-react) GitHub untuk informasi selengkapnya.

# Mengintegrasikan pesan Amazon Chime SDK dengan pustaka klien
<a name="integrate-client-library"></a>

Untuk menggunakan fitur perpesanan Amazon Chime SDK, Anda harus mengintegrasikan aplikasi klien Anda dengan pustaka klien berikut:
+ **AWS SDK** - Berisi APIs untuk mengirim pesan dan mengelola sumber daya.
+ **Pustaka klien Amazon Chime SDK untuk JavaScript (NPM)** — JavaScript Pustaka dengan definisi TypeScript tipe yang membantu Anda mengintegrasikan klien Anda dengan soket web perpesanan Amazon Chime SDK untuk menerima pesan.

Untuk mengintegrasikan aplikasi klien Anda dengan Amazon Chime SDK, lihat petunjuk di perpustakaan klien README.md, dan gunakan demo untuk mempelajari cara mempelajari cara membuat fitur pesan.

# Menggunakan pesan Amazon Chime SDK dengan JavaScript
<a name="use-javascript"></a>

Anda dapat menggunakannya JavaScript untuk mengelola sumber daya Amazon Chime SDK dan mengirim pesan. Untuk informasi selengkapnya, lihat [AWS JavaScript SDK](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Chime.html).

Anda juga dapat membuat sesi perpesanan di aplikasi klien untuk menerima pesan dari perpesanan Amazon Chime SDK. Untuk informasi selengkapnya, lihat [Menggunakan library klien Amazon Chime SDK](https://github.com/aws/amazon-chime-sdk-js/blob/master/README.md) untuk aktif. JavaScript GitHub