Contohnd-to-end panggilan E - Amazon Chime SDK

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

Contohnd-to-end panggilan E

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

Acara dan tindakan pemanggilan

Layanan Audio meneruskan peristiwa pemanggilan keAWS Lambda fungsi sebagai objek JSON. Objek termasuk jenis acara pemanggilan dan metatdata yang relevan. AWS LambdaFungsi ini juga mengembalikan tindakan aplikasi media SIP sebagai objek JSON, dan benda-benda termasuk tipe tindakan dan metadata yang relevan.

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

Acara pemanggilan ActionData.Ketik

ACTION_SUKSES

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 inventaris Amazon Chime SDK, objek terkelola aplikasi media SIP yang menggunakanAWS Lambda fungsi dengan Amazon Resource Name (ARN), dan aturan SIP yang menggunakan nomor telepon sebagai pemicunya.

Saat Amazon Chime SDK menerima panggilan ke nomor telepon yang ditentukan dalam aturan, layanan Audio PSTN akan memanggilAWS Lambda fungsi dengan jenis peristiwaNEW_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 memprogramAWS Lambda fungsi untuk memvalidasi rincian panggilan dan menyimpannya untuk digunakan di future. Untuk suatuNEW_INBOUND_CALL acara,AWS Lambda fungsi merespons dengan serangkaian tindakan yang memutar prompt selamat datang dan meminta PIN pertemuan.

File audio memiliki persyaratan sebagai berikut:

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

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

  • Metadata S3 untuk setiap file WAV 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 media SIP menjalankan tindakan ini pada kaki panggilan A. dengan asumsiPlayAudioAndGetDigits tindakan menerima digit, aplikasi media SIP memanggilAWS Lambda fungsi dengan jenisACTION_SUCCESSFUL acara.

{ "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 memprogramAWS Lambda fungsi untuk mengidentifikasi penelepon berdasarkanCallDetails data. Anda juga dapat memvalidasi PIN pertemuan yang diterima sebelumnya. Dengan asumsi PIN yang benar, Anda kemudian menggunakan CreateMeetingdan CreateAttendeeAPI untuk membuat rapat Amazon Chime SDK dan membuat token bergabung yang digunakan oleh peserta rapat. AWS LambdaFungsi merespons dengan tindakan untuk bergabung dengan rapat Amazon Chime SDK.

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

DenganJoinToken asumsi valid, aplikasi media SIP bergabung dengan rapat Amazon Chime SDK dan memanggilAWS Lambda fungsi denganACTION_SUCCESSFUL acara tersebut, di manaCallDetails berisi data dari aplikasi media SIP 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 saat ini, Anda dapat merespons dengan serangkaian tindakan kosong.

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

Setelah pemanggil menutup telepon, aplikasi media SIP memanggilAWS Lambda fungsi denganHANGUP acara tersebut.

{ "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 menanggapiHangup peristiwa dengan tindakan, aplikasi media SIP mengabaikan tindakan jika tidak adaParticipants acara lainStatus dariConnected.