Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
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 doa
Layanan Audio meneruskan peristiwa pemanggilan ke AWS Lambda fungsi sebagai objek JSON. Objek termasuk jenis acara pemanggilan dan metatdata yang relevan. AWS Lambda Fungsi ini juga mengembalikan tindakan aplikasi media SIP sebagai objek JSON, 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 inventaris Amazon Chime SDK, objek yang dikelola aplikasi media SIP yang menggunakan AWS Lambda fungsi dengan Nama Sumber Daya Amazon (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 memanggil AWS Lambda fungsi dengan jenis peristiwa pemanggilan. NEW_INBOUND_CALL
{
"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 PIN rapat.
File audio memiliki persyaratan sebagai berikut:
-
Anda harus memutar file audio dari bucket Amazon Simple Storage Service (S3). Bucket S3 harus memiliki AWS akun yang sama dengan aplikasi media SIP. 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 file WAV PCM dengan ukuran tidak lebih dari 50 MB. Amazon Chime SDK merekomendasikan 8 mono. 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 call leg A. Dengan asumsi PlayAudioAndGetDigits
tindakan menerima digit, aplikasi media SIP memanggil AWS Lambda fungsi dengan jenis 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 PIN rapat yang diterima sebelumnya. Dengan asumsi PIN yang benar, Anda kemudian menggunakan CreateMeeting dan CreateAttendee APIs untuk membuat rapat Amazon Chime SDK dan menghasilkan token gabungan yang digunakan oleh peserta rapat. AWS Lambda Fungsi merespons dengan tindakan untuk bergabung dengan rapat Amazon Chime SDK.
{
"SchemaVersion": "1.0",
"Actions": [
{
"Type": "JoinChimeMeeting",
"Parameters": {
"JoinToken": "meeting-attendee-join-token
"
}
}
]
}
Dengan JoinToken
asumsi valid, aplikasi media SIP bergabung dengan rapat Amazon Chime SDK dan memanggil AWS Lambda fungsi dengan ACTION_SUCCESSFUL
acara, CallDetails
di mana 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 titik ini, Anda dapat merespons dengan serangkaian tindakan kosong.
{
"SchemaVersion": "1.0"
"Actions": []
}
Setelah pemanggil menutup telepon, aplikasi media SIP 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 menanggapi Hangup
peristiwa dengan tindakan, aplikasi media SIP mengabaikan tindakan jika tidak ada yang lain Participants
menunjukkan aStatus
. Connected