Memahami end-to-end panggilan - Amazon Chime SDK

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memahami end-to-end panggilan

Kasus penggunaan ini memberikan contoh kode untuk menerima panggilan telepon dari PSTN penelepon, menyapa penelepon dengan pesan audio, mendapatkan rapat PIN dari pemanggil, memutar audio, dan bergabung dengan penelepon ke rapat.

Acara dan tindakan doa

Layanan Audio meneruskan peristiwa pemanggilan ke AWS Lambda fungsi sebagai JSON objek. Objek termasuk jenis acara pemanggilan dan metatdata yang relevan. AWS Lambda Fungsi ini juga mengembalikan tindakan aplikasi SIP media sebagai JSON objek, dan objek tersebut menyertakan tipe tindakan dan metadata yang relevan.

Tabel berikut mencantumkan peristiwa pemanggilan, dan kemungkinanActionData.Type, saat Anda menerima acara pemanggilan.

Acara doa ActionData.Tipe

ACTION_SUCCESSFUL

CallAndBridge

ReceiveDigits

PlayAudio

PlayAudioAndGetDigits

JoinChimeMeeting

ModifyChimeMeetingAttendees

RecordMeeting

ACTION_FAILED

CallAndBridge

PlayAudio

PlayAudioAndGetDigits

ModifyChimeMeetingAttendees

RecordMeeting

HANGUP

HangUp

DIGITS_RECEIVED

ReceiveDigits
catatan

Untuk menerapkan kasus penggunaan berikut, Anda memerlukan setidaknya satu nomor telepon di SDK inventaris Amazon Chime, objek yang dikelola aplikasi SIP media yang menggunakan AWS Lambda fungsi dengan Nama Sumber Daya Amazon (ARN), dan SIP aturan yang menggunakan nomor telepon sebagai pemicunya.

Saat Amazon Chime SDK menerima panggilan ke nomor telepon yang ditentukan dalam aturan, layanan PSTN Audio akan memanggil AWS Lambda fungsi dengan jenis acara NEW_INBOUND_CALL pemanggilan.

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

Anda dapat memprogram AWS Lambda fungsi untuk memvalidasi detail panggilan dan menyimpannya untuk digunakan di masa mendatang. Untuk suatu NEW_INBOUND_CALL acara, AWS Lambda fungsi merespons dengan serangkaian tindakan yang memainkan prompt selamat datang dan meminta rapatPIN.

File audio memiliki persyaratan sebagai berikut:

  • Anda harus memutar file audio dari bucket Amazon Simple Storage Service (S3). Bucket S3 harus milik AWS akun yang sama dengan aplikasi SIP media. Selain itu, Anda harus memberikan s3:GetObject izin kepada kepala layanan Amazon Chime SDK Voice Connector—. voiceconnector.chime.amazonaws.com Anda dapat menggunakan konsol S3 atau antarmuka baris perintah (CLI) untuk melakukannya.

  • Anda harus menggunakan PCM WAV file berukuran tidak lebih dari 50 MB. Amazon Chime SDK merekomendasikan 8 KHz mono.

  • Metadata S3 untuk setiap WAV file harus berisi. {'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 } } ] }

Aplikasi SIP media menjalankan tindakan ini pada call leg A. Dengan asumsi PlayAudioAndGetDigits tindakan menerima digit, aplikasi SIP media memanggil AWS Lambda fungsi dengan tipe acara. 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 } } }

Anda dapat memprogram AWS Lambda fungsi untuk mengidentifikasi pemanggil berdasarkan CallDetails data. Anda juga dapat memvalidasi rapat yang PIN diterima sebelumnya. Dengan asumsi yang benarPIN, Anda kemudian menggunakan CreateMeeting dan CreateAttendeeAPIsuntuk membuat SDK rapat Amazon Chime dan menghasilkan token gabungan yang digunakan oleh peserta rapat. AWS Lambda Fungsi merespons dengan tindakan untuk bergabung dengan rapat Amazon SDK Chime.

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

Dengan JoinToken asumsi valid, aplikasi SIP media bergabung dengan rapat Amazon SDK Chime dan memanggil AWS Lambda fungsi dengan ACTION_SUCCESSFUL acara tersebut, CallDetails di mana berisi data dari SIP aplikasi media dan layanan Chime Media () 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" } ] } }

Jika Anda ingin berhenti menjalankan tindakan pada panggilan atau panggilan kaki pada titik ini, Anda dapat merespons dengan serangkaian tindakan kosong.

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

Setelah pemanggil menutup telepon, aplikasi SIP media memanggil AWS Lambda fungsi dengan acara tersebut. 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" } ] } }

Jika Anda merespons Hangup peristiwa dengan tindakan, aplikasi SIP media mengabaikan tindakan jika tidak ada yang lain Participants menunjukkan Status dari. Connected