Comprensione delle chiamate end-to-end - Amazon Chime SDK

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Comprensione delle chiamate end-to-end

Questo caso d'uso fornisce un codice di esempio per ricevere una telefonata da un PSTN chiamante, salutarlo con un messaggio audio, ricevere la riunione PIN dal chiamante, riprodurre l'audio e unirsi al chiamante alla riunione.

Eventi e azioni di invocazione

Il servizio audio passa gli eventi di chiamata alle AWS Lambda funzioni come oggetti. JSON Gli oggetti includono il tipo di evento di invocazione e tutti i metadati pertinenti. La AWS Lambda funzione restituisce anche le azioni delle applicazioni SIP multimediali come JSON oggetti e tali oggetti includono un tipo di azione e tutti i metadati pertinenti.

La tabella seguente elenca gli eventi di invocazione e quelli possibili ActionData.Type quando si riceve un evento di invocazione.

Evento di invocazione ActionData.Tipo

ACTION_SUCCESSFUL

CallAndBridge

ReceiveDigits

PlayAudio

PlayAudioAndGetDigits

JoinChimeMeeting

ModifyChimeMeetingAttendees

RecordMeeting

ACTION_FAILED

CallAndBridge

PlayAudio

PlayAudioAndGetDigits

ModifyChimeMeetingAttendees

RecordMeeting

HANGUP

HangUp

DIGITS_RECEIVED

ReceiveDigits
Nota

Per implementare il seguente caso d'uso, sono necessari almeno un numero di telefono nell'SDKinventario Amazon Chime, un oggetto gestito da un'applicazione SIP multimediale che utilizza una AWS Lambda funzione con un Amazon Resource Name (ARN) e una SIP regola che utilizzi il numero di telefono come trigger.

Quando Amazon Chime SDK riceve una chiamata al numero di telefono specificato nella regola, il servizio PSTN Audio richiama una AWS Lambda funzione con il NEW_INBOUND_CALL tipo di evento di chiamata.

{ "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" } ] } }

È possibile programmare la AWS Lambda funzione per convalidare i dettagli delle chiamate e memorizzarli per usi futuri. Per un NEW_INBOUND_CALL evento, la AWS Lambda funzione risponde con una serie di azioni che generano un messaggio di benvenuto e richiedono la riunione. PIN

I file audio hanno i seguenti requisiti:

  • È necessario riprodurre file audio da un bucket Amazon Simple Storage Service (S3). Il bucket S3 deve appartenere allo stesso AWS account dell'applicazione multimediale. SIP Inoltre, devi dare l's3:GetObjectautorizzazione al responsabile del servizio Amazon Chime SDK Voice Connector—. voiceconnector.chime.amazonaws.com A tale scopo, puoi utilizzare la console S3 o l'interfaccia a riga di comando (CLI).

  • È necessario utilizzare PCM WAV file di dimensioni non superiori a 50 MB. Amazon Chime SDK consiglia la modalità 8 KHz mono.

  • I metadati S3 per ogni WAV file devono contenere. {'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 } } ] }

L'applicazione SIP multimediale esegue queste azioni sulla riga di chiamata A. Supponendo che l'PlayAudioAndGetDigitsazione riceva le cifre, l'applicazione SIP multimediale richiama la funzione con il AWS Lambda tipo di evento. ACTION_SUCCESSFUL

{ "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 } } }

È possibile programmare una AWS Lambda funzione per identificare il chiamante in base ai dati. CallDetails È inoltre possibile convalidare la riunione PIN ricevuta in precedenza. Supponendo che sia correttoPIN, si utilizza quindi il CreateMeeting e CreateAttendeeAPIsper creare la SDK riunione Amazon Chime e generare il token di partecipazione utilizzato dal partecipante alla riunione. La AWS Lambda funzione risponde con l'azione di partecipare alla riunione Amazon SDK Chime.

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

Supponendo che JoinToken sia valido, l'applicazione SIP multimediale partecipa alla riunione Amazon SDK Chime e richiama AWS Lambda una funzione con ACTION_SUCCESSFUL l'evento, CallDetails dove contiene i dati dell'applicazione multimediale e del servizio Chime Media () SIP 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" } ] } }

Se a questo punto desideri interrompere l'esecuzione di azioni sulla chiamata o sull'intervallo della chiamata, puoi rispondere con un set di azioni vuoto.

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

Dopo la chiusura del chiamante, l'applicazione SIP multimediale richiama la AWS Lambda funzione con l'evento. HANGUP

{ "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" } ] } }

Se rispondete a un Hangup evento con un'azione, l'applicazione SIP multimediale ignora l'azione se nessun'altra ne mostra una. Participants Status Connected