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.
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ührtActionData.Type
, wenn Sie ein Aufrufereignis erhalten.
Aufrufereignis | ActionData.Typ |
---|---|
ACTION_ERFOLGREICH |
CallAndBridge ReceiveDigits PlayAudio PlayAudioAndGetDigits JoinChimeMeeting ModifyChimeMeetingAttendees RecordMeeting |
ACTION_FAILED |
CallAndBridge PlayAudio PlayAudioAndGetDigits ModifyChimeMeetingAttendees RecordMeeting |
AUFLEGEN |
HangUp |
ZIFFERN_ERHALTEN |
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. Gehen Sie von einer korrekten PIN aus, verwenden Sie dann die CreateMeeting und CreateAttendee 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