Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Berikan Amazon Connect akses ke AWS Lambda fungsi Anda
Amazon Connect dapat berinteraksi dengan sistem Anda sendiri dan mengambil jalur yang berbeda dalam aliran secara dinamis. Untuk mencapai hal ini, panggil AWS Lambda fungsi dalam aliran, ambil hasilnya, dan hubungi layanan Anda sendiri atau berinteraksi dengan penyimpanan atau layanan AWS data lainnya. Lihat informasi selengkapnya di Panduan Developer AWS Lambda.
Untuk memanggil fungsi Lambda dari alur, selesaikan tugas-tugas berikut.
Tugas
- Buat fungsi Lambda
- Menambahkan fungsi Lambda ke instans Amazon Connect
- Memanggil fungsi Lambda dari aliran
- Praktik terbaik untuk menjalankan beberapa fungsi Lambda
- Konfigurasikan fungsi Lambda Anda untuk mengurai acara
- Verifikasi respons fungsi
- Konsumsi respons fungsi Lambda
- Tutorial: Buat fungsi Lambda dan panggil dalam alur
Buat fungsi Lambda
Buat fungsi Lambda, menggunakan runtime apa pun, dan konfigurasikan. Untuk informasi selengkapnya, lihat Memulai Lambda di Panduan AWS Lambda Pengembang.
Jika Anda membuat fungsi Lambda di Wilayah yang sama dengan pusat kontak, Anda dapat menggunakan konsol Amazon Connect untuk menambahkan fungsi Lambda ke instans Anda seperti yang dijelaskan dalam tugas berikutnya. Menambahkan fungsi Lambda ke instans Amazon Connect Ini secara otomatis menambahkan izin sumber daya yang memungkinkan Amazon Connect menjalankan fungsi Lambda. Jika tidak, jika fungsi Lambda berada di Wilayah yang berbeda, Anda dapat menambahkannya ke alur menggunakan perancang alur dan menambahkan izin sumber daya menggunakan perintah add-permission, dengan prinsip connect.amazonaws.com
dan instance ARN Amazon Connect Anda. Untuk informasi selengkapnya, lihat Menggunakan Kebijakan Berbasis Sumber Daya untuk AWS Lambda di Panduan Pengembang.AWS Lambda
Menambahkan fungsi Lambda ke instans Amazon Connect
Sebelum Anda dapat menggunakan fungsi Lambda dalam alur, Anda perlu menambahkannya ke instans Amazon Connect.
Tambahkan fungsi Lambda ke instans Anda
-
Buka konsol Amazon Connect di https://console.aws.amazon.com/connect/
. -
Pada halaman instance, pilih nama instance Anda di kolom Alias Instance. Nama instance ini muncul di yang URL Anda gunakan untuk mengakses Amazon Connect.
-
Di panel navigasi, pilih Flows.
-
Di AWS Lambdabagian ini, gunakan kotak drop-down Fungsi untuk memilih fungsi yang akan ditambahkan ke instance Anda.
Tip
Drop-down hanya mencantumkan fungsi-fungsi tersebut di Wilayah yang sama dengan instans Anda. Jika tidak ada fungsi yang terdaftar, pilih Buat fungsi Lambda baru, yang membuka konsol. AWS Lambda
Untuk menggunakan Lambda di Wilayah atau akun yang berbedaMenginvokasi fungsi AWS Lambda , di bawah Pilih fungsi, Anda dapat memasukkan Lambda. ARN Kemudian siapkan kebijakan berbasis sumber daya yang sesuai pada Lambda tersebut untuk memungkinkan aliran memanggilnya.
Untuk menelepon
lambda:AddPermission
, Anda perlu:-
Setel prinsipal ke connect.amazonaws.com
-
Tetapkan akun sumber menjadi akun tempat instance Anda berada.
-
Atur sumber ARN ke ARN instance Anda.
Untuk informasi selengkapnya, lihat Memberikan akses fungsi ke akun lain.
-
-
Pilih Tambahkan Fungsi Lambda. Konfirmasikan bahwa fungsi ditambahkan di bawah Fungsi Lambda. ARN
Sekarang Anda dapat merujuk ke fungsi Lambda itu dalam aliran Anda.
Memanggil fungsi Lambda dari aliran
-
Buka atau buat aliran.
-
Tambahkan Menginvokasi fungsi AWS Lambda blok (dalam grup Integrate) ke grid. Hubungkan cabang ke dan dari blok.
-
Pilih judul Menginvokasi fungsi AWS Lambda blok untuk membuka halaman propertinya.
-
Di bawah Pilih fungsi, pilih dari daftar fungsi yang telah Anda tambahkan ke instance Anda.
-
(Opsional) Di bawah Parameter input fungsi, pilih Tambahkan parameter. Anda dapat menentukan pasangan kunci-nilai yang dikirim ke fungsi Lambda saat dipanggil. Anda juga dapat menentukan nilai Timeout untuk fungsi tersebut.
-
Di Timeout (maks 8 detik), tentukan berapa lama menunggu Lambda habis waktu. Setelah waktu ini, kontak merutekan cabang Kesalahan.
Untuk setiap pemanggilan fungsi Lambda dari alur, Anda meneruskan kumpulan informasi default yang terkait dengan kontak yang sedang berlangsung, serta atribut tambahan apa pun yang ditentukan di bagian Parameter input Fungsi untuk blok fungsi AWS Lambda Invoke yang ditambahkan.
Berikut ini adalah contoh JSON permintaan untuk fungsi Lambda:
{ "Details": { "ContactData": { "Attributes": { "exampleAttributeKey1": "exampleAttributeValue1" }, "Channel": "VOICE", "ContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX", "CustomerEndpoint": { "Address": "+1234567890", "Type": "TELEPHONE_NUMBER" }, "CustomerId": "someCustomerId", "Description": "someDescription", "InitialContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX", "InitiationMethod": "INBOUND | OUTBOUND | TRANSFER | CALLBACK", "InstanceARN": "arn:aws:connect:aws-region:1234567890:instance/c8c0e68d-2200-4265-82c0-XXXXXXXXXX", "LanguageCode": "en-US", "MediaStreams": { "Customer": { "Audio": { "StreamARN": "arn:aws:kinesisvideo::eu-west-2:111111111111:stream/instance-alias-contact-ddddddd-bbbb-dddd-eeee-ffffffffffff/9999999999999", "StartTimestamp": "1571360125131", // Epoch time value "StopTimestamp": "1571360126131", "StartFragmentNumber": "100" // Numberic value for fragment number } } }, "Name": "ContactFlowEvent", "PreviousContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX", "Queue": { "ARN": "arn:aws:connect:eu-west-2:111111111111:instance/cccccccc-bbbb-dddd-eeee-ffffffffffff/queue/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "Name": "PasswordReset" "OutboundCallerId": { "Address": "+12345678903", "Type": "TELEPHONE_NUMBER" } }, "References": { "key1": { "Type": "url", "Value": "urlvalue" } }, "SystemEndpoint": { "Address": "+1234567890", "Type": "TELEPHONE_NUMBER" } }, "Parameters": {"exampleParameterKey1": "exampleParameterValue1", "exampleParameterKey2": "exampleParameterValue2" } }, "Name": "ContactFlowEvent" }
Permintaan dibagi menjadi dua bagian:
-
Data kontak—Ini selalu diteruskan oleh Amazon Connect untuk setiap kontak. Beberapa parameter bersifat opsional.
Bagian ini dapat mencakup atribut yang sebelumnya dikaitkan dengan kontak, seperti saat menggunakan blok Atribut kontak Set dalam alur. Peta ini mungkin kosong jika tidak ada atribut yang disimpan.
Gambar berikut menunjukkan di mana atribut ini akan muncul di halaman properti atribut kontak Set.
-
Parameter—Ini adalah parameter khusus untuk panggilan ini yang ditentukan saat Anda membuat fungsi Lambda. Gambar berikut menunjukkan di mana parameter ini akan muncul di halaman properti blok AWS Lambda fungsi Invoke.
Blok Invoke Lambda dapat menerima parameter input JSON dalam format, mengakomodasi tipe data primitif dan bersarang. JSON Berikut ini adalah contoh JSON input yang dapat digunakan di blok Invoke Lambda.
{ "Name": "Jane", "Age":10, "isEnrolledInSchool": true, "hobbies": { "books":["book1", "book2"], "art":["art1", "art2"] } }
Kebijakan coba lagi doa
Jika pemanggilan Lambda Anda dalam alur terhambat, permintaan akan dicoba lagi. Ini juga akan dicoba lagi jika kegagalan layanan umum (kesalahan 500) terjadi.
Saat pemanggilan sinkron mengembalikan kesalahan, Amazon Connect mencoba ulang hingga 3 kali, selama maksimal 8 detik. Pada saat itu, aliran akan berlanjut ke cabang Error.
Untuk mempelajari selengkapnya tentang cara Lambda mencoba ulang, lihat Penanganan Kesalahan dan Percobaan Ulang Otomatis di Lambda. AWS
Praktik terbaik untuk menjalankan beberapa fungsi Lambda
Amazon Connect membatasi durasi urutan fungsi Lambda hingga 20 detik. Waktu habis dengan pesan kesalahan ketika total waktu eksekusi melebihi ambang batas ini. Karena pelanggan mendengar keheningan saat fungsi Lambda berjalan, kami sarankan untuk menambahkan blok prompt Play di antara fungsi agar mereka tetap terlibat selama interaksi yang panjang.
Dengan memecah rantai fungsi Lambda dengan blok prompt Play, Anda dapat memanggil beberapa fungsi yang bertahan lebih lama dari ambang batas 20 detik.
Konfigurasikan fungsi Lambda Anda untuk mengurai acara
Agar berhasil meneruskan atribut dan parameter antara fungsi Lambda dan Amazon Connect, konfigurasikan fungsi Anda untuk mengurai JSON permintaan yang dikirim dari blok AWS Lambda fungsi Invoke atau Atur atribut kontak dengan benar, dan tentukan logika bisnis apa pun yang harus diterapkan. Cara JSON diuraikan tergantung pada runtime yang Anda gunakan untuk fungsi Anda.
Misalnya, kode berikut menunjukkan cara mengakses exampleParameterKey1
dari blok AWS Lambda fungsi Invoke dan exampleAttributeKey1
dari blok atribut kontak Set menggunakan Node.JS:
exports.handler = function(event, context, callback) { // Example: access value from parameter (Invoke AWS Lambda function) let parameter1 = event['Details']['Parameters']['exampleParameterKey1']; // Example: access value from attribute (Set contact attributes block) let attribute1 = event['Details']['ContactData']['Attributes']['exampleAttributeKey1']; // Example: access customer's phone number from default data let phone = event['Details']['ContactData']['CustomerEndpoint']['Address']; // Apply your business logic with the values // ... }
Verifikasi respons fungsi
Tip
Mereferensikan array tidak didukung dalam aliran. Array hanya dapat digunakan dalam fungsi Lambda lain.
Respons fungsi Lambda dapat berupa STRING _ MAP atau JSON dan harus disetel saat mengonfigurasi blok fungsi Invoke AWS Lambda dalam alur. Jika validasi respons diatur ke STRING _MAP, maka fungsi Lambda harus mengembalikan objek datar pasangan kunci/nilai dari tipe string. Jika tidak, jika validasi respons disetel keJSON, fungsi Lambda dapat mengembalikan semua yang JSON valid termasuk bersarang. JSON
Respons Lambda bisa mencapai 32kb. Jika Anda gagal mencapai Lambda, fungsi melempar pengecualian, respons tidak dipahami, atau fungsi Lambda membutuhkan waktu lebih lama daripada batas, aliran melompat ke label. Error
Uji output yang dikembalikan dari fungsi Lambda Anda untuk mengonfirmasi bahwa itu akan dikonsumsi dengan benar saat dikembalikan ke Amazon Connect. Contoh berikut menunjukkan respon sampel di Node.JS:
exports.handler = function(event, context, callback) { // Extract data from the event object let phone = event['Details']['ContactData']['CustomerEndpoint']['Address']; // Get information from your APIs let customerAccountId = getAccountIdByPhone(phone); let customerBalance = getBalanceByAccountId(customerAccountId); let resultMap = { AccountId: customerAccountId, Balance: '$' + customerBalance, } callback(null, resultMap); }
Contoh ini menunjukkan contoh respon menggunakan Python:
def lambda_handler(event, context): // Extract data from the event object phone = event['Details']['ContactData']['CustomerEndpoint']['Address'] // Get information from your APIs customerAccountId = getAccountIdByPhone(phone) customerBalance = getBalanceByAccountId(customerAccountId) resultMap = { "AccountId": customerAccountId, "Balance": '$%s' % customerBalance } return resultMap
Output yang dikembalikan dari fungsi harus berupa objek datar dari pasangan kunci/nilai, dengan nilai yang hanya mencakup karakter alfanumerik, tanda hubung, dan garis bawah. Ukuran data yang dikembalikan harus kurang dari 32 KB dari UTF -8 data.
Contoh berikut menunjukkan JSON output dari fungsi Lambda ini:
{ "AccountId": "a12345689", "Balance": "$1000" }
Jika validasi respons disetel keJSON, maka fungsi Lambda dapat mengembalikan bahkan JSON bersarang, misalnya:
{ "Name": { "First": "John", "Last": "Doe" }, "AccountId": "a12345689", "OrderIds": ["x123", "y123"] }
Anda dapat mengembalikan hasil apa pun selama mereka adalah pasangan nilai kunci sederhana.
Konsumsi respons fungsi Lambda
Ada dua cara untuk menggunakan respons fungsi dalam aliran Anda. Anda dapat langsung mereferensikan variabel yang dikembalikan dari Lambda, atau menyimpan nilai yang dikembalikan dari fungsi sebagai atribut kontak dan kemudian mereferensikan atribut yang disimpan. Saat Anda menggunakan referensi eksternal untuk respons dari fungsi Lambda, referensi akan selalu menerima respons dari fungsi yang paling baru dipanggil. Untuk menggunakan respons dari fungsi sebelum fungsi berikutnya dipanggil, respons harus disimpan sebagai atribut kontak, atau diteruskan sebagai parameter ke fungsi berikutnya.
1. Akses variabel secara langsung
Jika Anda mengakses variabel secara langsung, Anda dapat menggunakannya dalam blok aliran, tetapi mereka tidak termasuk dalam catatan kontak. Untuk mengakses variabel-variabel ini secara langsung di blok aliran, tambahkan blok setelah blok AWS Lambda fungsi Invoke, dan kemudian referensi atribut seperti yang ditunjukkan pada contoh berikut:
Name - $.External.Name
Address - $.External.Address
CallerType - $.External.CallerType
Gambar berikut menunjukkan halaman properti dari blok prompt Play. Variabel ditentukan dalam text-to-speech blok.
Pastikan bahwa nama yang ditentukan untuk atribut sumber cocok dengan nama kunci yang dikembalikan dari Lambda.
2. Simpan variabel sebagai atribut kontak
Jika Anda menyimpan variabel sebagai atribut kontak, Anda dapat menggunakannya di seluruh alur, dan variabel tersebut disertakan dalam catatan kontak.
Untuk menyimpan nilai yang dikembalikan sebagai atribut kontak dan kemudian mereferensikannya, gunakan blok Atribut kontak Set dalam alur Anda setelah blok AWS Lambda fungsi Invoke. Pilih Gunakan atribut, Eksternal untuk Tipe. Mengikuti contoh yang kita gunakan, atur Destination Attribute keMyAccountId
, dan atur atribut keAccountId
, dan lakukan hal yang sama untuk MyBalance
dan Balance. Konfigurasi ini ditunjukkan pada gambar berikut.
Tambahkan Alamat sebagai atribut Sumber dan gunakan returnedContactAddress
sebagai kunci Tujuan. Kemudian tambahkan CallerType
sebagai atribut Sumber dan gunakan returnedContactType
untuk tujuan kunci, seperti yang ditunjukkan pada gambar berikut.
Pastikan bahwa nama yang ditentukan untuk atribut eksternal sumber cocok dengan nama kunci yang dikembalikan dari Lambda.
Tutorial: Buat fungsi Lambda dan panggil dalam alur
Langkah 1: Buat contoh Lambda
Masuk ke AWS Management Console dan buka AWS Lambda konsol di https://console.aws.amazon.com/lambda/
. -
Di AWS Lambda, pilih Buat fungsi.
-
Pilih Penulis dari awal, jika belum dipilih. Di bawah Informasi dasar, untuk nama Fungsi, masukkan MyFirstConnectLambda. Untuk semua opsi lain, terima defaultnya. Opsi ini ditampilkan pada gambar konsol AWS Lambda berikut.
-
Pilih Buat fungsi.
-
Di kotak Sumber kode, di tab index.js, hapus kode templat dari editor kode.
-
Salin dan tempel kode berikut ke editor kode seperti yang ditunjukkan pada gambar berikut:
exports.handler = async (event, context, callback) => { // Extract information const customerNumber = event.Details.ContactData.CustomerEndpoint.Address; const companyName = event.Details.Parameters.companyName; // Fetch data const balance = await fetchBalance(customerNumber, companyName); const support = await fetchSupportUrl(companyName); // Prepare result const resultMap = { customerBalance: balance, websiteUrl: support } callback(null, resultMap); } async function fetchBalance(customerPhoneNumber, companyName) { // Get data from your API Gateway or Database like DynamoDB return Math.floor(Math.random() * 1000); } async function fetchSupportUrl(companyName) { // Get data from your API Gateway or Database like DynamoDB return 'www.GGG.com/support'; }
Kode ini akan menghasilkan hasil acak untukcustomerBalance.
-
Pilih Deploy.
-
Setelah Anda memilih Deploy, pilih Uji untuk meluncurkan editor pengujian.
-
Dalam kotak dialog Configure test event, pilih Create new event. Untuk nama Acara, masukkan ConnectMocksebagai nama pengujian.
-
Di JSON kotak Acara, hapus kode sampel dan masukkan kode berikut sebagai gantinya.
{ "Details": { "ContactData": { "Attributes": {}, "Channel": "VOICE", "ContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX", "CustomerEndpoint": { "Address": "+1234567890", "Type": "TELEPHONE_NUMBER" }, "InitialContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX", "InitiationMethod": "INBOUND | OUTBOUND | TRANSFER | CALLBACK", "InstanceARN": "arn:aws:connect:aws-region:1234567890:instance/c8c0e68d-2200-4265-82c0-XXXXXXXXXX", "PreviousContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX", "Queue": { "ARN": "arn:aws:connect:eu-west-2:111111111111:instance/cccccccc-bbbb-dddd-eeee-ffffffffffff/queue/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "Name": "PasswordReset" }, "SystemEndpoint": { "Address": "+1234567890", "Type": "TELEPHONE_NUMBER" } }, "Parameters": { "companyName": "GGG" } }, "Name": "ContactFlowEvent" }
-
Pilih Simpan.
-
Pilih Uji. Anda akan melihat sesuatu berikut yang mirip dengan gambar berikut:
Saldo Anda akan berbeda. Kode menghasilkan angka acak.
Langkah 2: Tambahkan Lambda Anda ke Amazon Connect
-
Buka konsol Amazon Connect, di https://console.aws.amazon.com/connect/
. -
Pilih alias instans Amazon Connect Anda.
-
Pada menu navigasi, pilih Flows.
-
Di AWS Lambda bagian ini, gunakan kotak dropdown Fungsi Lambda untuk memilih. MyFirstConnectLambda
-
Pilih Tambahkan Fungsi Lambda.
Langkah 3: Buat alur kontak
Gambar berikut adalah contoh aliran yang akan Anda buat menggunakan langkah-langkah dalam prosedur ini. Ini berisi blok berikut: Atur atribut kontak, Prompt Putar, fungsi AWS Panggil Lambda, blok atribut kontak Set lainnya, blok prompt Play lainnya, dan akhirnya blok Putuskan sambungan.
-
Masuk ke situs web Amazon Connect admin di https://
instance name
.my.connect.aws/. -
Pada menu navigasi, buka Routing, Flows, Create a contact flow.
-
Seret Tetapkan atribut kontak blok ke grid, dan konfigurasikan halaman propertinya yang ditunjukkan pada gambar berikut:
-
Namespace = Ditentukan pengguna.
-
Atribut = companyName.
-
Pilih Set secara manual. Nilai = GGG.
-
Pilih Simpan.
-
-
Seret Mainkan prompt blok ke grid, dan konfigurasikan halaman propertinya seperti yang ditunjukkan pada gambar berikut:
-
Pilih Text-to-speech atau mengobrol teks, Setel secara manual, dan atur Interpret. SSML Masukkan teks berikut di kotak untuk teks yang akan diucapkan:
Hello, thank you for calling $.Attributes.companyName inc.
-
Pilih Simpan.
-
-
Seret Mainkan prompt blok lain ke grid, dan konfigurasikan halaman propertinya seperti yang ditunjukkan pada gambar berikut:
-
Pilih Text-to-speech atau mengobrol teks, Setel secara manual, dan atur Interpret as to Text. Masukkan teks berikut di kotak untuk teks yang akan diucapkan:
Please try again later.
-
Pilih Simpan.
-
-
Seret Menginvokasi fungsi AWS Lambda blok ke grid, dan konfigurasikan halaman propertinya seperti yang ditunjukkan pada gambar berikut:
-
Pilih Pilih secara manual, lalu pilih MyFirstConnectLambdadari dropdown.
-
Di kotak Kunci Tujuan, masukkan companyName. (Ini dikirim ke Lambda.)
-
Pilih Atur kotak dinamis
-
Untuk Namespace, pilih User Defined.
-
Untuk Atribut, masukkan companyName.
-
Pilih Simpan.
-
-
Seret Tetapkan atribut kontak blok ke grid, pilih Tambahkan atribut lain, dan konfigurasikan halaman propertinya seperti yang ditunjukkan pada gambar berikut:
-
Namespace = Ditentukan Pengguna. Atribut = MyBalance.
-
Pilih Set secara dinamis.
-
Namespace = Eksternal.
-
Atribut = customerBalance. Ini adalah hasil dari Lambda.
-
Pilih Tambahkan atribut lain.
-
Namespace = Ditentukan pengguna.
-
Atribut = Saya URL.
-
Pilih Atur secara dinamis. Namespace = Eksternal.
-
Atribut = websiteUrl. Ini adalah hasil dari Lambda.
-
Pilih Simpan.
-
-
Seret Mainkan prompt blok ke grid, dan konfigurasikan halaman propertinya seperti yang ditunjukkan pada gambar berikut:
-
Pilih Text-to-speech atau teks obrolan, dan atur Interpret. SSML Masukkan teks berikut di dalam kotak:
Your remaining balance is <say-as interpret-as="characters">$.Attributes.MyBalance</say-as>.
Thank you for calling $.Attributes.companyName.
Visit $.Attributes.MyURL for more information.
-
Pilih Simpan.
-
-
Seret Putuskan sambungan/tutup blok ke grid.
-
Hubungkan semua blok sehingga aliran Anda terlihat seperti gambar yang ditampilkan di bagian atas prosedur ini.
-
Masukkan MyFirstConnectFlowsebagai nama, lalu pilih Publikasikan.
-
Pada menu navigasi, buka Saluran, Nomor telepon.
-
Pilih nomor telepon Anda.
-
Pilih MyFirstConnectFlowdan pilih Simpan.
Sekarang cobalah. Panggil nomornya. Anda harus mendengar pesan ucapan, saldo Anda, dan situs web untuk dikunjungi.