

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Native Integration von In-App-, Web- und Videoanrufen sowie Bildschirmfreigabe-Funktionen in Ihre mobile Anwendung
<a name="config-com-widget2"></a>

So integrieren Sie In-App-, Web- und Videoanrufe sowie Bildschirmfreigabe-Funktionen von Amazon Connect in Ihre Anwendung:

1. Verwenden Sie die Amazon Connect [StartWebRTCContact](https://docs.aws.amazon.com/connect/latest/APIReference/API_StartWebRTCContact.html)Connect-API, um den Kontakt zu erstellen.

1. Verwenden Sie dann die vom API-Aufruf zurückgegebenen Details, um dem Anruf mithilfe der Amazon Chime Clientbibliothek für [iOS](https://github.com/aws/amazon-chime-sdk-ios), [Android](https://github.com/aws/amazon-chime-sdk-android) oder beizutreten [JavaScript](https://github.com/aws/amazon-chime-sdk-js). 

Informationen zum Erstellen von weiteren Teilnehmern finden Sie unter [Aktivieren von In-App-, Web- und Videoanrufen für mehrere Benutzer](enable-multiuser-inapp.md). 

Beispielanwendungen finden Sie im folgenden Github-Repository: [amazon-connect-in-app-calling-examples](https://github.com/amazon-connect/amazon-connect-in-app-calling-examples). 

**Topics**
+ [So leitet ein Client-Gerät einen In-App- oder Webanruf ein](#diagram-option2)
+ [Erste Schritte](#diagram-option2-gs)
+ [Optionale Schritte:](#optional-steps)

## So leitet ein Client-Gerät einen In-App- oder Webanruf ein
<a name="diagram-option2"></a>

Das folgende Diagramm zeigt die Reihenfolge der Ereignisse, wenn ein Client-Gerät (mobile Anwendung oder Browser) einen In-App- oder Webanruf einleitet.

![Konzeptionelles Diagramm, das zeigt, wie ein Client-Gerät einen Anruf einleitet.](http://docs.aws.amazon.com/de_de/connect/latest/adminguide/images/netra-gs-diagram.png)


1. Ihr Kunde verwendet die Client-Anwendung (Website oder Anwendung), um einen In-App- oder Webanruf zu starten.

1. Die Client-Anwendung (Website oder mobile Anwendung) oder der Webserver verwendet die Connect Customer [StartWebRTCContact](https://docs.aws.amazon.com/connect/latest/APIReference/API_StartWebRTCContact.html)API, um den Kontakt zu starten und übergibt Attribute oder Kontext an. Connect Customer

1. Die Client-Anwendung nimmt mithilfe der [StartWebRTCContact](https://docs.aws.amazon.com/connect/latest/APIReference/API_StartWebRTCContact.html)in Schritt 2 zurückgegebenen Details am Anruf teil.

1. (Optional) Der Client verwendet die [CreateParticipantConnection](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html)API, um eine zu empfangen`ConnectionToken`, die zum Senden von DTMF über die [SendMessage](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_SendMessage.html)API verwendet wird.

1. Der Kontakt erreicht den Flow und wird basierend auf dem Flow weitergeleitet und in die Warteschlange gestellt.

1. Der Kundendienstmitarbeiter akzeptiert den Kontakt.

1. (Optional) Wenn Video für den Kunden und den Kundendienstmitarbeiter aktiviert ist, können sie ihr Video starten.

1. (Optional — nicht im Diagramm dargestellt) Zusätzliche Teilnehmer können mit dem [CreateParticipant](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipant.html)und [CreateParticipantConnection](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html) APIshinzugefügt werden. 

## Erste Schritte
<a name="diagram-option2-gs"></a>

Im Folgenden sind die allgemeinen Schritte für den Einstieg aufgeführt:

1. Verwenden Sie die [StartWebRTCContact](https://docs.aws.amazon.com/connect/latest/APIReference/API_StartWebRTCContact.html)API, um den Kontakt zu erstellen. Die API gibt die erforderlichen Details zurück, damit der Amazon Chime SDK Client am Anruf teilnehmen kann.

1. Instanziieren Sie das Amazon Chime `MeetingSessionConfiguration` SDK-Client-Objekt mithilfe der von zurückgegebenen Konfigurationen. [StartWebRTCContact](https://docs.aws.amazon.com/connect/latest/APIReference/API_StartWebRTCContact.html)

1. Instanziieren Sie den Amazon-Chime-SDK-Client `DefaultMeetingSession` mit dem Parameter `MeetingSessionConfiguration`, der in Schritt 2 erstellt wurde, um eine Client-Besprechungssitzung zu erstellen. 
   + 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. Verwenden Sie die Methode `meetingSession.audioVideo.start()`, um den WebRTC-Kontakt mit Audio zu verbinden.
   + iOS/Android

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

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

1. Verwenden Sie die Methode `meetingSession.audioVideo.stop()`, um aufzulegen und den WebRTC-Kontakt zu beenden.
   + iOS/Android

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

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

## Optionale Schritte:
<a name="optional-steps"></a>

Weitere Vorgänge und eine umfassende API-Dokumentation finden Sie in den plattformspezifischen API-Übersichtsleitfäden:
+ **iOS**: [API-Übersicht](https://aws.github.io/amazon-chime-sdk-ios/guides/api_overview.html)
+ **Android**: [API-Übersicht](https://aws.github.io/amazon-chime-sdk-android/guides/api_overview.html)
+ **JavaScript**[: API-Übersicht](https://github.com/aws/amazon-chime-sdk-js/blob/main/guides/03_API_Overview.md)

### Senden von DTMF-Tönen
<a name="send-dtmf-tones"></a>

Um DTMF an den Anruf zu senden, APIs sind zwei Amazon Connect Participant Service erforderlich: [CreateParticipantConnection](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html)und [SendMessage](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_SendMessage.html)jeweils.

**Anmerkung**  
`contentType`für die SendMessage API muss es sein. `audio/dtmf`

1. Zum Abrufen [CreateParticipantConnection](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html)aufrufen`ConnectionToken`. (`ParticipantToken`wird für den Aufruf dieser API benötigt. Sie finden es in der [StartWebRTCContact](https://docs.aws.amazon.com/connect/latest/APIReference/API_StartWebRTCContact.html)Antwort.)

1. Rufen Sie mit dem `ConnectionToken` [SendMessage](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_SendMessage.html)zum Senden von DTMF-Ziffern auf.

### Auswählen von Audiogeräten
<a name="select-audio-devices"></a>

Um das input/output Audiogerät auszuwählen, können Sie die Methoden des Amazon Chime SDK-Clients für Android und iOS oder die [nativen iOS-Funktionen für iOS](https://developer.apple.com/documentation/avkit/avroutepickerview) verwenden.

**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);
```

### Stummschalten von Audio und Aufheben der Audiostummschaltung
<a name="mute-unmute-audio"></a>

Verwenden Sie zum Stummschalten und Aufheben der Stummschaltung `meetingSession.audioVideo.realtimeLocalMute()` und `meetingSession.audioVideo.realtimeLocalUnmute()`.

**iOS/Android**

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

**JavaScript**

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

### Starten des eigenen Videos
<a name="start-self-video"></a>

Um das eigene Video zu starten, verwenden Sie den Parameter `meetingSession.audioVideo.startLocalVideo()`. Weitere Informationen zum Auflisten und Auswählen bestimmter Geräte finden Sie in den API-Anleitungen zur Clientbibliothek.

**iOS/Android**

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

**JavaScript**

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

### Stoppen des eigenen Videos
<a name="stop-self-video"></a>

Um das eigene Video zu stoppen, verwenden Sie den Parameter `meetingSession.audioVideo.stopLocalVideo()`.

**iOS/Android**

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

**JavaScript**

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

### Aktivieren des Kundendienstmitarbeiter-Videos
<a name="enable-agent-video"></a>

Verwenden Sie den Parameter `meetingSession.audioVideo.startRemoteVideo()`, um das Empfangen und Laden von Videos des Kundendienstmitarbeiters in der Anwendung zuzulassen. Sie müssen außerdem den Parameter „VideoTileObserver“ implementieren und Videokacheln an Anzeigeansichten binden.

**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);
```

Umfassende Informationen zur Implementierung von Videokacheln finden Sie in den plattformspezifischen SDK-Anleitungen.

### Deaktivieren des Kundendienstmitarbeiter-Videos
<a name="disable-agent-video"></a>

Verwenden Sie den Parameter `meetingSession.audioVideo.stopRemoteVideo()`, um das Empfangen und Laden von Videos des Kundendienstmitarbeiters in der Anwendung nicht zuzulassen.

**iOS/Android**

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

**JavaScript**

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

### Verwenden von Datennachrichten
<a name="use-data-messages"></a>

Sie können [Datennachrichten](https://github.com/aws/amazon-chime-sdk-js/blob/main/guides/03_API_Overview.md#9-send-and-receive-data-messages-optional) verwenden, wenn Sie einen beliebigen Status des Kundendienstmitarbeiters an den Endbenutzer senden müssen. Wenn sich Kunden beispielsweise in der Warteschleife befinden, können Sie eine Datennachricht an die Anwendung des Kunden senden, um ihn darüber zu informieren, dass er sich in der Warteschleife befindet und das video/screen Teilen weiterhin gesendet wird, oder Sie können das video/screen Teilen deaktivieren.

**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);
```

### Hören von Stoppereignissen
<a name="listen-for-stop-events"></a>

Sie können über den Beobachter `audioVideoDidStop` nach Ereignissen hören, wenn die Teilnahme eines Kontakts endet. Spezifische Statuscodes können je nach Plattform variieren.

#### Anruf erreicht Kapazität
<a name="call-reaches-capacity"></a>

Wenn mehr als 6 Personen versuchen, am Anruf teilzunehmen, wird weiteren Teilnehmer die folgende Fehlermeldung angezeigt. Sie können erst teilnehmen, wenn andere Teilnehmer den Anruf beenden.
+ **iOS:** `MeetingSessionStatusCode.audioCallAtCapacity` oder `MeetingSessionStatusCode.audioAuthenticationRejected`
+ **Android:** `MeetingSessionStatusCode.AudioCallAtCapacity` oder `MeetingSessionStatusCode.AudioAuthenticationRejected`
+ **JavaScript:** `MeetingSessionStatusCode.AudioCallAtCapacity` oder `MeetingSessionStatusCode.AudioAuthenticationRejected`

#### Teilnehmer wurde aus Anruf entfernt
<a name="participant-removed-from-call"></a>

Wenn ein Teilnehmer vom Kundendienstmitarbeiter aus dem Anruf entfernt wird, der Kontakt jedoch für andere Teilnehmer weitergeführt wird, wird ihnen der folgende Statuscode angezeigt. Beachten Sie, wenn die Entfernung des Teilnehmers zum Beenden des Kontakts führt, wird ihm entweder dieser Status oder der Status „Kontakt beendet“ angezeigt.
+ **iOS:** `MeetingSessionStatusCode.audioServerHungup` oder `MeetingSessionStatusCode.audioAuthenticationRejected`
+ **Android:** `MeetingSessionStatusCode.AudioServerHungup` oder `MeetingSessionStatusCode.AudioAuthenticationRejected`
+ **JavaScript:** `MeetingSessionStatusCode.AudioAttendeeRemoved` oder `MeetingSessionStatusCode.AudioAuthenticationRejected`

#### Kontakt beendet
<a name="contact-ends"></a>

Wenn der tatsächliche Kontakt für alle Teilnehmer vollständig beendet wird, wird ihnen der folgende Statuscode angezeigt.
+ **iOS:** `MeetingSessionStatusCode.audioCallEnded`
+ **Android:** `MeetingSessionStatusCode.AudioCallEnded`
+ **JavaScript:** `MeetingSessionStatusCode.AudioCallEnded`