Pemberitahuan akhir dukungan: Pada 30 Oktober 2026, AWS akan mengakhiri dukungan untuk Amazon Pinpoint. Setelah 30 Oktober 2026, Anda tidak akan lagi dapat mengakses konsol Amazon Pinpoint atau sumber daya Amazon Pinpoint (titik akhir, segmen, kampanye, perjalanan, dan analitik). Untuk informasi selengkapnya, lihat Amazon Pinpoint akhir dukungan. Catatan: APIs terkait dengan SMS, suara, push seluler, OTP, dan validasi nomor telepon tidak terpengaruh oleh perubahan ini dan didukung oleh AWS End User Messaging.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Buat fungsi Lambda untuk Amazon Pinpoint untuk memanggil model pemberi rekomendasi
Untuk mempelajari cara membuat fungsi Lambda, lihat Memulai di Panduan AWS Lambda Pengembang. Saat Anda merancang dan mengembangkan fungsi Anda, ingatlah persyaratan dan pedoman berikut.
Masukan data peristiwa
Saat Amazon Pinpoint memanggil fungsi Lambda untuk model pemberi rekomendasi, Amazon Pinpoint akan mengirimkan payload yang berisi konfigurasi dan pengaturan lain untuk kampanye atau perjalanan yang mengirim pesan. Payload mencakup Endpoints objek, yang merupakan peta yang mengaitkan titik akhir IDs dengan definisi titik akhir untuk penerima pesan.
Definisi endpoint menggunakan struktur yang ditentukan oleh sumber daya Endpoint dari Amazon Pinpoint API. Namun, mereka juga menyertakan bidang untuk atribut dinamis yang direkomendasikan bernamaRecommendationItems. RecommendationItemsKolom berisi satu atau beberapa item yang direkomendasikan untuk titik akhir, seperti yang dikembalikan dari kampanye Amazon Personalize. Nilai untuk bidang ini adalah array terurut dari 1-5 item yang direkomendasikan (sebagai string). Jumlah item dalam larik bergantung pada jumlah item yang direkomendasikan yang Anda konfigurasi Amazon Pinpoint untuk diambil untuk setiap titik akhir atau pengguna.
Sebagai contoh:
"Endpoints": { "endpointIDexample-1":{ "ChannelType":"EMAIL", "Address":"sofiam@example.com", "EndpointStatus":"ACTIVE", "OptOut":"NONE", "EffectiveDate":"2020-02-26T18:56:24.875Z", "Attributes":{ "AddressType":[ "primary" ] }, "User":{ "UserId":"SofiaMartínez", "UserAttributes":{ "LastName":[ "Martínez" ], "FirstName":[ "Sofia" ], "Neighborhood":[ "East Bay" ] } }, "RecommendationItems":[ "1815", "2009", "1527" ], "CreationDate":"2020-02-26T18:56:24.875Z" }, "endpointIDexample-2":{ "ChannelType":"EMAIL", "Address":"alejandror@example.com", "EndpointStatus":"ACTIVE", "OptOut":"NONE", "EffectiveDate":"2020-02-26T18:56:24.897Z", "Attributes":{ "AddressType":[ "primary" ] }, "User":{ "UserId":"AlejandroRosalez", "UserAttributes":{ "LastName ":[ "Rosalez" ], "FirstName":[ "Alejandro" ], "Neighborhood":[ "West Bay" ] } }, "RecommendationItems":[ "1210", "6542", "4582" ], "CreationDate":"2020-02-26T18:56:24.897Z" } }
Dalam contoh sebelumnya, pengaturan Amazon Pinpoint yang relevan adalah:
-
Model pemberi rekomendasi dikonfigurasi untuk mengambil tiga item yang direkomendasikan untuk setiap titik akhir atau pengguna. (Nilai untuk
RecommendationsPerMessageproperti diatur ke3.) Dengan pengaturan ini, Amazon Pinpoint mengambil dan menambahkan hanya item yang direkomendasikan pertama, kedua, dan ketiga untuk setiap titik akhir atau pengguna. -
Proyek ini dikonfigurasi untuk menggunakan atribut pengguna khusus yang menyimpan nama depan, nama belakang, dan lingkungan tempat mereka tinggal setiap pengguna. (
UserAttributesObjek berisi nilai-nilai untuk atribut ini.) -
Proyek dikonfigurasi untuk menggunakan atribut endpoint kustom (
AddressType) yang menunjukkan apakah titik akhir adalah alamat (saluran) pilihan pengguna untuk menerima pesan dari proyek. (AttributesObjek berisi nilai untuk atribut ini.)
Saat Amazon Pinpoint memanggil fungsi Lambda dan mengirimkan payload ini sebagai data peristiwa, AWS Lambda meneruskan data ke fungsi Lambda untuk diproses.
Setiap muatan dapat berisi data hingga 50 titik akhir. Jika segmen berisi lebih dari 50 titik akhir, Amazon Pinpoint memanggil fungsi berulang kali, hingga 50 titik akhir sekaligus, hingga fungsi memproses semua data.
Data respons dan persyaratan
Saat Anda merancang dan mengembangkan fungsi Lambda Anda, ingatlah kuota untuk model pembelajaran mesin. Jika fungsi tidak memenuhi ketentuan yang ditentukan oleh kuota ini, Amazon Pinpoint tidak akan dapat memproses dan mengirim pesan.
Perhatikan juga persyaratan berikut:
-
Fungsi harus mengembalikan definisi titik akhir yang diperbarui dalam format yang sama yang disediakan oleh data peristiwa masukan.
-
Setiap definisi titik akhir yang diperbarui dapat berisi 1-10 atribut yang direkomendasikan khusus untuk titik akhir atau pengguna. Nama atribut ini harus cocok dengan nama atribut yang Anda tentukan saat mengonfigurasi model pemberi rekomendasi di Amazon Pinpoint.
-
Semua atribut yang direkomendasikan khusus harus dikembalikan dalam satu
Recommendationsobjek untuk setiap titik akhir atau pengguna. Persyaratan ini membantu memastikan bahwa konflik penamaan tidak terjadi. Anda dapat menambahkanRecommendationsobjek ke lokasi mana pun dalam definisi titik akhir. -
Nilai untuk setiap atribut yang direkomendasikan khusus harus berupa string (nilai tunggal) atau array string (beberapa nilai). Jika nilainya adalah larik string, sebaiknya Anda menjaga urutan item yang direkomendasikan yang dikembalikan Amazon Personalize, seperti yang ditunjukkan di
RecommendationItemsbidang. Jika tidak, konten Anda mungkin tidak mencerminkan prediksi model untuk titik akhir atau pengguna. -
Fungsi tidak boleh memodifikasi elemen lain dalam data peristiwa, termasuk nilai atribut lain untuk titik akhir atau pengguna. Seharusnya hanya menambah dan mengembalikan nilai untuk atribut yang direkomendasikan khusus. Amazon Pinpoint tidak akan menerima pembaruan ke nilai lain apa pun dalam respons fungsi.
-
Fungsi tersebut harus di-host di AWS Wilayah yang sama dengan proyek Amazon Pinpoint yang menjalankan fungsi tersebut. Jika fungsi dan proyek tidak berada di Wilayah yang sama, Amazon Pinpoint tidak dapat mengirim data peristiwa ke fungsi tersebut.
Jika salah satu persyaratan sebelumnya tidak terpenuhi, Amazon Pinpoint tidak akan dapat memproses dan mengirim pesan ke satu atau beberapa titik akhir. Ini dapat menyebabkan kampanye atau aktivitas perjalanan gagal.
Terakhir, kami menyarankan Anda memesan 256 eksekusi bersamaan untuk fungsi tersebut.
Secara keseluruhan, fungsi Lambda Anda harus memproses data peristiwa yang dikirim oleh Amazon Pinpoint dan mengembalikan definisi titik akhir yang dimodifikasi. Hal ini dapat dilakukan dengan iterasi melalui setiap titik akhir dalam Endpoints objek dan, untuk setiap titik akhir, membuat dan menetapkan nilai untuk atribut kustom direkomendasikan yang ingin Anda gunakan. Contoh handler berikut, ditulis dengan Python dan dilanjutkan dengan contoh data peristiwa masukan sebelumnya, menunjukkan ini:
import json import string def lambda_handler(event, context): print("Received event: " + json.dumps(event)) print("Received context: " + str(context)) segment_endpoints = event["Endpoints"] new_segment = dict() for endpoint_id in segment_endpoints.keys(): endpoint = segment_endpoints[endpoint_id] if supported_endpoint(endpoint): new_segment[endpoint_id] = add_recommendation(endpoint) print("Returning endpoints: " + json.dumps(new_segment)) return new_segment def supported_endpoint(endpoint): return True def add_recommendation(endpoint): endpoint["Recommendations"] = dict() customTitleList = list() customGenreList = list() for i,item in enumerate(endpoint["RecommendationItems"]): item = int(item) if item == 1210: customTitleList.insert(i, "Hanna") customGenreList.insert(i, "Action") elif item == 1527: customTitleList.insert(i, "Catastrophe") customGenreList.insert(i, "Comedy") elif item == 1815: customTitleList.insert(i, "Fleabag") customGenreList.insert(i, "Comedy") elif item == 2009: customTitleList.insert(i, "Late Night") customGenreList.insert(i, "Drama") elif item == 4582: customTitleList.insert(i, "Agatha Christie\'s The ABC Murders") customGenreList.insert(i, "Crime") elif item == 6542: customTitleList.insert(i, "Hunters") customGenreList.insert(i, "Drama") endpoint["Recommendations"]["Title"] = customTitleList endpoint["Recommendations"]["Genre"] = customGenreList return endpoint
Dalam contoh sebelumnya, AWS Lambda meneruskan data peristiwa ke handler sebagai parameter. event Handler iterasi melalui setiap titik akhir dalam Endpoints objek dan menetapkan nilai untuk atribut yang direkomendasikan khusus bernama dan. Recommendations.Title Recommendations.Genre returnPernyataan tersebut mengembalikan setiap definisi titik akhir yang diperbarui ke Amazon Pinpoint.
Melanjutkan dengan contoh data peristiwa masukan sebelumnya, definisi titik akhir yang diperbarui adalah:
"Endpoints":{ "endpointIDexample-1":{ "ChannelType":"EMAIL", "Address":"sofiam@example.com", "EndpointStatus":"ACTIVE", "OptOut":"NONE", "EffectiveDate":"2020-02-26T18:56:24.875Z", "Attributes":{ "AddressType":[ "primary" ] }, "User":{ "UserId":"SofiaMartínez", "UserAttributes":{ "LastName":[ "Martínez" ], "FirstName":[ "Sofia" ], "Neighborhood":[ "East Bay" ] } }, "RecommendationItems":[ "1815", "2009", "1527" ], "CreationDate":"2020-02-26T18:56:24.875Z", "Recommendations":{ "Title":[ "Fleabag", "Late Night", "Catastrophe" ], "Genre":[ "Comedy", "Comedy", "Comedy" ] } }, "endpointIDexample-2":{ "ChannelType":"EMAIL", "Address":"alejandror@example.com", "EndpointStatus":"ACTIVE", "OptOut":"NONE", "EffectiveDate":"2020-02-26T18:56:24.897Z", "Attributes":{ "AddressType":[ "primary" ] }, "User":{ "UserId":"AlejandroRosalez", "UserAttributes":{ "LastName ":[ "Rosalez" ], "FirstName":[ "Alejandro" ], "Neighborhood":[ "West Bay" ] } }, "RecommendationItems":[ "1210", "6542", "4582" ], "CreationDate":"2020-02-26T18:56:24.897Z", "Recommendations":{ "Title":[ "Hanna", "Hunters", "Agatha Christie\'s The ABC Murders" ], "Genre":[ "Action", "Drama", "Crime" ] } } }
Dalam contoh sebelumnya, fungsi memodifikasi Endpoints objek yang diterima dan mengembalikan hasilnya. EndpointObjek untuk setiap endpoint sekarang berisi Recommendations objek baru, yang berisi Title dan Genre bidang. Masing-masing bidang ini menyimpan array berurutan dari tiga nilai (sebagai string), di mana setiap nilai menyediakan konten yang disempurnakan untuk item yang direkomendasikan yang sesuai di RecommendationItems bidang.