

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.

# Erfahren Sie mehr über die Telefonieereignisse, die AWS Lambda Funktionen für den Amazon Chime SDK PSTN-Audiodienst aufrufen
<a name="invoking-Lambda"></a>

Der Audiodienst ruft AWS Lambda Funktionen als Reaktion auf verschiedene Ereignisse auf. Jeder Aufruf spezifiziert einen Aufrufereignistyp und stellt die Anrufdetails bereit, einschließlich der Teilnehmer, falls zutreffend. In den folgenden Themen werden die Audio Service-Ereignisse beschrieben, die Funktionen aufrufen AWS Lambda . 

# Einen ausgehenden Anruf für die Nutzung des Amazon Chime SDK PSTN-Audiodienstes tätigen
<a name="use-create-call-api"></a>

Um einen ausgehenden Anruf zu erstellen, verwenden Sie die API. [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html) Die API ruft den Endpunkt eines bestimmten Objekts auf. `SIP media application ID` Kunden können den Ablauf des Anrufs steuern, indem sie vom Endpunkt aus unterschiedliche Signale und [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_SipMediaApplication.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_SipMediaApplication.html)Aktionen ausführen. 

Im Falle einer erfolgreichen Antwort gibt die API den HTTP-Statuscode 202 zusammen mit einer TransactionID zurück, die Sie zusammen mit der [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html)API verwenden können, um einen laufenden Anruf zu aktualisieren.

Das folgende Diagramm zeigt die Aufrufe des AWS Lambda Funktionsendpunkts für einen ausgehenden Aufruf.

