翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
入札の構築とテンプレート化
このページでは、MediaTailor がテンプレートから OpenRTB 入札リクエストを構築する方法、変数補間の仕組み、MediaTailor が自動的に設定する値について説明します。
設定フィールド
再生設定で収量最適化を有効にする場合は、次の 4 つのフィールドを指定します。
| フィールド | 説明 | 必須 |
|---|---|---|
PublisherId |
APS パブリッシャー ID (APS 登録から取得)。すべての入札リクエストapp.publisher.idで に挿入されます。 |
はい |
Region |
APS リージョン: AMERICAS、EUROPE、または ASIA_PACIFIC。APS エンドポイントを決定します。 |
はい |
MinimumUnfilledDuration |
MediaTailor が入札リクエストをトリガーするまでに必要な最小未入力秒数。としても使用されますimp.video.minduration。 |
はい |
OpenRtbTemplate |
ORTB JSON テンプレート (最大 100 KB)。入札リクエスト本文を定義します。 | はい |
入札リクエストの構築方法
広告時間枠に未入力の期間が残っている場合、MediaTailor は次のステップで入札リクエストを作成します。
-
テンプレート補間。MediaTailor は
{{session.*}}、標準の Mustache テンプレート構文を使用して、テンプレート内の 、 {{asset.*}}、、{{player_params.*}}{{avail.*}}{{request.*}}、、および{{scte.*}}プレースホルダーを解決します。Mustache は{{ }}、ADS URL 変数置換[ ]で使用される角括弧とは異なる二重中括弧 を使用します。 -
JSON 解析。補間されたテンプレートは JSON として解析されます。
-
フィールドの抽出と検証。MediaTailor は必須フィールドを抽出し、不足または空
BidRequestConfigurationErrorの場合は をスローします。 -
ハードコードされたフィールドインジェクション。MediaTailor は、コンソール設定の値と現在の表示コンテキスト (
app.publisher.id設定されたパブリッシャー ID、計算された未入力の期間など) を使用して、自動的に管理されるフィールドを上書きまたは挿入imp.video.maxdurationします。 -
シリアル化と送信。最後の BidRequest は JSON にシリアル化され、HTTP POST として APS エンドポイントに送信されます。
重要
補間後に必須フィールドがないか空の場合、入札リクエストは で失敗BidRequestConfigurationErrorし、リクエストは APS に送信されません。エラーはログに記録されますが、再生は正常に続行されます (失敗-オープン)。
コンソールのデフォルトテンプレート
MediaTailor コンソールで yield Optimization を有効にすると、開始点として次の事前入力済みテンプレートが提供されます。アプリケーションの値をカスタマイズする必要があります。
{ "imp": [ { "bidfloor": 5 } ], "app": { "id": "{{player_params.app_id}}", "name": "{{player_params.app_name}}", "bundle": "{{player_params.bundle}}", "storeurl": "{{player_params.storeurl}}", "domain": "{{player_params.domain}}", "content": { "genre": "{{asset.genre}}", "contentrating": "{{asset.content_rating}}" } }, "device": { "dnt": "{{player_params.dnt}}", "ua": "{{session.user_agent}}", "ip": "{{session.client_ip}}", "ifa": "{{player_params.device_ifa}}", "w": "{{player_params.device_width}}", "h": "{{player_params.device_height}}", "language": "{{player_params.language}}", "model": "{{player_params.model}}", "os": "{{player_params.os}}", "osv": "{{player_params.osv}}", "devicetype": "{{player_params.devicetype}}", "make": "{{player_params.make}}" }, "user": { "consent": "{{player_params.consent}}" }, "regs": { "gdpr": "{{player_params.gdpr}}", "us_privacy": "{{player_params.us_privacy}}", "gpp": "{{player_params.gpp_consent}}", "gpp_sid": "{{player_params.gpp_sid}}" } }
Field-by-field説明:
| フィールド | Category | 対応方法 |
|---|---|---|
imp[0].bidfloor |
オプション (デフォルト: 1.0) | 最小 CPM を設定します。コンソールのデフォルトは 5 USD です。テスト中のフィルレートを向上させるには、 を低くします。 |
app.id |
APS 推奨 | アプリ識別子。プレイヤーは を送信する必要がありますplayerParams.app_id。 |
app.name |
APS 推奨 | アプリ名。プレイヤーは を送信する必要がありますplayerParams.app_name。 |
app.bundle |
必須 | アプリバンドル ID。プレイヤーは を送信するかplayerParams.bundle、 を静的値 (推奨) に置き換える必要があります。 |
app.storeurl |
必須 | アプリストア URL。プレイヤーは を送信するかplayerParams.storeurl、 を静的値 (推奨) に置き換える必要があります。 |
app.domain |
APS 推奨 | アプリドメイン。プレイヤーは を送信する必要がありますplayerParams.domain。 |
app.content.genre |
APS 推奨 | コンテンツソースアセットメタデータから入力されます。 |
app.content.contentrating |
APS 推奨 | コンテンツソースアセットメタデータから入力されます。 |
device.dnt |
APS 推奨 | Do Not Track フラグ。プレイヤーは を送信する必要がありますplayerParams.dnt。 |
device.ua |
必須 | ビューワーの User-Agent ヘッダーから を介して自動的に入力されます{{session.user_agent}}。プレイヤーパラメータは必要ありません。 |
device.ip |
必須 | を介してビューワーの IP から自動的に入力されます{{session.client_ip}}。プレイヤーパラメータは必要ありません。 |
device.ifa |
APS 推奨 | 広告 ID。プレイヤーは を送信する必要がありますplayerParams.device_ifa。 |
device.w / device.h |
APS 推奨 | 画面のディメンション。プレイヤーは playerParams.device_width / を送信する必要がありますdevice_height。 |
device.language |
APS 推奨 | デバイス言語。プレイヤーは を送信する必要がありますplayerParams.language。 |
device.model |
APS 推奨 | デバイスモデル。プレイヤーは を送信する必要がありますplayerParams.model。 |
device.os / device.osv |
APS 推奨 | OS とバージョン。プレイヤーは playerParams.os / を送信する必要がありますosv。 |
device.devicetype |
上書き可能 (デフォルト: 3) | IAB デバイスタイプ。プレイヤーは を送信する必要がありますplayerParams.devicetype。空の場合、デフォルトは 3 (CTV) です。 |
device.make |
APS 推奨 | デバイス製造元。プレイヤーは を送信する必要がありますplayerParams.make。 |
user.consent |
APS 推奨 (EU) | GDPR 同意文字列 (TCF)。プレイヤーは を送信する必要がありますplayerParams.consent。 |
regs.gdpr |
APS 推奨 (EU) | GDPR フラグ (0 または 1)。プレイヤーは を送信する必要がありますplayerParams.gdpr。 |
regs.us_privacy |
APS 推奨 (米国) | CCPA 文字列 ( など1YNY)。プレイヤーは を送信する必要がありますplayerParams.us_privacy。 |
regs.gpp |
APS 推奨 | グローバルプライバシープラットフォームの同意文字列。プレイヤーは を送信する必要がありますplayerParams.gpp_consent。フィルレートを向上させるus_privacyには、 よりも優先されます。 |
regs.gpp_sid |
APS 推奨 | GPP IDs (米国国民[7]向けなど)。プレイヤーは を送信する必要がありますplayerParams.gpp_sid。 |
重要
コンソールのデフォルトは、 app.bundleや などの必須フィールド{{player_params.*}}に を使用しますapp.storeurl。プレイヤーがこれらのパラメータを送信しない場合、入札リクエストは で失敗しますBidRequestConfigurationError。すべてのセッションで同じフィールド (通常は app.bundle、app.storeurl、app.name、およびその他のアプリケーションレベルの識別子) の場合は、プレースホルダーを静的値 (例: ) に置き換えることを検討してください"bundle": "com.yourcompany.app"。device.ua、、、device.ipdevice.ifaGDPR、GPP 同意文字列、reg やユーザーオブジェクトフィールドなど、ビューワーごとに異なるフィールドをハードコードしないでください。これらは {{session.*}}または から取得する必要があります{{player_params.*}}。
注記
コンソールのデフォルトには、テンプレートvideo.protocolsに video.mimesまたは は含まれません。MediaTailor は、ハードコードされたフォールバック値 (["video/mp4"]mimes の場合は 、プロトコル[1,2,3,4,5,6,7,8]の場合は ) を指定しない場合に使用します。サポートされている形式を制限する場合は、テンプレートに追加できます。
テンプレート補間 (Mustache テンプレート)
ORTB テンプレートは、動的値置換に Mustache テンプレート構文{{ }}。
使用可能なテンプレート変数
ORTB テンプレートは、ADS URL テンプレートで使用できるのと同じ動的変数を使用できます。これには、セッション変数 (、 など{{session.client_ip}}){{session.user_agent}}、プレイヤーパラメータ ()、アセットメタデータ ({{player_params.*}})、可用性コンテキスト ({{asset.*}})、SCTE シグナルデータ ({{avail.*}}) が含まれます{{scte.*}}。
使用可能な変数の完全なリストとその説明については、「」を参照してくださいADS リクエストの MediaTailor 動的広告変数。MediaTailor がプレイヤーパラメータ値をテンプレートに置き換える前に URL でデコードする方法については、このページのエンコードとデコードの動作後半の「」を参照してください。
ORTB テンプレートで最も一般的に使用される変数は次のとおりです。
-
{{session.user_agent}}: ビューワーの User-Agent ヘッダー ( に を使用device.ua)。 -
{{session.client_ip}}: ビューワーの IP アドレス ( に を使用device.ip)。 -
{{player_params.*}}: セッションの初期化中にプレイヤーによって渡されるカスタム値。 -
{{asset.*}}: オリジンからのコンテンツメタデータ (、 などasset.genreasset.content_rating)。
警告
プレースホルダーは、 dntや などの数値フィールドであっても、常に引用符で囲みますdevicetype。プレースホルダーが空の文字列に解決され、引用符で囲まれていない場合 (例: "dnt": {{player_params.dnt}})、結果は無効な JSON であり、入札リクエスト全体が で失敗しますBidRequestConfigurationError。代わりに "dnt":
"{{player_params.dnt}}" を使用します。APS は文字列として渡される数値フィールドを受け入れます。この動作は、空の文字列置換の自動引用が補間器の他の場所で使用されている raw-JSON モードと競合するため、設計上行われます。制約は強制されるのではなく文書化されます。MediaTailor エンコードとデコードの動作が補間前にプレイヤーパラメータ値を処理する方法については、「」も参照してください。
プレイヤーパラメータを渡す方法
セッションの初期化中にプレイヤーパラメータを渡すには、2 つの方法があります。
方法 1: JSON 本文を使用した POST リクエスト (推奨)
POST https://<mediatailor-endpoint>/v1/session/<config-hash>/<origin-id>/master.m3u8 Content-Type: application/json { "playerParams": { "app_id": "558775_example", "slot_id": "608109df-2378-4bc5-8da5-24bc355f01a4", "os": "Tizen", "make": "Samsung", "model": "Tizen TV", "language": "en", "us_privacy": "1YNY" } }
この方法は、ユーザーエージェント文字列などの複雑な値による URL エンコードの問題を回避するため、推奨されます。
方法 2: URL クエリパラメータ
GET https://<mediatailor-endpoint>/v1/session/<config-hash>/<origin-id>/master.m3u8 ?playerParams.app_id=558775_example
この方法では、値は URL エンコードする必要があります。MediaTailor は、補間前に URL デコードします。
エンコードとデコードの動作
MediaTailor は、プレイヤーパラメータ値をテンプレートに補間する前に、1 レベルの URL デコードを実行します。これは、パラメータの受け渡し方法 (POST 本文または URL クエリパラメータ) に関係なく適用されます。
デコードされた値の例:
| 送信された値 | デコード後の値 (テンプレートで使用) |
|---|---|
Test%20Os |
Test Os |
https%3A%2F%2Flocalhost |
https://localhost |
foo%20bar |
foo bar |
Mozilla%2F5.0%20(SMART-TV) |
Mozilla/5.0 (SMART-TV) |
キーポイント:
-
MediaTailor は 1 つのレベルにのみデコードします。二重エンコードされた値 ( など
%2520) は、スペースではなく%20にデコードされます。 -
POST 本文の値もデコードされます。POST 本文に URL エンコードされた値が含まれている場合、補間前にデコードされます。
-
プレーンテキスト値 (エンコーディングなし) は変更されずにパススルーされます。
-
デコードと補間の後、テンプレート全体が JSON として解析されます。補間された値の特殊文字 (エスケープされていない引用符やバックスラッシュなど) は、JSON 解析を中断する可能性があります。
ヒント
プレイヤーがすでにプレーンテキスト (URL エンコードされていない) の値を送信した場合、プレイヤーはそのまま動作します。デコードに注意する必要があるのは、送信する前にプレイヤー URL が値をエンコードする場合のみです。
変数が欠落している場合にどうなるか
プレイヤーがテンプレートで参照されているパラメータを送信しない場合 (たとえば、プレイヤーパラメータapp_nameに {{player_params.app_name}}がない場合)、プレースホルダーは空の文字列 に解決されます""。
影響: 空の文字列が必須フィールド ( などapp.bundle) にある場合、入札リクエストは で失敗しますBidRequestConfigurationError。オプションフィールドにある場合、APS は入札なし (HTTP 204) レスポンスを引き起こす可能性のある空の値を受け取ります。
MediaTailor が自動的に設定する内容
次のフィールドは常に、コンソール設定の値と現在の表示コンテキストを使用して MediaTailor によって設定されます。テンプレートにこれらを含めると、値は上書きされます。
| フィールド | ソース |
|---|---|
id |
自動生成: {sessionId}_{availId}形式 (例: abc123-def456_78901)。入札リクエストとセッションログの関連付けに役立ちます。 |
app.publisher.id |
コンソール設定PublisherIdから 。 |
imp[0].video.minduration |
コンソール設定MinimumUnfilledDurationから 。 |
imp[0].video.maxduration |
計算: この表示の実際の未入力秒数。 |
imp[0].video.maxseq |
計算: floor(unfilled_duration / 6)。 |
imp[0].video.poddur |
計算: この表示の実際の未入力秒数。 |
ext.integrationType |
常に を に設定します"EMT"。 |
次の手順
-
field-by-fieldリファレンスについては、「」を参照してくださいORTB フィールドリファレンス。
-
コピー/貼り付けテンプレートについては、「」を参照してくださいテンプレートの例。