Beispiel für End-to-End-Call - Amazon Chime SDK

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.

Beispiel für End-to-End-Call

Dieser Anwendungsfall enthält einen Beispielcode für den Empfang eines Anrufs von einem PSTN-Anrufer, das Begrüßen des Anrufers mit einer Audionachricht, das Abrufen der Meeting-PIN vom Anrufer, das Abspielen von Audio und den Beitritt zum Meeting.

Aufruf-Ereignisse und Aktionen

Der PSTN Audio-Dienst übergibt Aufrufereignisse anAWS Lambdafungiert als JSON-Objekte. Zu den Objekten gehören der Aufrufereignistyp und alle relevanten Metatdaten. DieAWS Lambdagibt auch SIP-Medienanwendungsaktionen als JSON-Objekte zurück, und diese Objekte enthalten einen Aktionstyp und alle relevanten Metadaten.

In der folgenden Tabelle werden die Aufrufereignisse und die möglichen aufgeführtActionData.Type, wenn Sie ein Aufrufereignis erhalten.

Ereignis für Aufruf

ActionData.Type

ACTION_ERFOLGREICH

CallandBridge

ReceiveDigits

PlayAudio

PlayAudioAndGetDigits

JoinChimeMeeting

modifyChimemeetingTeilnehmer

RecordMeeting

ACTION_FEHLGESCHLAGEN

CallandBridge

PlayAudio

PlayAudioAndGetDigits

modifyChimemeetingTeilnehmer

RecordMeeting

AUFHÄNGEN

Hangup

DIGITS_ERHALTEN

ReceiveDigits
Anmerkung

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

Wenn Amazon Chime SDK einen Anruf an die in der Regel angegebene Telefonnummer erhält, ruft der PSTN Audio-Dienst eineAWS LambdaFunktion mitNEW_INBOUND_CALLEreignistyp des Aufrufers.

{ "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 dasAWS LambdaFunktion, um Anruftetails zu validieren und für die future Verwendung zu speichern. Für einNEW_INBOUND_CALLevent,AWS Lambdareagiert mit einer Reihe von Aktionen, die eine Begrüßungsaufforderung abspielen und nach der Meeting-PIN fragen.

Audiodateien haben die folgenden Anforderungen:

  • Sie müssen Audiodateien aus einem Amazon Simple Storage Service (S3) -Bucket abspielen. Der S3-Bucket muss zu demselben gehörenAWSKonto als SIP-Medienanwendung. Außerdem müssen Sie dass3:GetObjectBerechtigung für den Amazon Chime Voice Connector-Service-Prinzipal—voiceconnector.chime.amazonaws.comaus. Dazu können Sie 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. Amazon Chime SDK empfiehlt 8 kHz Mono.

  • Die S3-Metadaten für jede WAV-Datei müssen enthalten{'ContentType': 'audio/wav'}aus.

{ "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, dassPlayAudioAndGetDigits-Aktion erhält die Ziffern, die SIP-Medienanwendung ruft dieAWS LambdaFunktion mitACTION_SUCCESSFULevent-type.

{ "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 programmierenAWS LambdaFunktion zur Identifizierung des Anrufers basierend auf demCallDetailsDaten. Sie können auch die zuvor erhaltene Meeting-PIN validieren. Unter der Annahme einer korrekten PIN verwenden Sie dann dieCreateMeetingundcreateAttenDeeAPIs zum Erstellen des Amazon Chime SDK-Meetings und zum Generieren des vom Besprechungsteilnehmer verwendeten Join-Token. DieAWS Lambdareagiert mit der Aktion zur Teilnahme am Amazon Chime SDK-Meeting.

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

Unter der AnnahmeJoinTokenist gültig, die SIP-Medienanwendung tritt dem Amazon Chime SDK-Meeting bei und ruft einAWS LambdaFunktion mitACTION_SUCCESSFULevent, woCallDetailsenthält die Daten aus der SIP-Medienanwendung und dem Chime Media-Dienst (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 Anrufstrecke beenden möchten, können Sie mit leeren Aktionen antworten.

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

Nachdem der Anrufer aufgelegt hat, ruft die SIP-Medienanwendung dieAWS LambdaFunktion mitHANGUPevent.

{ "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 einHangup-Ereignis mit einer Aktion ignoriert die SIP-Medienanwendung die Aktion, wenn keine andereParticipantszeige einStatusvonConnectedaus.