![\[Diagramm, das den Programmierablauf für Aufrufe an den AWS Lambda Lambda-Endpunkt zeigt.\]](http://docs.aws.amazon.com/de_de/chime-sdk/latest/dg/images/sip-api-1.png)


Der für die SIP-Medienanwendung konfigurierte Endpunkt wird für verschiedene Status des ausgehenden Anrufs aufgerufen. Wenn ein Kunde einen Anruf einleitet, ruft das Amazon Chime SDK den Endpunkt mit einem `NEW_OUTBOUND_CALL` Aufrufereignistyp auf. 

Dieses Beispiel zeigt ein typisches Aufrufereignis für a. `NEW_OUTBOUND_CALL`

```
{
    "SchemaVersion": "1.0",
        "Sequence": 1,
        "InvocationEventType": "NEW_OUTBOUND_CALL",
        "CallDetails": {
            "TransactionId": "transaction-id",
            "AwsAccountId": "aws-account-id",
            "AwsRegion": "us-east-1",
            "SipApplicationId": "sip-application-id",
            "Participants": [
                {
                    "CallId": "call-id-1",
                    "ParticipantTag": "LEG-A",
                    "To": "+1xxxx",
                    "From": "+1xxxxxxx",
                    "Direction": "Outbound",
                    "StartTimeInMilliseconds": "159700958834234"
                }
            ]
    }
}
```

Jede Antwort auf einen ereignisbezogenen AWS Lambda Aufruf wird ignoriert.

Wenn wir eine `RINGING` Benachrichtigung vom Empfänger erhalten, ruft das Amazon Chime SDK den konfigurierten Endpunkt erneut auf. 

Dieses Beispiel zeigt ein typisches Aufrufereignis für. `RINGING`

```
{
    "SchemaVersion": "1.0",
        "Sequence": 1,
        "InvocationEventType": "RINGING",
        "CallDetails": {
            "TransactionId": "transaction-id",
            "AwsAccountId": "aws-account-id",
            "AwsRegion": "us-east-1",
            "SipApplicationId": "sip-application-id",
            "Participants": [
                {
                    "CallId": "call-id-1",
                    "ParticipantTag": "LEG-A",
                    "To": "+1xxxx",
                    "From": "+1xxxxxxx",
                    "Direction": "Outbound",
                    "StartTimeInMilliseconds": "159700958834234"
                }
           ]
    }
}
```

Jede Antwort auf einen ereignisbezogenen AWS Lambda Aufruf wird ignoriert.

Wenn der Empfänger den Anruf nicht beantwortet oder der Anruf aufgrund eines Fehlers fehlschlägt, unterbricht Chime den Anruf und ruft den Endpunkt mit dem Ereignistyp auf. `Hangup` Weitere Informationen zum `Hangup` Ereignistyp finden Sie unter. [Beenden eines Anrufs mithilfe des Amazon Chime SDK PSTN-Audiodienstes](case-5.md) 

Wenn der Anruf entgegengenommen wird, ruft Chime den Endpunkt mit der `CALL_ANSWERED` Aktion auf. Dieses Beispiel zeigt ein typisches Aufrufereignis.

```
{
  "SchemaVersion": "1.0",
    "Sequence": 1,
    "InvocationEventType": "CALL_ANSWERED",
    "CallDetails": {
        ""TransactionId": "transaction-id",
            "AwsAccountId": "aws-account-id",
            "AwsRegion": "us-east-1",
            "SipApplicationId": "sip-application-id",
            "Participants": [
                {
                    "CallId": "call-id-1",
                    "ParticipantTag": "LEG-A",
                    "To": "+1xxxx",
                    "From": "+1xxxxxxx",
                    "Direction": "Outbound",
                    "StartTimeInMilliseconds": "159700958834234",
                "Status": "Connected"
            }
        ]
    }
}
```

An diesem Punkt können Sie Aktionen zurückgeben, indem Sie auf den Aufruf mit einer Aktionsliste antworten. Wenn Sie keine Aktionen ausführen möchten, antworten Sie mit einer leeren Liste. Sie können mit maximal 10 Aktionen für jeden AWS Lambda Aufruf antworten und eine Lambda-Funktion 1.000 Mal pro Aufruf aufrufen. Weitere Informationen zum Antworten mit Gruppen von Aktionen finden Sie unter. [Beantworten von Aufrufen mit Aktionslisten mithilfe des Amazon Chime SDK PSTN-Audiodienstes](invoke-on-call-leg.md)

# Empfangen eines eingehenden Anrufs über den Amazon Chime SDK PSTN-Audiodienst
<a name="case-1"></a>

Wenn ein `NEW_INCOMING_CALL` Ereignis eintritt, erstellt der Audiodienst ein eindeutiges `TransactionID` und einzigartiges Ereignis, das so lange fortbesteht`CallID`, bis das `HANGUP` Ereignis eintritt.

Sie können auf verschiedene Arten auf ein `NEW_INCOMING_CALL` Ereignis reagieren. Beispiel:
+ Senden Sie `PlayAudio` unsere `RecordAudio` Aktionen und nehmen Sie den Anruf automatisch entgegen. 
+ Eine `Pause` Aktion senden.
+ Senden Sie eine `Hangup` Aktion. In diesem Fall wird der Anruf nicht beantwortet und dem Kunden wird nichts berechnet.
+ Senden Sie eine `CallAndBridge` Aktion und fügen Sie dem Anruf einen weiteren Benutzer hinzu.
+ Tun Sie nichts, der Anrufversuch läuft nach 30 Sekunden ab.

Wenn ein neuer eingehender Anruf eingeht, ruft die SIP-Medienanwendung eine AWS Lambda Funktion mit dieser Nutzlast auf.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 2,
    "InvocationEventType": "NEW_INBOUND_CALL"
    "CallDetails": {
        "TransactionId": "transaction-id",
        "AwsAccountId": "aws-account-id",
        "AwsRegion": "us-east-1",
        "SipRuleId": "sip-rule-id",
        "SipApplicationId": "sip-application-id",
        "Participants": [
            {
                "CallId": "call-id-1",
                "ParticipantTag": "LEG-A",
                "To": "+12065551212",
                "From": "+15105550101",
                "Direction": "Inbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Connected"
            }
        ]
    }
}
```

# Angeben von Aktionen als Reaktion auf Telefonieereignisse für den Amazon Chime SDK PSTN-Audiodienst
<a name="use-case-2"></a>

Im Audiodienst rufen SIP-Medienanwendungen AWS Lambda Funktionen auf. Eine Lambda-Funktion kann wiederum eine Liste von Anweisungen zurückgeben, die als *Aktionen* bezeichnet werden. Eine Aktion ist ein Element, das Sie im Anschluss an einen Telefonanruf ausführen möchten, z. B. das Senden oder Empfangen von Ziffern, die Teilnahme an einer Besprechung usw. Weitere Informationen zu den vom PSTN-Audiodienst aufgerufenen Aktionen finden Sie unter. [Grundlegendes zu Telefonieereignissen für den Amazon Chime SDK PSTN-Audioservice](pstn-invocations.md)

Wenn eine SIP-Medienanwendung erfolgreich eine Liste von Aktionen ausführt, ruft die Anwendung die AWS Lambda Funktion mit dem Aufrufereignistyp auf. `ACTION_SUCCESSFUL` Wenn eine der Aktionen nicht abgeschlossen werden kann, ruft die SIP-Medienanwendung die AWS Lambda Funktion mit dem `ACTION_FAILED` Ereignis auf.

Die SIP-Medienanwendung kehrt nur zurück, `ACTION_SUCCESSFUL` wenn alle Aktionen auf der Liste erfolgreich waren. Wenn eine der Aktionen in der Liste fehlschlägt, ruft die SIP-Medienanwendung die AWS Lambda Funktion mit dem `ACTION_FAILED` Ereignis auf und löscht die verbleibenden Aktionen in der Liste nach der fehlgeschlagenen Aktion. Anschließend führt die SIP-Medienanwendung die nächste Aktion aus, die von der AWS Lambda Funktion zurückgegeben wird. Sie verwenden den `ActionData` Schlüssel, um zu identifizieren, welcher Aufruf die Funktion aufgerufen hat.

Das folgende Ereignis zeigt eine Beispielnutzlast für den `ACTION_SUCCESSFUL` Aufrufereignistyp nach einer Aktion. `PlayAudioAndGetDigits`

```
{
    "SchemaVersion": "1.0",
    "Sequence": 3,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
        "Type": "PlayAudioAndGetDigits",
        "Parameters" : {
            "CallId": "call-id-1",
            "AudioSource": {
                "Type": "S3",
                "BucketName": "bucket-name",
                "Key": "failure-audio-file.wav"
            },
            "FailureAudioSource": {
                "Type": "S3",
                "BucketName": "bucket-name",
                "Key": "failure-audio-file.wav"
            },
            "MinNumberOfDigits": 3,
            "MaxNumberOfDigits": 5,
            "TerminatorDigits": ["#"],
            "InBetweenDigitsDurationInMilliseconds": 5000,
            "Repeat": 3,
            "RepeatDurationInMilliseconds": 10000
        },
        "ReceivedDigits": "123"
    }
    "CallDetails": {
        "TransactionId": "transaction-id",
        "AwsAccountId": "aws-account-id",
        "AwsRegion": "us-east-1",
        "SipRuleId": "sip-rule-id",
        "SipApplicationId": "sip-application-id",
        "Participants": [
            {
                "CallId": "call-id-1",
                "ParticipantTag": "LEG-A",
                "To": "+12065551212",
                "From": "+15105550101",
                "Direction": "Inbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Connected"
                }
            ]
        }
    }
}
```

Wenn eine Aktion in einer Liste nicht erfolgreich abgeschlossen werden kann, ruft die SIP-Medienanwendung die AWS Lambda Funktion auf, um Sie über den Fehler zu informieren und neue Aktionen für diesen Anruf auszuführen. Das folgende Ereignis zeigt die Beispielnutzlast für den `ACTION_FAILED` Aufrufereignistyp nach einer Aktion. `PlayAudio`

```
{
    "SchemaVersion": "1.0",
    "Sequence": 4,
    "InvocationEventType": "ACTION_FAILED",
    "ActionData": {
        "Type": "PlayAudio",
        "Parameters" : {
            "CallId": "call-id-1",
            "AudioSource": {
                "Type": "S3",
                "BucketName": "bucket-name",
                "Key": "audio-file.wav"            
            }
        },
        "ErrorType": "InvalidAudioSource",
        "ErrorMessage": "Audio Source parameter value is invalid."
    }
    "CallDetails": {
        "TransactionId": "transaction-id",
        "AwsAccountId": "aws-account-id",
        "AwsRegion": "us-east-1",
        "SipRuleId": "sip-rule-id",
        "SipApplicationId": "sip-application-id",
        "Participants": [
            {
                "CallId": "call-id-1",
                "ParticipantTag": "LEG-A",
                "To": "+12065551212",
                "From": "+15105550101",
                "Direction": "Inbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Connected"
            }
        ]
    }
}
}
```

# Empfangen von Anrufereingaben für den Amazon Chime SDK PSTN-Audiodienst
<a name="case-4"></a>

Sie verwenden die `ReceiveDigits` Aktion, um eingehende DTMF-Ziffern zu sammeln und sie mit einem regulären Ausdruck abzugleichen. Wenn die SIP-Medienanwendung Ziffern empfängt, die dem regulären Ausdruck entsprechen, ruft sie eine AWS Lambda Funktion mit einem Ereignis auf. `ACTION_SUCCESSFUL` Die gesammelten Ziffern erscheinen im `ReceivedDigits` Wert im `ActionData` Objekt.

Beispiel:

```
{
    "SchemaVersion": "1.0",
    "Sequence": 4,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
        "ReceivedDigits": "",
        "Type": "ReceiveDigits",
        "Parameters": {
            "CallId": "call-id-1",
            "InputDigitsRegex": "^\d{2}#$",
            "InBetweenDigitsDurationInMilliseconds": 5000,
            "FlushDigitsDurationInMilliseconds": 10000
        }
    },
    "CallDetails": {
        "TransactionId": "transaction-id",
        "AwsAccountId": "aws-account-id",
        "AwsRegion": "us-east-1",
        "SipRuleId": "sip-rule-id",
        "SipApplicationId": "sip-application-id",
        "Participants": [
            {
                "CallId": "call-id-1",
                "ParticipantTag": "LEG-A",
                "To": "+12065551212",
                "From": "+15105550101",
                "Direction": "Inbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Connected"
            }
        ]
    }
}
```

Sobald der Anrufer Ziffern eingibt, die Ihrem Muster für reguläre Ausdrücke entsprechen, ruft die SIP-Medienanwendung eine AWS Lambda Funktion auf, die den folgenden Payload-Typ zurückgibt:

```
{
    "SchemaVersion": "1.0",
    "Sequence": 5,
    "InvocationEventType": "DIGITS_RECEIVED",
    "ActionData": {
        "ReceivedDigits": "11#",
        "Type": "ReceiveDigits",
        "Parameters": {
            "CallId": "call-id-1",
            "InputDigitsRegex": "^\d{2}#$",
            "InBetweenDigitsDurationInMilliseconds": 5000,
            "FlushDigitsDurationInMilliseconds": 10000
        }
    },
    "CallDetails": {
        "TransactionId": "transaction-id",
        "AwsAccountId": "aws-account-id",
        "AwsRegion": "us-east-1",
        "SipRuleId": "sip-rule-id",
        "SipApplicationId": "sip-application-id",
        "Participants": [
            {
                "CallId": "call-id-1",
                "ParticipantTag": "LEG-A",
                "To": "+12065551212",
                "From": "+15105550101",
                "Direction": "Inbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Connected"
            }
        ]
    }
}
```

[Ein funktionierendes Beispiel finden Sie unter: -demand-recording GitHub https://github.com/aws-samples/ amazon-chime-sma-on](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)

# Aktualisierung laufender Anrufe für Amazon Chime SDK PTSN-Audio
<a name="update-sip-call"></a>

Als Teil des PSTN-Audiodienstes können Sie mit SIP-Medienanwendungen Aktionen festlegen, die bei einem Anruf ausgeführt werden, indem Sie benutzerdefinierte Lambda-Funktionen aufrufen, die auf den Anrufereignissen basieren, z. B. einem eingehenden Anruf oder DTMF-Ziffern. Die [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html)Mit der API können Sie jederzeit eine Lambda-Funktion auslösen, während ein Aufruf aktiv ist. Dabei werden die aktuellen Aktionen durch neue Aktionen ersetzt, die vom Aufruf zurückgegeben werden.

**Workflow**  
Sie verwenden die [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html)API in einer Vielzahl von Fällen, z. B. beim Hinzufügen von Teilnehmern zu einem Meeting, beim Stummschalten und Aufheben der Stummschaltung von Benutzern, beim Trennen der Verbindung usw. Der folgende Anwendungsfall beschreibt einen typischen Arbeitsablauf.

Ein Benutzer ruft an und hört Musik, während das Amazon Chime SDK das Meeting einrichtet. Sobald die Einrichtung abgeschlossen ist, stoppt das Amazon Chime SDK die Audiowiedergabe und lässt den Anrufer zur Besprechung zu. Gehen Sie als Nächstes davon aus, dass Sie ein separates System verwenden`MyMeetingService`, das Besprechungen verwaltet. Jeder eingehende Anruf sollte in die Warteschleife gestellt werden. Chime benachrichtigt MyMeetingService über eingehende Anrufe und erstellt MyMeetingService dann für jeden Anruf einen Teilnehmer. Wenn dieser bereit MyMeetingService ist, das Meeting zu starten, benachrichtigt es die SIP-Medienanwendung und stellt ein Token für die Teilnahme an der Besprechung bereit.

Um diesen Fall zu behandeln, muss die Lambda-Funktion die folgende Logik implementieren. 
+ Wenn ein neuer eingehender Anruf eingeht, wird Lambda mit einem `NEW_INBOUND_CALL` Ereignis aufgerufen. Das Lambda ruft den auf `MyMeetingService` und übergibt den`transactionId`, der den aktuellen Aufruf identifiziert, und gibt die `PlayAudio` Aktion zurück.
+ Wenn der bereit `MyMeetingService` ist, den Anrufer zur Besprechung hinzuzufügen, ruft der Dienst den [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html)API und übergibt das `transactionId` und des Aufrufs `JoinToken` als Teil seiner Argumente. Dieser API-Aufruf löst erneut die Lambda-Funktion aus, jetzt mit dem `CALL_UPDATE_REQUESTED` Ereignis. Der MyMeetingService übergibt die `JoinToken` an die Lambda-Funktion als Teil des Ereignisses, und das Token wird verwendet, um die `JoinChimeMeeting` Aktion an die SIP-Medienanwendung zurückzugeben, die die `PlayAudio` Aktion unterbricht und den Anrufer mit dem Meeting verbindet.

![\[Diagramm, das den Datenfluss in der API zeigt. UpdateSipMediaApplicationCall\]](http://docs.aws.amazon.com/de_de/chime-sdk/latest/dg/images/update-sip-call-flow3.png)


**Anmerkung**  
Die [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html)Die API gibt HTTP 202 (Akzeptiert) zurück. Die SIP-Medienanwendung bestätigt, dass der Anruf läuft und aktualisiert werden kann, und versucht daher, die Lambda-Funktion aufzurufen. Der Aufruf erfolgt asynchron, sodass eine erfolgreiche Antwort der API nicht garantiert, dass die Lambda-Funktion gestartet oder abgeschlossen wurde.

Das folgende Beispiel zeigt die Anforderungssyntax.

```
{
    "SipMediaApplicationId": "string",
    "TransactionId": "string",
    "Arguments": {
        "string": "string"
    } 
}
```

**Anfrageparameter**
+ `SipMediaApplicationId`— Die ID der SIP-Medienanwendung, die den Anruf bearbeitet. 
+ `TransactionId`— Die ID der Aufruftransaktion. Bei eingehenden Aufrufen `TransactionId` kann das aus dem `NEW_INCOMING_CALL` Ereignis abgerufen werden, das bei ihrem ersten Aufruf an die Lambda-Funktion übergeben wurde. Bei ausgehenden Aufrufen `TransactionId` wird in der Antwort von zurückgegeben [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html). 
+ **Argumente** — Benutzerdefinierte Argumente, die der Lambda-Funktion als Teil der `CallUpdateRequest` Aktionsdaten zur Verfügung gestellt werden. Kann 0 bis 20 Schlüssel-Wert-Paare enthalten.

Das folgende Beispiel zeigt eine typische Anfrage.

```
aws chime update-sip-media-application-call --sip-media-application-id feb37a7e-2b66-49fb-b2dd-30f4780dc36d --transaction-id 1322a4e7-c106-4e70-aaaf-a8fa4c77c0cb --arguments '{"JoinToken": "abc123"}'
```

**Antwortsyntax**

```
{
  "SipMediaApplicationCall": {
  "TransactionId": "string"
  }
}
```

**Antwortelemente**
+ **TransactionId**— Die ID der Aufruftransaktion, dieselbe ID wie die Anfrage.

Das folgende Beispiel zeigt ein `CALL_UPDATE_REQUESTED` Aufrufereignis.

```
{
  "SchemaVersion": "1.0",
  "Sequence": 2,
  "InvocationEventType": "CALL_UPDATE_REQUESTED",
  "ActionData": {
    "Type": "CallUpdateRequest",
    "Parameters": {
      "Arguments": {
        "string": "string"
      }
    }
  },
  "CallDetails": {
    ...
  }
}
```

**Elemente des Ereignisses**
+ **SchemaVersion**— Die Version des JSON-Schemas (1.0)
+ **Sequenz** — Die Sequenznummer des Ereignisses im Aufruf
+ **InvocationEventType**— Der Typ des Lambda-Aufrufereignisses, in diesem Fall `CALL_UPDATE_REQUESTED`
+ **ActionData**— Die mit der Aktion verknüpften Daten. `CallUpdateRequest`
  + **Typ** — Die Art der Aktion, in diesem Fall `CallUpdateRequest`
  + **Parameter** — Die Parameter der Aktion
    + **Argumente** — Die Argumente, die als Teil der `UpdateSipMediaApplicationCall` API-Anfrage übergeben wurden
+ **CallDetails**— Die Informationen über den aktuellen Anrufstatus

**Grundlegendes zu unterbrechenden und unterbrechungsfreien Aktionen**  
Wenn eine Lambda-Funktion eine neue Liste von Aktionen zurückgibt, während bestehende Aktionen ausgeführt werden, werden alle Aktionen, die auf die laufende Aktion folgen, durch die neuen Aktionen ersetzt. In einigen Fällen unterbricht die Lambda-Funktion laufende Aktionen, um sofort neue Aktionen auszuführen.

Das folgende Diagramm zeigt ein typisches Beispiel. Der Text unter dem Diagramm erklärt die Logik.

![\[Das Diagramm zeigt, wie Aktionen während eines laufenden SIP-Medienanwendungsaufrufs ersetzt werden können.\]](http://docs.aws.amazon.com/de_de/chime-sdk/latest/dg/images/update-sip-actions.png)


Wenn Aktion 2 unterbrechbar ist, beenden wir sie und führen stattdessen die neue Aktion 1 aus.

Wenn Aktion 2 nicht unterbrechbar ist, wird sie abgeschlossen, bevor die neue Aktion 1 beginnt.

In beiden Fällen wird Aktion 3 nicht ausgeführt.

Wenn etwas eine Aktion unterbricht, wird die Lambda-Funktion mit einem Ereignis aufgerufen. `ACTION_INTERRUPTED` Dieses Ereignis wird nur zu Informationszwecken verwendet. Die SIP-Medienanwendung ignoriert alle Aktionen, die von diesem Aufruf zurückgegeben werden.

Arten von unterbrechbaren Aktionen:
+ `PlayAudio`
+ `RecordAudio`
+ `Pause`

**Beispiel-Lambda-Funktion**  
Dieses Beispiel zeigt eine typische Lambda-Funktion, die eine Audiodatei abspielt, ein Join-Token übergibt und den Aufruf aktualisiert.

```
const MMS = require('my-meeting-service');
const myMeetingServiceClient = new MMS.Client();

