

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Disconnettere a livello di programmazione la sessione di chat di un widget di comunicazione Amazon Connect
<a name="programmatic-chat-disconnect"></a>

È possibile disconnettere la sessione di chat di un widget di comunicazione a livello di codice utilizzando 'JavaScript chiamando il `disconnect` metodo memorizzato nel widget. `iframe` Dal documento host del widget, puoi fare riferimento alla funzione `disconnect` utilizzando il seguente frammento di codice: 

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

Puoi aggiungerlo facilmente allo script del widget esistente. Di seguito viene riportato un esempio di frammento di codice:

```
<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>
```

## Casi d’uso e di implementazione
<a name="implementation-chat-disconnect"></a>

La chiamata del metodo disconnect a livello di programmazione può essere utile in più casi. Fornisce un maggiore controllo sul momento in cui terminare la conversazione oltre a fare clic manualmente sul pulsante `End Chat`. Di seguito sono elencati alcuni casi d’uso comuni per la chiamata di `disconnect`.

### Chiusura o navigazione
<a name="close-chat-disconnect"></a>

Un caso d’uso comune può essere quello che prevede di collegare la funzionalità di disconnessione a eventi che si attivano quando il contesto del browser o della scheda viene eliminato. `pagehide` e `beforeunload` sono gli eventi comuni che vengono attivati quando si arresta il browser. Questi eventi vengono attivati quando un utente passa a un URL diverso oppure quando aggiorna o chiude la scheda o il browser. Sebbene entrambi gli eventi vengano attivati quando il contesto del browser viene eliminato, non vi è alcuna garanzia che la funzione `disconnect` possa essere eseguita completamente prima che avvenga la pulizia delle risorse del browser.

`pagehide` è un evento del ciclo di vita delle pagine più moderno ed è supportato da tutti i principali browser e sistemi operativi. `beforeunload` è un evento alternativo da provare se l’evento `pagehide` non riesce a chiamare il metodo disconnect in modo coerente. `beforeunload` viene attivato prima di `pagehide`, il che può garantire ulteriore affidabilità se la funzione `disconnect` non viene completata prima della chiusura del browser. Si sono verificati problemi di affidabilità con `beforeunload`, soprattutto sui dispositivi iOS.

Di seguito viene riportato un esempio di frammento di codice:

```
// 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();
});
```

### Cambio di contesto
<a name="context-chat-disconnect"></a>

Un altro caso d'uso potrebbe essere quello di attivare una disconnessione quando l'utente cambia contesto, ad esempio quando cambia o minimizza o blocca lo schermo. tab/app L’evento `visibilitychange` può gestire in modo affidabile questi scenari in cui il contesto non è più visibile.

Di seguito viene riportato un esempio di frammento di codice:

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