

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á.

# Integrar chamadas na aplicação, pela web, por vídeo e compartilhamento de tela de maneira nativa à sua aplicação
<a name="config-com-widget2"></a>

Para integrar chamadas na aplicação, pela web, por vídeo e compartilhamento de tela do Amazon Connect à sua aplicação:

1. Use a [StartWebRTCContact](https://docs.aws.amazon.com/connect/latest/APIReference/API_StartWebRTCContact.html)API Amazon Connect para criar o contato.

1. Em seguida, use os detalhes retornados pela chamada de API para participar da chamada usando a biblioteca Amazon Chime cliente para [iOS](https://github.com/aws/amazon-chime-sdk-ios), [Android](https://github.com/aws/amazon-chime-sdk-android) ou [JavaScript](https://github.com/aws/amazon-chime-sdk-js). 

Para acessar informações sobre a criação de participantes adicionais, consulte [Habilitar chamadas na aplicação, pela web e por vídeo com vários usuários](enable-multiuser-inapp.md). 

[Consulte o seguinte repositório do Github para exemplos de aplicativos: amazon-connect-in-app -calling-examples.](https://github.com/amazon-connect/amazon-connect-in-app-calling-examples) 

**Topics**
+ [Como um dispositivo cliente inicia uma chamada na aplicação ou na web](#diagram-option2)
+ [Conceitos básicos](#diagram-option2-gs)
+ [Etapas opcionais](#optional-steps)

## Como um dispositivo cliente inicia uma chamada na aplicação ou na web
<a name="diagram-option2"></a>

O diagrama a seguir mostra a sequência de eventos de um dispositivo cliente (aplicativo móvel ou navegador) para iniciar uma chamada na aplicação ou pela web.

![\[Um diagrama conceitual que mostra como um dispositivo cliente inicia uma chamada.\]](http://docs.aws.amazon.com/pt_br/connect/latest/adminguide/images/netra-gs-diagram.png)


1. O cliente usa a aplicação cliente (site ou aplicação) para iniciar uma chamada na aplicação ou na web.

1. O aplicativo cliente (site ou aplicativo móvel) ou servidor da web usa a Amazon Connect [StartWebRTCContact](https://docs.aws.amazon.com/connect/latest/APIReference/API_StartWebRTCContact.html)API para iniciar o contato, passando quaisquer atributos ou contexto para Amazon Connect o.

1. O aplicativo cliente ingressa na chamada usando os detalhes retornados [StartWebRTCContact](https://docs.aws.amazon.com/connect/latest/APIReference/API_StartWebRTCContact.html)na etapa 2.

1. (Opcional) O cliente usa a [CreateParticipantConnection](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html)API para receber uma `ConnectionToken` que é usada para enviar DTMF por meio da API. [SendMessage](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_SendMessage.html)

1. O contato atinge o fluxo é encaminhado com base no fluxo e colocado na fila.

1. O atendente aceita o contato.

1. (Opcional) Se o vídeo estiver habilitado para o cliente e o atendente, eles poderão iniciar o vídeo.

1. (Opcional - não mostrado no diagrama) Participantes adicionais podem ser adicionados usando o [CreateParticipant[CreateParticipantConnection](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html)](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipant.html) APIse. 

## Conceitos básicos
<a name="diagram-option2-gs"></a>

Estas são as etapas de alto nível para começar:

1. Use a [StartWebRTCContact](https://docs.aws.amazon.com/connect/latest/APIReference/API_StartWebRTCContact.html)API para criar o contato. A API exibe os detalhes necessários para que o SDK do Amazon Chime participe da chamada.

1. Instancie o objeto `MeetingSessionConfiguration` cliente do Amazon Chime SDK usando as configurações retornadas por. [StartWebRTCContact](https://docs.aws.amazon.com/connect/latest/APIReference/API_StartWebRTCContact.html)

1. Instancie `DefaultMeetingSession` cliente do SDK do Amazon Chime com `MeetingSessionConfiguration`, que foi criado na etapa 2 para criar uma sessão de reunião com o cliente. 
   + iOS

     ```
     let logger = ConsoleLogger(name: "logger") 
     let meetingSession = DefaultMeetingSession(
         configuration: meetingSessionConfig, 
         logger: logger
     )
     ```
   + Android

     ```
     val logger = ConsoleLogger()
     val meetingSession = DefaultMeetingSession(
         configuration = meetingSessionConfig,
         logger = logger,
         context = applicationContext
     )
     ```
   + JavaScript

     ```
     const logger = new ConsoleLogger('MeetingLogs', LogLevel.INFO);
     const deviceController = new DefaultDeviceController(logger);
     const configuration = new MeetingSessionConfiguration(
         meetingResponse, 
         attendeeResponse
     );
     const meetingSession = new DefaultMeetingSession(
         configuration, 
         logger, 
         deviceController
     );
     ```

1. Use o método `meetingSession.audioVideo.start()` para unir o contato WebRTC ao áudio.
   + iOS/Android

     ```
     meetingSession.audioVideo.start()
     ```
   + JavaScript

     ```
     await meetingSession.audioVideo.start();
     ```

1. Use o método `meetingSession.audioVideo.stop()` para desligar o contato WebRTC.
   + iOS/Android

     ```
     meetingSession.audioVideo.stop()
     ```
   + JavaScript

     ```
     meetingSession.audioVideo.stop();
     ```

## Etapas opcionais
<a name="optional-steps"></a>

Para operações adicionais e documentação abrangente da API, consulte os guias de visão geral de APIs específicas da plataforma:
+ **iOS**: [visão geral da API](https://aws.github.io/amazon-chime-sdk-ios/guides/api_overview.html).
+ **Android**: [visão geral da API](https://aws.github.io/amazon-chime-sdk-android/guides/api_overview.html)
+ **JavaScript**: [Visão geral da API](https://github.com/aws/amazon-chime-sdk-js/blob/main/guides/03_API_Overview.md)

### Enviar tons DTMF
<a name="send-dtmf-tones"></a>

Para enviar o DTMF para a chamada, APIs são necessários dois Amazon Connect Participant Service: [CreateParticipantConnection](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html)e respectivamente. [SendMessage](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_SendMessage.html)

**nota**  
`contentType`para a SendMessage API deve ser`audio/dtmf`.

1. Invoque [CreateParticipantConnection](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html)para recuperar`ConnectionToken`. (`ParticipantToken`é necessário para chamar essa API. Você pode encontrá-la na [StartWebRTCContact](https://docs.aws.amazon.com/connect/latest/APIReference/API_StartWebRTCContact.html)resposta.)

1. Com o`ConnectionToken`, ligue [SendMessage](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_SendMessage.html)para enviar dígitos DTMF.

### Selecionar dispositivos de áudio
<a name="select-audio-devices"></a>

Para selecionar o input/output dispositivo de áudio, você pode usar os métodos do cliente Amazon Chime SDK para Android e iOS ou os recursos nativos do [iOS para iOS](https://developer.apple.com/documentation/avkit/avroutepickerview).

**iOS/Android**

```
meetingSession.audioVideo.listAudioDevices()
meetingSession.audioVideo.chooseAudioDevice(mediaDevice)
```

**JavaScript**

```
await meetingSession.audioVideo.listAudioInputDevices();
await meetingSession.audioVideo.listAudioOutputDevices();
await meetingSession.audioVideo.startAudioInput(device);
await meetingSession.audioVideo.chooseAudioOutput(deviceId);
```

### Silenciar e ativar o áudio
<a name="mute-unmute-audio"></a>

Para ativar e desativar o som, use `meetingSession.audioVideo.realtimeLocalMute()` e `meetingSession.audioVideo.realtimeLocalUnmute()`.

**iOS/Android**

```
meetingSession.audioVideo.realtimeLocalMute()
meetingSession.audioVideo.realtimeLocalUnmute()
```

**JavaScript**

```
meetingSession.audioVideo.realtimeMuteLocalAudio();
meetingSession.audioVideo.realtimeUnmuteLocalAudio();
```

### Iniciar vídeo próprio
<a name="start-self-video"></a>

Para iniciar o vídeo próprio, use o `meetingSession.audioVideo.startLocalVideo()`. Consulte os guias de APIs da biblioteca cliente para acessar mais informações sobre como enumerar e escolher dispositivos específicos.

**iOS/Android**

```
meetingSession.audioVideo.startLocalVideo()
```

**JavaScript**

```
meetingSession.audioVideo.startLocalVideoTile();
```

### Parar vídeo próprio
<a name="stop-self-video"></a>

Para interromper o vídeo próprio, use o `meetingSession.audioVideo.stopLocalVideo()`.

**iOS/Android**

```
meetingSession.audioVideo.stopLocalVideo()
```

**JavaScript**

```
meetingSession.audioVideo.stopLocalVideoTile();
```

### Habilitar vídeo do atendente
<a name="enable-agent-video"></a>

Para permitir o recebimento e o carregamento de vídeo do atendente dentro da aplicação móvel, use `meetingSession.audioVideo.startRemoteVideo()`. Você também precisará implementar observadores de blocos de vídeo e vincular blocos de vídeo para exibir visualizações.

**iOS/Android**

```
meetingSession.audioVideo.startRemoteVideo()
// Implement VideoTileObserver to handle video tiles
meetingSession.audioVideo.addVideoTileObserver(observer)
// In videoTileDidAdd callback:
meetingSession.audioVideo.bindVideoView(videoView, tileId: tileState.tileId)
```

**JavaScript**

```
// Remote video is received automatically when available
// Implement AudioVideoObserver to handle video tiles
meetingSession.audioVideo.addObserver(observer);
// In videoTileDidUpdate callback:
meetingSession.audioVideo.bindVideoElement(tileId, videoElement);
```

Consulte os guias de SDKs específicos da plataforma para ver detalhes completos da implementação do bloco de vídeos.

### Desabilitar vídeo do atendente
<a name="disable-agent-video"></a>

Para não permitir o recebimento e o carregamento de vídeo do atendente dentro da aplicação móvel, use `meetingSession.audioVideo.stopRemoteVideo()`.

**iOS/Android**

```
meetingSession.audioVideo.stopRemoteVideo()
meetingSession.audioVideo.unbindVideoView(tileId)
```

**JavaScript**

```
meetingSession.audioVideo.unbindVideoElement(tileId);
```

### Usar mensagens de dados
<a name="use-data-messages"></a>

Você poderá usar [mensagens de dados](https://github.com/aws/amazon-chime-sdk-js/blob/main/guides/03_API_Overview.md#9-send-and-receive-data-messages-optional) se precisar enviar qualquer status do lado do atendente para o usuário final. Por exemplo, quando os clientes estão em espera, você pode enviar uma mensagem de dados ao aplicativo do cliente para exibir uma mensagem informando que eles estão em espera e que o video/screen compartilhamento ainda está sendo enviado, ou você pode desativar o video/screen compartilhamento.

**iOS/Android**

```
meetingSession.audioVideo.realtimeSendDataMessage(topic, data, lifetimeMs)
meetingSession.audioVideo.addRealtimeDataMessageObserver(topic, observer)
```

**JavaScript**

```
meetingSession.audioVideo.realtimeSendDataMessage(topic, data, lifetimeMs);
meetingSession.audioVideo.realtimeSubscribeToReceiveDataMessage(topic, callback);
```

### Ouvir eventos interrompidos
<a name="listen-for-stop-events"></a>

Você pode ouvir os eventos quando a participação de um contato termina por meio do observador `audioVideoDidStop`. Os códigos de status específicos podem variar de acordo com a plataforma.

#### A chamada atinge a capacidade
<a name="call-reaches-capacity"></a>

Quando mais de seis pessoas tentarem participar da chamada, outros participantes receberão o erro a seguir e não poderão participar até que outros saiam.
+ **iOS:** `MeetingSessionStatusCode.audioCallAtCapacity` ou `MeetingSessionStatusCode.audioAuthenticationRejected`
+ **Android:** `MeetingSessionStatusCode.AudioCallAtCapacity` ou `MeetingSessionStatusCode.AudioAuthenticationRejected`.
+ **JavaScript:** `MeetingSessionStatusCode.AudioCallAtCapacity` ou `MeetingSessionStatusCode.AudioAuthenticationRejected`

#### Participante removido da chamada
<a name="participant-removed-from-call"></a>

Quando um participante é removido da chamada pelo atendente, mas o contato continua para outros participantes, ele recebe o código de status a seguir. Observe que, se a remoção do participante causar o término do contato, ele receberá esse status ou o status de término do contato.
+ **iOS:** `MeetingSessionStatusCode.audioServerHungup` ou `MeetingSessionStatusCode.audioAuthenticationRejected`
+ **Android:** `MeetingSessionStatusCode.AudioServerHungup` ou `MeetingSessionStatusCode.AudioAuthenticationRejected`.
+ **JavaScript:** `MeetingSessionStatusCode.AudioAttendeeRemoved` ou `MeetingSessionStatusCode.AudioAuthenticationRejected`

#### Fim do contato
<a name="contact-ends"></a>

Quando o contato real terminar completamente para todos os participantes, eles receberão o código de status a seguir.
+ **iOS:** `MeetingSessionStatusCode.audioCallEnded`
+ **Android:** `MeetingSessionStatusCode.AudioCallEnded`
+ **JavaScript:** `MeetingSessionStatusCode.AudioCallEnded`