exports.handler = async (event) => {
    console.log('Request: ' + JSON.stringify(event));
    
    const playAudio = () => {
      return {
        Type: 'PlayAudio',
        Parameters: {
          ParticipantTag: 'LEG-A',
          AudioSource: {
            Type: 'S3',
            BucketName: 'chime-meetings-audio-files-bucket-name',
            Key: 'welcome.wav'
          }
        }
      }
    }
    
    const joinChimeMeeting = (joinToken) => {
      return {
        Type: 'JoinChimeMeeting',
        Parameters: {
          JoinToken: joinToken
        }
      }
    }
    
    const response = (...actions) => {
      const r = {
        SchemaVersion: '1.0',
        Actions: actions
      };
      console.log('Response: ' + JSON.stringify(r));
      return r;
    };
    
    switch (event.InvocationEventType) {
      case 'NEW_INBOUND_CALL': 
        myMeetingServiceClient.addPendingCall(event.CallDetails.TransactionId);         
        return response(playAudio());      
      case 'CALL_UPDATE_REQUESTED':
        const joinToken = event.ActionData.Parameters.Arguments['JoinToken']
        return response(joinChimeMeeting(joinToken));
      default:
        return response();
    }
}
```

# Beenden eines Anrufs mithilfe des Amazon Chime SDK PSTN-Audiodienstes
<a name="case-5"></a>

Sie können die [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html)API verwenden, um einen ausgehenden Anruf zu beenden. Die API ruft den Endpunkt einer angegebenen **SIP-Medienanwendungs-ID** auf. Kunden können den Ablauf des Anrufs steuern, indem sie Aktionen an die SIP-Medienanwendung zurücksenden.

Im Falle einer erfolgreichen Antwort gibt die API zusammen mit dem einen HTTP-Statuscode 202 zurück`transactionId`, den Sie zusammen mit der [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html)API verwenden können, um einen laufenden Anruf zu aktualisieren.

Das folgende Diagramm zeigt die Aufrufe des AWS Lambda Funktionsendpunkts für einen ausgehenden Anruf.

![\[Der Datenfluss beim Aufrufen der API. CreateSipMediaApplicationCall Die API ruft einen anderen Endpunkt auf, wenn sich der Status eines ausgehenden Anrufs ändert.\]](http://docs.aws.amazon.com/de_de/chime-sdk/latest/dg/images/sip-api-1.png)


Der für die SIP-Medienanwendung konfigurierte Endpunkt wird für verschiedene Status des ausgehenden Anrufs aufgerufen. Wenn ein Kunde einen Anruf beendet, ruft das Amazon Chime SDK den Endpunkt mit einem `HANGUP` Aufrufereignistyp auf. 

Dieses Beispiel zeigt ein typisches Aufrufereignis für a. `HANGUP`

```
{
    "SchemaVersion": "1.0",
    "Sequence": 6,
    "InvocationEventType": "HANGUP",
    "ActionData": {
        "Type": "Hangup",
        "Parameters": {
            "CallId": "call-id-1",
            "ParticipantTag": "LEG-A"
        }
    },
    "CallDetails": {
        "TransactionId": "transaction-id",
        "AwsAccountId": "aws-account-id",
        "AwsRegion": "us-east-1",
        "SipRuleId": "sip-rule-id",
        "SipApplicationId": "sip-application-id",
        "Participants": [
            {
                "CallId": "call-id-1",
                "ParticipantTag": "LEG-A",
                "Direction": "Inbound",
                 "To": "+12065551212",
                "From": "+15105550101",
                "StartTimeInMilliseconds": "1597009588",
                "Status": "Disconnected"
            }
        ]
    }
}

