

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Desconectar programaticamente a sessão de chat de um widget de comunicação do Amazon Connect
<a name="programmatic-chat-disconnect"></a>

Você pode desconectar a sessão de bate-papo de um widget de comunicação programaticamente usando 'JavaScript chamando o `disconnect` método armazenado no widget. `iframe` No documento host do widget, você pode fazer referência à função `disconnect` usando o seguinte trecho de código: 

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

Você pode adicioná-lo facilmente ao script de widget existente. Veja a seguir um exemplo de trecho de código:

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

## Implementação e casos de uso
<a name="implementation-chat-disconnect"></a>

Desconectar chamadas programaticamente pode ser útil em vários casos. O método oferece maior controle sobre quando encerrar a conversa, além do clique manual no botão `End Chat`. Veja a seguir alguns casos de uso comuns de quando chamar `disconnect`.

### No encerramento ou na navegação
<a name="close-chat-disconnect"></a>

Um caso de uso comum seria anexar a funcionalidade de desconexão a eventos que são acionados quando o contexto do navegador ou da guia é encerrado. `pagehide` e `beforeunload` são os eventos comuns acionados ao encerrar o navegador. Eles são acionados quando um usuário atualiza, navega para um URL diferente ou fecha a guia ou o navegador. Embora os dois eventos sejam acionados quando o contexto do navegador é encerrado, não há garantia de que a função `disconnect` possa ser totalmente executada antes que os recursos do navegador sejam limpos.

`pagehide` é um evento de ciclo de vida de página mais moderno e comporta todos os principais navegadores e sistemas operacionais. `beforeunload` é um evento alternativo para tentar se o evento `pagehide` não chamar a desconexão de forma consistente. `beforeunload`é acionado antes de `pagehide`, o que pode proporcionar confiabilidade adicional caso a função `disconnect` não seja concluída antes que o navegador seja fechado. Houve problemas de confiabilidade em relação a `beforeunload`, principalmente em dispositivos iOS.

Veja a seguir um exemplo de trecho de código:

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

### Na alternância de contextos
<a name="context-chat-disconnect"></a>

Outro caso de uso seria acionar uma desconexão quando o usuário alterna contextos, como quando um usuário alterna ou minimiza tab/app ou bloqueia sua tela. O evento `visibilitychange` pode lidar de forma confiável com esses cenários em que o contexto não está mais visível.

Veja a seguir um exemplo de trecho de código:

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