View a markdown version of this page

Contoh 3: Metadata kontekstual - AWS Elemental MediaTailor

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Contoh 3: Metadata kontekstual

Bagian ini memberikan JSONata ekspresi untuk pola umum saat bekerja dengan respons Inferensi GetMetadata Elemental. Gunakan ini di Output blok AWS_SERVICE_REQUEST fungsi Anda.

catatan

GetMetadatamengembalikan items array di mana setiap item mewakili bidikan yang dianalisis dengan kategori IAB taksonomi dan penilaian keamanan GARM merek. Ketika jendela waktu kueri Anda mencakup beberapa bidikan, respons mencakup beberapa item. Ekspresi di bagian berikut menangani ini dengan menggabungkan semua bidikan.

Untuk skema GetMetadata respons Inferensi Elemental lengkap, lihat referensi API Inferensi Elemental.

Membangun jendela waktu kueri

Gunakan ekspresi berikut untuk Body bidang AWS_SERVICE_REQUEST fungsi Anda:

{%'{"outputName": "my-contextual-output", "timeSpecification": {"ptsBased": {"startPts": ' & $string(($exists(inference.previousBreakEndPts) and inference.previousBreakEndPts > inference.pts - 30 * inference.timescale ? inference.previousBreakEndPts : inference.pts - 30 * inference.timescale)) & ', "endPts": ' & $string(inference.pts + 1) & ', "timescale": ' & $string(inference.timescale) & '}}, "parameters": {"contextualMetadata": {}}}' %}

Ekspresi ini memilih tampilan yang lebih inference.previousBreakEndPts baru dan 30 detik, memastikan jendela kueri tidak pernah melebihi 30 detik. Jika inference.previousBreakEndPts tidak tersedia (misalnya, jeda iklan pertama), ekspresi default akan menggunakan tampilan balik 30 detik.

catatan

Ganti my-contextual-output dengan nama output metadata kontekstual Inferensi Elemental Anda.

Ekstrak IAB ID kategori

{%response.statusCode = 200 ? $join($distinct(response.body.items.metadata.contextualMetadata.iabTaxonomy.categories.uniqueId), ',') : ''%}

Hasil: "641,645,324" — IAB ID unik Taksonomi Konten, cocok untuk diteruskan sebagai parameter kueri (misalnya,iab_cats=641,645,324).

Ekstrak IAB jalur kategori

{%response.statusCode = 200 ? $join($distinct(response.body.items.metadata.contextualMetadata.iabTaxonomy.categories.($join(path, ' > '))), '|') : ''%}

Hasil: "Genres > Animation & Anime|Genres > Family/Children|Entertainment > Movies" — jalur taksonomi yang dapat dibaca manusia.

Ekstrak ditandai GARM kategori

{%response.statusCode = 200 ? $join($distinct(response.body.items.metadata.contextualMetadata.garm.suitability.categories[flagged = true].category), ',') : ''%}

Hasil: "ILLEGAL_DRUGS_TOBACCO_ALCOHOL" — kategori untuk dikecualikan dari penargetan iklan atau untuk memberi sinyal masalah keamanan merek ke server keputusan iklan Anda.

Tentukan tertinggi GARM tingkat risiko

{%response.statusCode = 200 and $exists(response.body.items) ? ($names := ['NONE','LOW','MEDIUM','HIGH']; $flagged := response.body.items.metadata.contextualMetadata.garm.suitability.categories[flagged = true].risk; $scores := $map($flagged, function($r){ $r = 'HIGH' ? 3 : $r = 'MEDIUM' ? 2 : $r = 'LOW' ? 1 : 0 }); $count($scores) > 0 ? $names[$max($scores)] : 'NONE') : ''%}

Hasil: "MEDIUM" — tingkat risiko terburuk di semua tembakan dan GARM kategori yang dianalisis. Mengembalikan string kosong jika permintaan gagal atau badan respons hilang, sehingga data yang hilang tidak dilaporkan sebagaiNONE.

Periksa keamanan merek

{%response.statusCode = 200 and $exists(response.body.items) ? $string($not($exists(response.body.items.metadata.contextualMetadata.garm.suitability.categories[flagged = true]))) : ''%}

Hasil: "false" jika ada GARM kategori yang ditandai, "true" jika konten aman untuk merek. Mengembalikan string kosong jika permintaan gagal atau badan respons hilang.

penting

Pen $exists(response.body.items) jaga diperlukan. Respons dapat mengembalikan kode status 200 sementara response.body itu null — misalnya, ketika tubuh melebihi 20.000 karakter atau JSON tidak valid. Tanpa penjaga, ekspresi mengembalikan "true" dan melaporkan konten sebagai merek aman meskipun GARM klasifikasi tidak pernah diterima.

Sinyal kontekstual gabungan

{%response.statusCode = 200 ? $string({'categories': $distinct(response.body.items.metadata.contextualMetadata.iabTaxonomy.categories.($join(path, ' > '))), 'category_ids': $distinct(response.body.items.metadata.contextualMetadata.iabTaxonomy.categories.uniqueId), 'garm_flagged': $distinct(response.body.items.metadata.contextualMetadata.garm.suitability.categories[flagged = true].category)}) : ''%}

Hasil: String JSON menggabungkan semua sinyal kontekstual menjadi satu muatan terstruktur.

Per-shot detail

{%response.statusCode = 200 ? $string(response.body.items.{'pts': pts, 'categories': metadata.contextualMetadata.iabTaxonomy.categories.($join(path, ' > ')), 'garm_flagged': metadata.contextualMetadata.garm.suitability.categories[flagged = true].category}) : ''%}

Hasil: Array objek per bidikan yang mempertahankan konten mana di mana PTS memicu klasifikasi mana. Gunakan ketika logika pengambilan keputusan iklan Anda membutuhkan perincian temporal.

Tips dan praktik terbaik

Gunakan tips berikut saat membangun ekspresi keluaran untuk respons Inferensi Elemental.

  • Selalu periksa response.statusCode sebelum memproses tubuh. Jika panggilan gagal, response.body adalahnull.

  • Gunakan $distinct() untuk mendeduplikasi kategori di beberapa bidikan.

  • Inferensi Elemental mengembalikan beberapa IAB kategori per bidikan dan satu set kategori keamanan GARM merek. Untuk batas saat ini, lihat dokumentasi Inferensi Elemental.

  • Ketika jendela waktu mencakup beberapa bidikan, respons berisi beberapa item dalam items array.

  • Ukuran respons maksimum adalah 20.000 karakter. Jika Anda menerima tanggapan terpotong, kurangi jendela waktu.

  • Gunakan kunci temp.* keluaran saat beranTAI dengan fungsi lain di aSEQUENTIAL_EXECUTOR, dan player_params.* saat meneruskan nilai langsung ke URL server keputusan iklan.

  • Untuk daftar lengkap JSONata fungsi dan operator yang didukung, lihatJSONata referensi ekspresi untuk Fungsi.

Untuk panduan penyiapan lengkap termasuk prasyarat dan kebijakan sumber daya, lihatIntegrasi Inferensi Elemental. Untuk referensi tipe fungsi, lihatAWS permintaan layanan.