// if LEG-B receives a hangup in a bridged call, such as a meeting ending
{
    "SchemaVersion": "1.0",
    "Sequence": 6,
    "InvocationEventType": "HANGUP",
    "ActionData": {
        "Type": "ReceiveDigits",
        "Parameters": {
            "CallId": "call-id-2",
            "ParticipantTag": "LEG-B"
        }
    },
    "CallDetails": {
        "TransactionId": "transaction-id",
        "AwsAccountId": "aws-account-id",
        "AwsRegion": "us-east-1",
        "SipRuleId": "sip-rule-id",
        "SipApplicationId": "sip-application-id",
        "Participants": [
            {
                "CallId": "call-id-1",
                "ParticipantTag": "Leg-A",
                 "To": "+12065551212",
                "From": "+15105550101",
                "Direction": "Inbound",
                "StartTimeInMilliseconds": "1597009588",
                "Status": "Connected"
            },
            {
                "CallId": "call-id-2",
                "ParticipantTag": "Leg-B",
                "To": "+17035550122",
                "From": "SMA",
                "Direction": "Outbound",
                "StartTimeInMilliseconds": "15010595",
                "Status": "Disconnected"
            }
        ]
    }
}
```

# Grundlegendes zu end-to-end Aufrufen für den Amazon Chime SDK PSTN-Audiodienst
<a name="use-cases"></a>

Dieser Anwendungsfall bietet Beispielcode für das Empfangen eines Telefonanrufs von einem PSTN-Anrufer, das Begrüßen des Anrufers mit einer Audionachricht, das Abrufen der Meeting-PIN vom Anrufer, das Abspielen von Audio und das Hinzufügen des Anrufers zur Besprechung.

**Aufrufereignisse und Aktionen**  
Der Audiodienst übergibt Aufrufereignisse als AWS Lambda JSON-Objekte an Funktionen. Die Objekte enthalten den Aufrufereignistyp und alle relevanten Metadaten. Die AWS Lambda Funktion gibt auch Aktionen von SIP-Medienanwendungen als JSON-Objekte zurück, und diese Objekte enthalten einen Aktionstyp und alle relevanten Metadaten.

In der folgenden Tabelle sind die Aufrufereignisse und die möglichen Ereignisse aufgeführt`ActionData.Type`, wenn Sie ein Aufrufereignis erhalten.


|  Aufrufereignis  |  ActionData.Typ  | 
| --- | --- | 
|  ACTION\$1ERFOLGREICH  |  CallAndBridge ReceiveDigits PlayAudio PlayAudioAndGetDigits  JoinChimeMeeting ModifyChimeMeetingAttendees RecordMeeting  | 
|  ACTION\$1FAILED  |  CallAndBridge PlayAudio PlayAudioAndGetDigits ModifyChimeMeetingAttendees RecordMeeting  | 
| AUFLEGEN |  HangUp  | 
|  ZIFFERN\$1ERHALTEN  | ReceiveDigits | 

**Anmerkung**  
Um den folgenden Anwendungsfall zu implementieren, benötigen Sie mindestens eine Telefonnummer in Ihrem Amazon Chime SDK-Inventar, ein von einer SIP-Medienanwendung verwaltetes Objekt, das eine AWS Lambda Funktion mit einem Amazon-Ressourcennamen (ARN) verwendet, und eine SIP-Regel, die die Telefonnummer als Auslöser verwendet.

Wenn das Amazon Chime SDK einen Anruf an die in der Regel angegebene Telefonnummer empfängt, ruft der PSTN-Audiodienst eine AWS Lambda Funktion mit dem `NEW_INBOUND_CALL` Aufrufereignistyp auf.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 1,
    "InvocationEventType": "NEW_INBOUND_CALL",
    "CallDetails": {
        "TransactionId": "transaction-id",
        "AwsAccountId": "aws-account-id",
        "AwsRegion": "us-east-1",
        "SipRuleId": "sip-rule-id",
        "SipApplicationId": "sip-application-id",
        "Participants": [
            {
                "CallId": "call-id-1",
                "ParticipantTag": "LEG-A",
                "To": "+11234567890",
                "From": "+19876543210",
                "Direction": "Inbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Connected"
            }
        ]
    }
}
```

