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