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:GetObject
autorizzazione 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'PlayAudioAndGetDigits
azione 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