Sie können die AWS Lambda Funktion so programmieren, dass sie die Anrufdetails validiert und für die future Verwendung speichert. Bei einer `NEW_INBOUND_CALL` Veranstaltung reagiert die AWS Lambda Funktion mit einer Reihe von Aktionen, bei denen eine Begrüßungsaufforderung abgespielt und nach der Meeting-PIN gefragt wird.

Für Audiodateien gelten die folgenden Anforderungen:
+ Sie müssen Audiodateien aus einem Amazon Simple Storage Service (S3) -Bucket abspielen. Der S3-Bucket muss zu demselben AWS Konto gehören wie die SIP-Medienanwendung. Darüber hinaus müssen Sie dem Amazon Chime SDK Voice Connector-Service Principal die `s3:GetObject` Genehmigung erteilen—`voiceconnector.chime.amazonaws.com`. Sie können dazu die S3-Konsole oder die Befehlszeilenschnittstelle (CLI) verwenden.
+ Sie müssen PCM-WAV-Dateien mit einer Größe von nicht mehr als 50 MB verwenden. Das Amazon Chime SDK empfiehlt 8 KHz mono.
+ Die S3-Metadaten für jede WAV-Datei müssen Folgendes enthalten: `{'ContentType': 'audio/wav'}`

```
{
    "SchemaVersion": "1.0",
    "Actions": [
        {
            "Type" : "PlayAudio",    
            "Parameters" : {
                "CallId": "call-id-1",
                
                "AudioSource": {
                    "Type": "S3",
                    "BucketName": "chime-meetings-audio-files-bucket-name",
                    "Key": "welcome-to-meetings.wav"
                }
            }
        },
        {
            "Type": "PlayAudioAndGetDigits",
            "Parameters" : {
                "ParticipantTag": "LEG-A",
                
                "AudioSource": {
                    "Type": "S3",
                    "BucketName": "chime-meetings-audio-files-bucket-name",
                    "Key": "enter-meeting-pin.wav"
                },
                "FailureAudioSource": {
                    "Type": "S3",
                    "BucketName": "chime-meetings-audio-files-bucket-name",
                    "Key": "invalid-meeting-pin.wav"
                },
                "MinNumberOfDigits": 3,
                "MaxNumberOfDigits": 5,
                "TerminatorDigits": ["#"],
                "InBetweenDigitsDurationInMilliseconds": 5000,
                "Repeat": 3,
                "RepeatDurationInMilliseconds": 10000
            }
        }
    ]
}
```

