

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

# Putuskan sambungan sesi obrolan widget komunikasi Amazon Connect secara terprogram
<a name="programmatic-chat-disconnect"></a>

Anda dapat memutuskan sesi obrolan widget komunikasi secara terprogram menggunakan 'JavaScript dengan memanggil `disconnect` metode yang disimpan ke widget. `iframe` Dari dokumen host widget, Anda dapat mereferensikan `disconnect` fungsi menggunakan cuplikan kode berikut: 

```
document.getElementById("amazon-connect-chat-widget-iframe").contentWindow.connect.ChatSession.disconnect()
```

Anda dapat dengan mudah menambahkannya ke skrip widget yang ada. Berikut ini adalah contoh cuplikan kode:

```
<script type="text/javascript">
  (function(w, d, x, id){
    s=d.createElement('script');
    s.src='https://{{your-instance-alias}}.my.connect.aws/connectwidget/static/amazon-connect-chat-interface-client.js';
    s.async=1;
    s.id=id;
    d.getElementsByTagName('head')[0].appendChild(s);
    w[x] =  w[x] || function() { (w[x].ac = w[x].ac || []).push(arguments) };
  })(window, document, 'amazon_connect', '...');
  amazon_connect('styles', { iconType: 'CHAT', openChat: { color: '#ffffff', backgroundColor: '#123456' }, closeChat: { color: '#ffffff', backgroundColor: '#123456'} });
  amazon_connect('snippetId', '...');
  amazon_connect('supportedMessagingContentTypes', [ 'text/plain', 'text/markdown', 'application/vnd.amazonaws.connect.message.interactive', 'application/vnd.amazonaws.connect.message.interactive.response' ]);
 
  // Add disconnect event listener
  window.addEventListener("pagehide", () => {
      document.getElementById("amazon-connect-chat-widget-iframe").contentWindow.connect.ChatSession.disconnect();
  });
</script>
```

## Kasus implementasi dan penggunaan
<a name="implementation-chat-disconnect"></a>

Memanggil disconnect secara terprogram dapat berguna dalam banyak kasus. Ini memberikan kontrol lebih pada kapan harus menghentikan percakapan di luar mengklik `End Chat` tombol secara manual. Berikut adalah beberapa kasus penggunaan umum kapan harus menelepon`disconnect`.

### Pada jarak dekat atau navigasi
<a name="close-chat-disconnect"></a>

Kasus penggunaan yang umum adalah melampirkan fungsionalitas pemutusan ke peristiwa yang diaktifkan ketika konteks browser atau tab dihancurkan. `pagehide`dan `beforeunload` merupakan peristiwa umum yang ditembakkan saat merobohkan browser. Ini dipicu ketika pengguna menyegarkan, menavigasi ke URL yang berbeda atau menutup tab atau browser. Meskipun kedua peristiwa diaktifkan ketika konteks browser dihancurkan, tidak ada jaminan bahwa `disconnect` fungsi tersebut dapat sepenuhnya dijalankan sebelum sumber daya browser dibersihkan.

`pagehide`adalah acara siklus hidup halaman yang lebih modern dan didukung di semua browser utama dan sistem operasi. `beforeunload`adalah acara alternatif untuk dicoba jika `pagehide` acara gagal memanggil pemutusan sambungan secara konsisten. `beforeunload`dipicu sebelumnya `pagehide` yang dapat memberikan keandalan tambahan jika `disconnect` fungsi gagal untuk menyelesaikan sebelum browser ditutup. Ada masalah keandalan `beforeunload` terutama pada perangkat iOS.

Berikut ini adalah contoh cuplikan kode:

```
// Call disconnect when `beforeunload` triggers
window.addEventListener("beforeunload", (event) => {
    document.getElementById("amazon-connect-chat-widget-iframe").contentWindow.connect.ChatSession.disconnect();
});

// Call disconnect when `pagehide` triggers
window.addEventListener("pagehide", (event) => {
    document.getElementById("amazon-connect-chat-widget-iframe").contentWindow.connect.ChatSession.disconnect();
});
```

### Pada peralihan konteks
<a name="context-chat-disconnect"></a>

Kasus penggunaan lainnya adalah memicu pemutusan ketika pengguna beralih konteks seperti ketika pengguna beralih atau meminimalkan atau mengunci layar mereka. tab/app `visibilitychange`Acara ini dapat menangani skenario ini dengan andal di mana konteksnya tidak lagi terlihat.

Berikut ini adalah contoh cuplikan kode:

```
window.addEventListener("visibilitychange", () => {
    if (document.visibilityState === "hidden") {
        document.getElementById("amazon-connect-chat-widget-iframe").contentWindow.connect.ChatSession.disconnect();
    } else if (document.visibilityState === "visible") {
        ...
    }
});
```