Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menyesuaikan segmen dengan AWS Lambda
Ini adalah dokumentasi prarilis untuk fitur dalam rilis beta publik. Dokumentasi ini dapat mengalami perubahan. |
Anda dapat menggunakan AWS Lambda untuk menyesuaikan bagaimana kampanye Amazon Pinpoint melibatkan audiens target Anda. DenganAWS Lambda, Anda dapat mengubah segmen kampanye saat Amazon Pinpoint mengirim pesan kampanye.
AWS Lambda adalah layanan komputasi yang dapat Anda gunakan untuk menjalankan kode tanpa perlu menyediakan atau mengelola server. Anda mengemas kode Anda dan mengunggahnya ke Lambda sebagai fungsi Lambda. Lambda menjalankan fungsi saat fungsi dipanggil, yang mungkin dilakukan secara manual oleh Anda atau secara otomatis sebagai respons terhadap peristiwa. Untuk informasi selengkapnya, lihat Panduan Developer AWS Lambda.
Untuk menetapkan fungsi Lambda ke kampanye, Anda menentukan CampaignHook
setelan kampanye dengan menggunakan sumber daya Kampanye di Amazon Pinpoint API. Pengaturan ini termasuk nama fungsi Lambda. Mereka juga menyertakan CampaignHook
mode, yang menentukan apakah Amazon Pinpoint menerima nilai kembali dari fungsi tersebut.
Fungsi Lambda yang Anda tetapkan ke kampanye disebut sebagai ekstensi Amazon Pinpoint.
Dengan CampaignHook
pengaturan yang ditentukan, Amazon Pinpoint secara otomatis memanggil fungsi Lambda saat menjalankan kampanye, sebelum mengirimkan pesan kampanye. Saat Amazon Pinpoint memanggil fungsi, Amazon Pinpoint menyediakan data peristiwa tentang pengiriman pesan. Data ini mencakup segmen kampanye, yang merupakan daftar titik akhir yang dikirimkan oleh Amazon Pinpoint.
Jika CampaignHook
mode diatur keFILTER
, Amazon Pinpoint memungkinkan fungsi untuk memodifikasi dan mengembalikan segmen sebelum mengirim pesan. Misalnya, fungsi mungkin memperbarui definisi titik akhir dengan atribut yang berisi data dari sumber yang berada di luar Amazon Pinpoint. Atau, fungsi tersebut mungkin memfilter segmen dengan menghapus titik akhir tertentu, berdasarkan kondisi dalam kode fungsi Anda. Setelah Amazon Pinpoint menerima segmen yang dimodifikasi dari fungsi Anda, Amazon Pinpoint akan mengirimkan pesan ke setiap titik akhir segmen menggunakan saluran pengiriman kampanye.
Dengan memproses segmen AndaAWS Lambda, Anda memiliki kontrol lebih besar atas siapa Anda mengirim pesan dan apa isi pesan tersebut. Anda dapat menyesuaikan kampanye Anda secara real time, pada saat pesan kampanye dikirim. Memfilter segmen memungkinkan Anda untuk melibatkan subset segmen yang didefinisikan secara lebih sempit. Menambahkan atau memperbarui atribut endpoint juga memungkinkan Anda membuat data baru tersedia untuk variabel pesan.
catatan
Anda juga dapat menggunakan CampaignHook
pengaturan untuk menetapkan fungsi Lambda yang menangani pengiriman pesan. Jenis fungsi ini berguna untuk mengirimkan pesan melalui saluran khusus yang tidak didukung Amazon Pinpoint, seperti platform media sosial. Untuk informasi selengkapnya, lihat Membuat saluran khusus di Amazon Pinpoint.
Saat menjalankan hook Lambda menggunakan Amazon Pinpoint, fungsi Lambda juga harus berada di wilayah yang sama dengan proyek Amazon Pinpoint.
Untuk mengubah segmen kampanye denganAWS Lambda, pertama-tama buat fungsi yang memproses data peristiwa yang dikirim oleh Amazon Pinpoint dan mengembalikan segmen yang dimodifikasi. Kemudian, otorisasi Amazon Pinpoint untuk menjalankan fungsi dengan menetapkan kebijakan fungsi Lambda. Terakhir, tetapkan fungsi ke satu atau beberapa kampanye dengan menentukan pengaturan. CampaignHook
Data peristiwa
Saat Amazon Pinpoint memanggil fungsi Lambda Anda, fungsi ini menyediakan payload berikut sebagai data peristiwa:
{ "MessageConfiguration": {
Message configuration
} "ApplicationId":ApplicationId
, "CampaignId":CampaignId
, "TreatmentId":TreatmentId
, "ActivityId":ActivityId
, "ScheduledTime":Scheduled Time
, "Endpoints": {EndpointId
: {Endpoint definition
} . . . } }
AWS Lambdameneruskan data acara ke kode fungsi Anda. Data acara menyediakan atribut berikut:
-
MessageConfiguration
— Memiliki struktur yang sama denganDirectMessageConfiguration
objek sumber daya Pesan di Amazon Pinpoint API. -
ApplicationId
— ID proyek Amazon Pinpoint yang menjadi milik kampanye tersebut. -
CampaignId
— ID kampanye Amazon Pinpoint tempat fungsi dipanggil. -
TreatmentId
— ID variasi kampanye yang digunakan untuk pengujian A/B. -
ActivityId
— ID dari aktivitas yang sedang dilakukan oleh kampanye. -
ScheduledTime
Tanggal dan waktu, dalam format ISO 8601, saat pesan kampanye akan dikirimkan. -
Endpoints
— Peta yang mengaitkan ID titik akhir dengan definisi titik akhir. Setiap payload data peristiwa berisi hingga 50 titik akhir. Jika segmen kampanye berisi lebih dari 50 titik akhir, Amazon Pinpoint akan memanggil fungsi berulang kali, dengan hingga 50 titik akhir sekaligus, hingga semua titik akhir diproses.
Membuat fungsi Lambda
Untuk mempelajari cara membuat fungsi Lambda, lihat Memulai di Panduan AWS Lambda Pengembang. Saat Anda membuat fungsi, ingatlah bahwa pengiriman pesan gagal dalam kondisi berikut:
-
Fungsi Lambda membutuhkan waktu lebih dari 15 detik untuk mengembalikan segmen yang dimodifikasi.
-
Amazon Pinpoint tidak dapat memecahkan kode nilai pengembalian fungsi.
-
Fungsi ini membutuhkan lebih dari 3 upaya dari Amazon Pinpoint untuk berhasil memanggilnya.
Amazon Pinpoint hanya menerima definisi titik akhir dalam nilai pengembalian fungsi. Fungsi tidak dapat memodifikasi elemen lain dalam data peristiwa.
Contoh fungsi Lambda
Fungsi Lambda Anda memproses data peristiwa yang dikirim oleh Amazon Pinpoint, dan mengembalikan titik akhir yang dimodifikasi, seperti yang ditunjukkan oleh contoh handler berikut, yang ditulis dalam Node.js:
'use strict'; exports.handler = (event, context, callback) => { for (var key in event.Endpoints) { if (event.Endpoints.hasOwnProperty(key)) { var endpoint = event.Endpoints[key]; var attr = endpoint.Attributes; if (!attr) { attr = {}; endpoint.Attributes = attr; } attr["CreditScore"] = [ Math.floor(Math.random() * 200) + 650]; } } console.log("Received event:", JSON.stringify(event, null, 2)); callback(null, event.Endpoints); };
Lambda meneruskan data peristiwa ke handler sebagai parameter. event
Dalam contoh ini, handler iterasi melalui setiap titik akhir dalam event.Endpoints
objek, dan menambahkan atribut baru,CreditScore
, ke titik akhir. Nilai CreditScore
atribut hanyalah angka acak.
console.log()
Pernyataan mencatat peristiwa di CloudWatch Log.
callback()
Pernyataan tersebut mengembalikan titik akhir yang dimodifikasi ke Amazon Pinpoint. Biasanya, callback
parameter opsional dalam fungsi Lambda Node.js, tetapi diperlukan dalam konteks ini karena fungsi harus mengembalikan titik akhir yang diperbarui ke Amazon Pinpoint.
Fungsi Anda harus mengembalikan titik akhir dalam format yang sama yang disediakan oleh data peristiwa, yaitu peta yang mengaitkan ID titik akhir dengan definisi titik akhir, seperti pada contoh berikut:
{
"eqmj8wpxszeqy/b3vch04sn41yw": {
"ChannelType": "GCM",
"Address": "4d5e6f1a2b3c4d5e6f7g8h9i0j1a2b3c",
"EndpointStatus": "ACTIVE",
"OptOut": "NONE",
"Demographic": {
"Make": "android"
},
"EffectiveDate": "2017-11-02T21:26:48.598Z",
"User": {}
},
"idrexqqtn8sbwfex0ouscod0yto": {
"ChannelType": "APNS",
"Address": "1a2b3c4d5e6f7g8h9i0j1a2b3c4d5e6f",
"EndpointStatus": "ACTIVE",
"OptOut": "NONE",
"Demographic": {
"Make": "apple"
},
"EffectiveDate": "2017-11-02T21:26:48.598Z",
"User": {}
}
}
Fungsi contoh memodifikasi dan mengembalikan event.Endpoints
objek yang diterima dalam data peristiwa.
Secara opsional, Anda dapat menyertakan BodyOverride
atribut TitleOverride
dan dalam definisi titik akhir yang Anda kembalikan.
catatan
Saat Anda menggunakan solusi ini untuk mengirim pesan, Amazon Pinpoint menghormati BodyOverride
atribut TitleOverride
dan hanya untuk titik akhir yang nilai atributnya adalah salah satu dari yang berikut:ADM
,,,,,,,,APNS
, APNS_SANDBOX
APNS_VOIP
APNS_VOIP_SANDBOX
, BAIDU
atau. ChannelType
GCM
SMS
Amazon Pinpoint tidak menghormati atribut ini untuk titik akhir di mana nilai atributnya berada. ChannelType
EMAIL
Menetapkan kebijakan fungsi Lambda
Sebelum Anda dapat menggunakan fungsi Lambda untuk memproses titik akhir Anda, Anda harus mengotorisasi Amazon Pinpoint untuk menjalankan fungsi Lambda Anda. Untuk memberikan izin pemanggilan, tetapkan kebijakan fungsi Lambda ke fungsi tersebut. Kebijakan fungsi Lambda adalah kebijakan izin berbasis sumber daya yang menetapkan entitas mana yang dapat menggunakan fungsi Anda dan tindakan apa yang dapat dilakukan entitas tersebut.
Untuk informasi selengkapnya, lihat Menggunakan kebijakan berbasis sumber daya AWS Lambda di Panduan Pengembang. AWS Lambda
Contoh kebijakan fungsi
Kebijakan berikut memberikan izin kepada prinsipal layanan Amazon Pinpoint untuk menggunakan tindakan lambda:InvokeFunction
tersebut untuk kampanye tertentu (
campaign-id):
{ "Sid": "
sid
", "Effect": "Allow", "Principal": { "Service": "pinpoint.us-east-1.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "{arn:aws:lambda:us-east-1:account-id
:function:function-name
}", "Condition": { "StringEquals": { "AWS:SourceAccount": "111122223333
" }, "ArnLike": { "AWS:SourceArn": "arn:aws:mobiletargeting:us-east-1:account-id
:apps/application-id
/campaigns/campaign-id
" } } }
Kebijakan fungsi Anda memerlukan Condition
blok yang menyertakan AWS:SourceArn
kunci. Kode ini menyatakan kampanye Amazon Pinpoint mana yang diizinkan untuk menjalankan fungsi tersebut. Dalam contoh ini, kebijakan hanya memberikan izin untuk satu kampanye. Condition
Blok juga harus menyertakan AWS:SourceAccount
kunci, yang mengontrol AWS akun mana yang dapat menjalankan tindakan.
Untuk menulis kebijakan yang lebih umum, gunakan wildcard pencocokan multikarakter (*). Misalnya, Anda dapat menggunakan Condition
blok berikut untuk mengizinkan kampanye apa pun dalam proyek Amazon Pinpoint tertentu (application-id
) untuk menjalankan fungsi:
... "Condition": { "StringEquals": { "AWS:SourceAccount": "
111122223333
" }, "ArnLike": { "AWS:SourceArn": "arn:aws:mobiletargeting:us-east-1:account-id
:apps/application-id
/campaigns/*" } } ...
Jika Anda ingin fungsi Lambda menjadi fungsi default yang digunakan oleh semua kampanye untuk proyek, sebaiknya Anda mengonfigurasi Condition
blok untuk kebijakan tersebut dengan cara sebelumnya. Untuk informasi tentang menyetel fungsi Lambda sebagai default untuk semua kampanye dalam proyek, lihat. Menetapkan fungsi Lambda ke kampanye
Memberikan izin pemanggilan Amazon Pinpoint
Anda dapat menggunakan AWS Command Line Interface (AWS CLI) untuk menambahkan izin ke kebijakan fungsi Lambda yang ditetapkan ke fungsi Lambda Anda. Untuk mengizinkan Amazon Pinpoint memanggil fungsi untuk kampanye tertentu, add-permission
gunakan perintah Lambda, seperti yang ditunjukkan pada contoh berikut:
$
aws lambda add-permission \
>
--function-name
function-name
\>
--statement-id
sid
\>
--action lambda:InvokeFunction \
>
--principal pinpoint.us-east-1.amazonaws.com \
>
--source-account
111122223333
>
--source-arn arn:aws:mobiletargeting:
us-east-1
:account-id
:apps/application-id
/campaigns/campaign-id
Anda dapat mencari ID kampanye Anda dengan menggunakan perintah get-campaign di. AWS CLI Anda juga dapat mencari ID aplikasi Anda dengan menggunakan perintah get-apps.
Ketika Anda menjalankan add-permission
perintah Lambda, Lambda mengembalikan output berikut:
{ "Statement": "{\"Sid\":\"sid\", \"Effect\":\"Allow\", \"Principal\":{\"Service\":\"pinpoint.us-east-1.amazonaws.com\"}, \"Action\":\"lambda:InvokeFunction\", \"Resource\":\"arn:aws:lambda:us-east-1:111122223333:function:function-name\", \"Condition\": {\"ArnLike\": {\"AWS:SourceArn\": \"arn:aws:mobiletargeting:us-east-1:111122223333:apps/application-id/campaigns/campaign-id\"}} {\"StringEquals\": {\"AWS:SourceAccount\": \"111122223333\"}}} }
Nilai Statement
adalah versi string JSON dari pernyataan yang ditambahkan ke kebijakan fungsi Lambda.
Menetapkan fungsi Lambda ke kampanye
Anda dapat menetapkan fungsi Lambda ke kampanye Amazon Pinpoint individual. Atau, Anda dapat mengatur fungsi Lambda sebagai default yang digunakan oleh semua kampanye untuk proyek, kecuali untuk kampanye yang Anda tetapkan fungsi satu per satu.
Untuk menetapkan fungsi Lambda ke kampanye individual, gunakan Amazon Pinpoint API untuk membuat atau memperbarui objek, dan menentukan Campaign
atributnya. CampaignHook
Untuk menetapkan fungsi Lambda sebagai default untuk semua kampanye dalam proyek, buat atau perbarui Settings
sumber daya untuk proyek tersebut, dan tentukan objeknyaCampaignHook
.
Dalam kedua kasus, atur CampaignHook
atribut berikut:
-
LambdaFunctionName
— Nama atau ARN dari fungsi Lambda yang dipanggil Amazon Pinpoint sebelum mengirim pesan untuk kampanye. -
Mode
– Atur keFILTER
. Dengan mode ini, Amazon Pinpoint memanggil fungsi dan menunggunya mengembalikan titik akhir yang dimodifikasi. Setelah menerimanya, Amazon Pinpoint mengirim pesan. Amazon Pinpoint menunggu hingga 15 detik sebelum gagal pengiriman pesan.
Dengan CampaignHook
pengaturan yang ditentukan untuk kampanye, Amazon Pinpoint memanggil fungsi Lambda yang ditentukan sebelum mengirim pesan kampanye. Amazon Pinpoint menunggu untuk menerima titik akhir yang dimodifikasi dari fungsi tersebut. Jika Amazon Pinpoint menerima titik akhir yang diperbarui, maka akan dilanjutkan dengan pengiriman pesan, menggunakan data titik akhir yang diperbarui.