Die SIP-Medienanwendung führt diese Aktionen auf Anrufstrecke A aus. Unter der Annahme, dass die `PlayAudioAndGetDigits` Aktion die Ziffern empfängt, ruft die SIP-Medienanwendung die AWS Lambda Funktion mit dem `ACTION_SUCCESSFUL` Ereignistyp auf.

```
{
    "SchemaVersion": "1.0",
    "Sequence": 2,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
        "Type": "PlayAudioAndGetDigits",
        "Parameters" : {
            "ParticipantTag": "LEG-A",
            "AudioSource": {
                "Type": "S3",
                "BucketName": "chime-meetings-audio-files-bucket-name",
                "Key": "enter-meeting-pin.wav"
            },
            "FailureAudioSource": {
                "Type": "S3",
                "BucketName": "chime-meetings-audio-files-bucket-name",
                "Key": "invalid-meeting-pin.wav"
            },
            "MinNumberOfDigits": 3,
            "MaxNumberOfDigits": 5,
            "TerminatorDigits": ["#"],
            "InBetweenDigitsDurationInMilliseconds": 5000,
            "Repeat": 3,
            "RepeatDurationInMilliseconds": 10000
        },
        "ReceivedDigits": "12345" // meeting PIN
    },
    "CallDetails": {
        ... // same as in previous event
    }
}
}
```

