View a markdown version of this page

示例 1:数据扩充 - AWS Elemental MediaTailor

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

示例 1:数据扩充

场景

流媒体服务希望在会话开始时从外部服务(在本例中为 LiveRamp)获取受众身份数据,并将其存储在玩家参数中,以便在会话后期进行广告定位。身份信封是由身份解析服务提供的加密标识符,允许广告系统在不泄露个人信息的情况下跨设备和平台识别观众。

配置

获取 LiveRamp 信封 (HTTP_REQUEST):

{ "FunctionId": "fetchLiveRamp", "FunctionType": "HTTP_REQUEST", "HttpRequestConfiguration": { "Runtime": "JSONATA", "MethodType": "GET", "Url": "{%'https://api.example-identity.com/v2/envelope?pid=12345&iv=' & player_params.hashedId%}", "Headers": { "Authorization": "{%'Bearer ramp-token-789'%}" }, "RequestTimeoutMilliseconds": 2000, "Output": { "player_params.envelope_id": "{%response.body.envelopes[0].value%}" } } }
注意

Bearer ramp-token-789替换为你自己的 API 凭证。不要将敏感令牌直接存储在生产环境中的函数配置中。考虑使用代币轮换策略。

RequestTimeoutMilliseconds根据外部服务的预期响应时间进行设置。较低的值可以减少延迟,但会增加出现超时错误的机会。

函数映射

{ "FunctionMapping": { "PRE_SESSION_INITIALIZATION": "fetchLiveRamp" } }

函数运行时会发生什么

  1. 观看者开始播放会话。

  2. MediaTailor 运行PRE_SESSION_INITIALIZATION生命周期挂钩并运行fetchLiveRamp

  3. 该函数使用构建请求网址player_params.hashedId并调用 LiveRamp API。在网址中,pid是合作伙伴 ID,是经过哈希iv处理的查看者标识符。

  4. 输出表达式从响应数组 (response.body.envelopes[0].value) 的第一个信封中提取值并将其写入player_params.envelope_id

提示

要明确处理错误,请在访问响应数据response.statusCode之前进行检查:{%response.statusCode = 200 ? response.body.envelopes[0].value : ''%}

有关更多信息,请参阅HTTP_REQUEST会话前初始化故障排除和监控限制