Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Fungsi kait siklus hidup
Kait siklus hidup menentukan kapan MediaTailor menjalankan fungsi Anda selama pemutaran. Halaman ini adalah referensi lengkap untuk bidang input, ruang nama keluaran, dan aturan yang mengatur aliran data di setiap hook.
Gambaran umum
MediaTailor mendukung empat kait siklus hidup:
-
PRE_SESSION_INITIALIZATIONmenyala sekali saat pemirsa memulai sesi baru. Gunakan untuk pekerjaan pengaturan satu kali seperti mengambil segmen audiens. Pada titik ini, tidak ada jeda iklan yang terjadi, sehingga konteks jeda iklan tidak tersedia. -
PRE_ADS_REQUESTdiaktifkan sebelum setiap permintaan server keputusan iklan (ADS) — sekali per jeda iklan di aliran. Gunakan untuk menyesuaikan permintaan ADS dengan data penargetan, mengubah URL ADS, atau menambahkan header. -
POST_ADS_RESPONSEdiaktifkan setelah MediaTailor menerima dan mengurai respons ADS, termasuk resolusi pengalihan pembungkus Template Penayangan Iklan Video (VAST). Gunakan untuk memfilter, menyusun ulang, memodifikasi, atau melengkapi iklan yang ditampilkan ADS, sebelum MediaTailor memilih iklan untuk disisipkan. -
PRE_MANIFEST_INSERTIONdiaktifkan di akhir personalisasi jeda iklan, setelah pemilihan iklan, pemeriksaan transkode, dan kebijakan isi, segera sebelum MediaTailor menulis iklan ke manifes. Gunakan untuk memeriksa atau memodifikasi kumpulan iklan akhir, termasuk menyuntikkan iklan tambahan ke jeda iklan yang kurang terisi.
Kait berbeda dalam waktu dan ruang lingkup. PRE_SESSION_INITIALIZATIONberjalan sekali dan mengatur data yang bertahan untuk seluruh sesi. PRE_ADS_REQUESTdan POST_ADS_RESPONSE berjalan di sekitar setiap interaksi ADS. PRE_ADS_REQUESTmembentuk permintaan keluar, dan POST_ADS_RESPONSE bertindak berdasarkan respons yang diurai sebelum pemilihan iklan. PRE_MANIFEST_INSERTIONberjalan setelah seleksi selesai dan melihat iklan akhir yang ditetapkan untuk semua jeda iklan yang baru dipersonalisasi dalam satu pemanggilan.
penting
H PRE_ADS_REQUEST ookPOST_ADS_RESPONSE,, PRE_MANIFEST_INSERTION dan berbagi anggaran eksekusi gabungan 2.000 ms untuk satu permintaan. Anggaran ini merupakan tambahan untuk batas waktu 2.000 ms masing-masing hook sendiri. Batas waktu efektif hook adalah batas waktu yang lebih kecil dan anggaran yang tersisa. Waktu yang dihabiskan oleh hook sebelumnya mengurangi waktu yang tersedia untuk kait nanti dalam permintaan yang sama. Jika sisa anggaran habis sebelum hook dimulai, le MediaTailor wati hook itu dan lanjutkan memproses permintaan tanpa itu. PRE_SESSION_INITIALIZATIONberjalan selama inisialisasi sesi dan bukan bagian dari anggaran gabungan. Untuk informasi selengkapnya, lihat Batas.
catatan
Dalam dokumentasi ini, jeda iklan juga disebut menguntungkan. Nama bidang masukan (seperti avail.availId danavails.avails) dan CloudWatch metrik menggunakan avail formulir.
Referensi bidang masukan
Tabel berikut mencantumkan bidang input yang tersedia di setiap kait siklus hidup. Di kolom Field, parent[].child notasi menunjukkan bidang dari setiap elemen dalam parent array.
catatan
Peng POST_ADS_RESPONSE ait PRE_MANIFEST_INSERTION and mengekspos bidang sesi di camelCase (misalnya,session.clientIp), sedangkan dua hook pertama menggunakan snake_case (misalnya,). session.client_ip Parameter pemain tersedia melalui player_params namespace di dua kait pertama dan sebagai session.playerParams objek di dua lainnya.
| Bidang | Tipe | PRA_SESSION_INISIALISASI | PRA_IKLAN_PERMINTAAN | POST_ADS_RESPONS | PRA_MANIFEST_PENYISIPAN |
|---|---|---|---|---|---|
session.id | Panjang | ✓ | ✓ | ✓ | ✓ |
session.uuid | String | ✓ | ✓ | ✓ | ✓ |
session.client_ip | String | ✓ | ✓ | ✗ | ✗ |
session.clientIp | String | ✗ | ✗ | ✓ | ✓ |
session.user_agent | String | ✓ | ✓ | ✗ | ✗ |
session.userAgent | String | ✗ | ✗ | ✓ | ✓ |
session.referer* | String | ✓ | ✓ | ✗ | ✗ |
session.avail_duration_secs | Panjang | ✗ | ✓ | ✗ | ✗ |
session.avail_duration_ms | Panjang | ✗ | ✓ | ✗ | ✗ |
session.streamingProtocol | String | ✗ | ✗ | ✓ | ✓ |
session.playerParams | Objek | ✗ | ✗ | ✓ | ✓ |
player_params.* | String | ✓ | ✓ | ✗ | ✗ |
event.id | String | ✓ | ✓ | ✓ | ✓ |
event.hook | String | ✓ | ✓ | ✓ | ✓ |
event.timestamp | String | ✓ | ✓ | ✓ | ✓ |
avail.index | Int | ✗ | ✓ | ✗ | ✗ |
avail.random | Panjang | ✗ | ✓ | ✗ | ✗ |
avail.source_content_time_epoch_ms | Panjang | ✗ | ✓ | ✗ | ✗ |
avail.availId† | String | ✗ | ✗ | ✓ | ✗ |
avail.durationSeconds† | Number | ✗ | ✗ | ✓ | ✗ |
avail.startTime† | String | ✗ | ✗ | ✓ | ✗ |
scte.event_id | Int | ✗ | ✓ | ✗ | ✗ |
scte.avail_num | Int | ✗ | ✓ | ✗ | ✗ |
scte.segmentation_event_id | Int | ✗ | ✓ | ✗ | ✗ |
scte.segmentation_type_id | Int | ✗ | ✓ | ✗ | ✗ |
scte.segmentation_upid | String | ✗ | ✓ | ✗ | ✗ |
scte.segmentation_upid.assetId | String | ✗ | ✓ | ✗ | ✗ |
scte.segmentation_upid.cueData.key | String | ✗ | ✓ | ✗ | ✗ |
scte.segmentation_upid.cueData.value | String | ✗ | ✓ | ✗ | ✗ |
scte.unique_program_id | Int | ✗ | ✓ | ✗ | ✗ |
scte.archive_allowed_flag | Boolean | ✗ | ✓ | ✗ | ✗ |
scte.delivery_not_restricted_flag | Boolean | ✗ | ✓ | ✗ | ✗ |
scte.device_restrictions | Int | ✗ | ✓ | ✗ | ✗ |
scte.no_regional_blackout_flag | Boolean | ✗ | ✓ | ✗ | ✗ |
scte.segment_num | Int | ✗ | ✓ | ✗ | ✗ |
scte.segments_expected | Int | ✗ | ✓ | ✗ | ✗ |
scte.sub_segment_num | Int | ✗ | ✓ | ✗ | ✗ |
scte.sub_segments_expected | Int | ✗ | ✓ | ✗ | ✗ |
scte.avails_expected | Panjang | ✗ | ✓ | ✗ | ✗ |
asset.* | String | ✗ | ✓ | ✗ | ✗ |
inference.enriched | Boolean | ✗ | ✓ | ✗ | ✗ |
inference.feedId | String | ✗ | ✓ | ✗ | ✗ |
inference.dataEndpoint | String | ✗ | ✓ | ✗ | ✗ |
inference.pts | Panjang | ✗ | ✓ | ✗ | ✗ |
inference.timescale | Panjang | ✗ | ✓ | ✗ | ✗ |
inference.region | String | ✗ | ✓ | ✗ | ✗ |
inference.previousBreakEndPts | Panjang | ✗ | ✓ | ✗ | ✗ |
inference.parseError | Boolean | ✗ | ✓ | ✗ | ✗ |
adsRequest.url | String | ✗ | ✓ | ✓ | ✗ |
adsRequest.method | String | ✗ | ✓ | ✓ | ✗ |
adsRequest.headers.<key> | String | ✗ | ✓ | ✓ | ✗ |
adsRequest.body | String | ✗ | ✓ | ✗ | ✗ |
adsResponse.responseType | String | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads | Array | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].adId‡ | String | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].durationSeconds | Number | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].adSystem | String | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].adTitle | String | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].creativeId | String | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].sequence | Int | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].mediaFiles | Array | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].mediaFiles[].url | String | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].mediaFiles[].mimeType | String | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].mediaFiles[].width | Int | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].mediaFiles[].height | Int | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].mediaFiles[].bitrate | Int | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].trackingEvents.<eventType> | Array String | ✗ | ✗ | ✓ | ✗ |
avails.avails | Array | ✗ | ✗ | ✗ | ✓ |
avails.avails[].availId | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].durationSeconds | Number | ✗ | ✗ | ✗ | ✓ |
avails.avails[].startTime | Bilangan | ✗ | ✗ | ✗ | ✓ |
avails.avails[].mediaProtocol | Tali (HLS|DASH) | ✗ | ✗ | ✗ | ✓ |
avails.avails[].streamingMode | Tali (LIVE|VOD) | ✗ | ✗ | ✗ | ✓ |
avails.avails[].fillDurationSeconds | Bilangan | ✗ | ✗ | ✗ | ✓ |
avails.avails[].fillRate | Nomor (0—1) | ✗ | ✗ | ✗ | ✓ |
avails.avails[].mutable | Boolean | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads | Array | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].adId§ | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].vastAdId | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].creativeId | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].insertionUuid | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].sequenceInAvail | Int | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].durationSeconds | Bilangan | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].adSystem¶ | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].adTitle¶ | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].mediaUrl | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].trackingEvents.<eventType> | Array String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].mediaFiles | Array | ✗ | ✗ | ✗ | ✓ |
avails.avails[].skippedAds | Array | ✗ | ✗ | ✗ | ✓ |
avails.avails[].skippedAds[].adId | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].skippedAds[].vastAdId | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].skippedAds[].durationSeconds | Number | ✗ | ✗ | ✗ | ✓ |
avails.avails[].skippedAds[].creativeUrl | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].skippedAds[].reason | String | ✗ | ✗ | ✗ | ✓ |
* hanya session.referer hadir ketika header Referer disertakan dalam permintaan inisialisasi sesi. Gunakan $exists(session.referer) untuk memeriksa sebelum mengakses.
† avail Namespace hanya hadir ketika respons ADS berlaku untuk jeda iklan tunggal. Itu tidak ada untuk respons multi-break (VMAP) atau respons yang diambil sebelumnya. Gunakan $exists(avail) untuk memeriksa sebelum mengakses.
‡ AtPOST_ADS_RESPONSE, adId adalah id atribut dari <Ad> elemen VAST.
§ AtPRE_MANIFEST_INSERTION, adId adalah pengidentifikasi penempatan internal. Ini stabil untuk iklan dalam jeda iklannya, tetapi ini bukan ID iklan VAST dan tidak sebanding di seluruh jeda iklan atau lintas kait. Untuk pemeriksaan identitas yang mencakup jeda atau kait iklan, gunakan vastAdId (idatribut <Ad> elemen VAST) ataucreativeId.
¶ Pada aliran VOD DASH, adTitle dan adSystem berada null di hook ini. Gunakan vastAdId atau creativeId dalam predikat di sana.