Sie können eine AWS Lambda Funktion programmieren, um den Anrufer anhand der `CallDetails` Daten zu identifizieren. Sie können auch die zuvor erhaltene Besprechungs-PIN überprüfen. Wenn Sie eine korrekte PIN angeben, verwenden Sie dann [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateMeeting.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateMeeting.html)und, [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateAttendee.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateAttendee.html) APIs um das Amazon Chime SDK-Meeting zu erstellen und das vom Meeting-Teilnehmer verwendete Teilnahme-Token zu generieren. Die AWS Lambda Funktion reagiert mit der Aktion, am Amazon Chime SDK-Meeting teilzunehmen.

```
{
    "SchemaVersion": "1.0",
    "Actions": [
        {
            "Type": "JoinChimeMeeting",
            "Parameters": {
                "JoinToken": "meeting-attendee-join-token"
            }
        }
    ]
}
```

Unter der Annahme, dass gültig `JoinToken` ist, nimmt die SIP-Medienanwendung am Amazon Chime SDK-Meeting teil und ruft eine AWS Lambda Funktion mit dem `ACTION_SUCCESSFUL` Ereignis auf, die die Daten aus der SIP-Medienanwendung und dem Chime Media-Service `CallDetails` enthält () `LEG-B` 

```
{
    "SchemaVersion": "1.0",
    "Sequence": 3,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
        "Type" : "JoinChimeMeeting",
        "Parameters" : {
            "JoinToken": "meeting-attendee-join-token"
        }
    },
    "CallDetails": {
        "TransactionId": "transaction-id", 
        "AwsAccountId": "aws-account-id",
        "AwsRegion": "us-east-1",
        "SipRuleId": "sip-rule-id",
        "SipApplicationId": "sip-application-id",
        "Participants": [
            {
                "CallId": "call-id-1",
                "ParticipantTag": "LEG-A",
                "To": "+11234567890",
                "From": "+19876543210",
                "Direction": "Inbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Connected"
            },
            {
                "CallId": "call-id-2",
                "ParticipantTag": "LEG-B",
                "To": "SMA",
                "From": "+17035550122",
                "Direction": "Outbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Connected"
            }
        ]
    }
}
```

