本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
功能快速入门指南
本指南将引导您创建第一个函数、将其附加到播放配置以及验证其是否已运行。最后,您将拥有一个有效的功能,可以对每位观众的设备类型(ctv、或desktop)进行分类mobile,并将其存储为每个 ADS 请求中可用的玩家参数。
先决条件
在开始之前,请确保您有现有的 MediaTailor 播放配置。如果没有,请参阅入门 MediaTailor。
步骤 1:创建 函数
在此步骤中,您将创建一个函数,该函数根据用户代理字符串对查看者的设备类型进行分类,并将结果存储在玩家参数中。该函数使用自定义输出类型(无外部 API 调用)和JSONata表达式参考表达式来评估用户代理。
-
打开 MediaTailor 控制台
。 -
在导航窗格中,选择函数。
-
选择创建函数。
-
在创建向导模式中,选择从头开始创建,然后选择继续。
-
在 “函数类型” 下,选择 “自定义输出” 图块。
-
在 “功能详细信息” 下,输入以下内容:
-
函数 ID:
myFirstFunction -
描述:
Classify device type from user agent
-
-
在 “自定义输出配置” 下的 “输出” 部分中,添加一行:
-
键:
player_params.deviceType -
值:
{% $contains(session.user_agent, 'CTV') ? 'ctv' : $contains(session.user_agent, 'Mobile') ? 'mobile' : 'desktop' %}
-
-
选择创建函数。
成功通知确认函数已创建,您将被重定向到函数详细信息页面。
生成的函数配置是:
{ "FunctionId": "myFirstFunction", "FunctionType": "CUSTOM_OUTPUT", "Description": "Classify device type from user agent", "CustomOutputConfiguration": { "Runtime": "JSONATA", "Output": { "player_params.deviceType": "{% $contains(session.user_agent, 'CTV') ? 'ctv' : $contains(session.user_agent, 'Mobile') ? 'mobile' : 'desktop' %}" } } }
第 2 步:将该功能附加到播放配置
将该函数映射到播放配置上的生命周期挂钩。映射会告诉 MediaTailor 您何时运行该函数。
-
在导航窗格中,选择配置。
-
选择要更新的播放配置。
-
选择编辑。
-
展开函数配置部分。
-
对于会话初始化挂钩,请
myFirstFunction从下拉列表中选择。 -
选择保存。
这myFirstFunction与Pre-session 初始化生命周期挂钩有关。生成的函数映射是:
{ "FunctionMapping": { "PRE_SESSION_INITIALIZATION": "myFirstFunction" } }
MediaTailor 在此播放配置上的每个新会话开始时,都会运行一次该函数。
第 3 步:启动会话并验证功能已运行
启动新的播放会话以触发该功能。对播放配置的会话初始化端点使用会话初始化请求。
MediaTailor 自动发布每次函数执行的 CloudWatch 指标——无需选择加入。启动会话后,检查AWS/MediaTailor命名空间中的以下指标以确认您的函数已运行:
-
PreSessionInitHook.Invocations— 确认钩子已开启。 -
PreSessionInitHook.Errors— 如果函数成功,则应为 0。 -
Function.Invocations— 确认已执行的单个函数。此指标包括FunctionIdFunctionType、和HookType维度,因此您可以进行myFirstFunction具体筛选。
如果该函数失败,则默认向清单日志 MediaTailor 发送错误日志事件(无需配置):
-
PRE_SESSION_INIT_HOOK_ERROR— 使用errorType和时 Hook-level 失败cause。 -
PRE_SESSION_INIT_FUNCTION_ERROR— 具体functionId和错误详细信息 Function-level 失败。
以下示例显示了函数表达式中语法错误PRE_SESSION_INIT_FUNCTION_ERROR的事件:
{ "eventTimestamp": "2024-01-01T12:00:00.076000000Z", "eventType": "PRE_SESSION_INIT_FUNCTION_ERROR", "eventDescription": "Function execution failed", "awsAccountId": "123456789012", "originId": "my-config", "sessionId": "session-123", "requestId": "req-abc", "eventId": "5dc6f040-0f72-4e8c-a64e-25eeef62708c", "functionId": "myFirstFunction", "functionType": "CUSTOM_OUTPUT", "executionTimeMs": 2, "errorType": "SYNTAX_ERROR", "cause": "Expected \")\" before end of expression", "input": {} }
使用该eventId字段关联同一次执行的挂钩和函数错误事件。该errorType字段告诉您故障类别 — 故障排除和监控 有关错误类型和修复的完整列表,请参见。
注意
要详细记录成功日志,请在清单日志配置中选择加入PRE_SESSION_INIT_HOOK_SUMMARY和PRE_SESSION_INIT_FUNCTION_COMPLETED事件。摘要事件显示每次执行的挂接结果。已完成的事件显示每个函数的输入、输出和 HTTP request/response 详细信息。默认情况下,它们处于禁用状态,以最大限度地降低日志成本。有关更多信息,请参阅 故障排除和监控。
幕后会发生什么
以下是您刚刚创建的函数的完整请求流程:
-
玩家与发起会话。 MediaTailor
-
MediaTailor 触发
PRE_SESSION_INITIALIZATION生命周期挂钩并运行myFirstFunction。 -
该函数计算
session.user_agent字段并写入ctvmobile、或desktop。player_params.deviceType -
MediaTailor 创建会话并将清单返回给玩家。
-
玩家在播放过程中遇到广告中断。
-
MediaTailor 触发
PRE_ADS_REQUEST生命周期挂钩,然后构造 ADS 请求。由于存储deviceType在玩家参数中,因此可以通过动态变量替换将其包含在广告请求网址中。 -
ADS 使用设备类型返回定向广告素材。
-
MediaTailor 将广告拼接到清单中并将其返回给玩家。
如果该函数因任何原因失败,则 MediaTailor 丢弃输出并像未附加任何函数一样继续操作。观看者仍然可以看到广告——只是没有设备类型定位。
建议的主题
现在,您已在播放配置中附加了一项有效功能。从这里开始: