Manage patterns and templating

Manage patterns and templating

When a placement opportunity is detected, Stream Personalization connects to an Ad decision system and sends the information that qualifies the ad break opportunity. Information types include: ad break duration, the identifier of detected break, the user identifier, device etc.

Stream Personalization automatically retrieves information from two different sources:

  • The manifest URL request (query parameter, and request header)
  • The manifest content, with splice information embedded (SCTE-35 for instance)

Tags from user URL request query parameter

A manifest request URL (sent by the viewer) is usually made of the path to the manifest itself, to which query parameters are appended. An example is given below:

http://my-cdn-domain/some-path/myChannel/index.m3u8?userid=1234&device=iOS

Stream Personalization automatically detects query parameters (regardless of the quantity) for use when sending an outbound request. For example, an outbound request to a decision server.

Example: The query parameters userid and device values are accessed as follows: {query.userid} and {query.device}

Tags from the manifest splice

Upon SCTE-35 ad break signaling, the information from the SCTE-35 splice is embedded into DASH, HLS or HSS manifest. MFPZ automatically retrieves key information from the splice.

SCTE-35MFPZ mappingDescription
Splice_event_id{splice.id}Unique id of the ad break/splice event.
Break_duration(){splice.breakDuration}Ad break duration in terms of ticks of the program’s 90 kHZ clock.
Break_duration(){splice.breakDuration}Ad break duration in terms of ticks of the program’s 90 kHZ clock.
N/A{splice.breakDurationSeconds}Break duration translated in seconds instead of program’s 90kHZ clock.
N/A{splice.breakDurationMilliseconds}Break duration translated in milliseconds instead of program’s 90kHZ clock.
N/A{splice.breakDurationISO}Break duration translated in ISO format instead of program’s 90kHZ clock.
splice_command_type{splice.type }Type of splice command. Depending on the value, this will refer to splice_insert(), time_signal() etc. (see standard for exhaustive list of commands supported).
avail_num{splice.availNum}Avail number
Segmentation_type_id{splice.segmentationTypeId}Value used to determine whether the splice indicates a program start/end, placement opportunity start/end etc. (see standard for all possible values).
Segmentation_descriptor(){splice.segmentationDescriptor}Segmentation descriptor raw data bytes. These raw data can be used by 3rd party component to manage ad-hoc parsing.