Wenn Sie zu diesem Zeitpunkt die Ausführung von Aktionen für den Anruf oder die Anrufabteilung beenden möchten, können Sie mit einer leeren Gruppe von Aktionen antworten.

```
{
    "SchemaVersion": "1.0"
    "Actions": []
}
```

Nachdem der Anrufer aufgelegt hat, ruft die SIP-Medienanwendung die AWS Lambda Funktion mit dem `HANGUP` Ereignis auf. 

```
{
    "SchemaVersion": "1.0",
    "Sequence": 4,
    "InvocationEventType": "HANGUP",
    "ActionData": {
        "Type": "Hangup",
        "Parameters": {
            "CallId": "call-id-1",
            "ParticipantTag": "LEG-A"
        }
    },
    "CallDetails": {
        "TransactionId": "transaction-id", 
        "AwsAccountId": "aws-account-id",
        "AwsRegion": "us-east-1",
        "SipRuleId": "sip-rule-id",
        "SipApplicationId": "sip-application-id",
        "Participants": [
            {
                "CallId": "call-id-1",
                "ParticipantTag": "LEG-A",
                "To": "+11234567890",
                "From": "+19876543210",
                "Direction": "Inbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Disconnected"
            },
            {
                "CallId": "call-id-2",
                "ParticipantTag": "LEG-B",
                "To": "SMA",
                "From": "+17035550122",
                "Direction": "Outbound",
                "StartTimeInMilliseconds": "159700958834234",
                "Status": "Disconnected"
            }
        ]
    }
}
```

Wenn Sie auf ein `Hangup` Ereignis mit einer Aktion antworten, ignoriert die SIP-Medienanwendung die Aktion, sofern keine andere Anwendung ein of `Participants` anzeigt. `Status` `Connected`