Timeline: Capitoli timeline-3-chapters
VOD, annunci pre-roll, pausa, buffering, visualizzazione del contenuto fino alla fine
I seguenti diagrammi illustrano la tempistica della testina di riproduzione e la corrispondenza con le azioni di un utente. Di seguito sono riportati i dettagli di ciascuna azione e le relative richieste.
Dettagli azione
Azione 1 - Avvia sessione Action-1
/api/v1/sessions
Questa chiamata segnala l’intenzione dell’utente di riprodurre un video. Restituisce un ID sessione ({sid}
) al client utilizzato per identificare tutte le chiamate di tracciamento successive all’interno della sessione. Lo stato del lettore non è ancora “in riproduzione”, ma è “in avvio”. I parametri di sessione obbligatori devono essere inclusi nella mappa params
nel corpo della richiesta. Nel backend, questa chiamata genera una chiamata di avvio Adobe Analytics. Per informazioni sulle sessioni, consulta la documentazione delle API di Media Collection.
{
"playerTime": {
"playhead": 0,
"ts": "<timestamp>"
},
"eventType": "sessionStart",
"params": {
"media.playerName": "sample-html5-api-player",
"analytics.trackingServer": "[ _YOUR-TS_ ]",
"analytics.reportSuite": "[ _YOUR_RSID_ ]",
"analytics.visitorId": "[ _YOUR_VISITOR_ID_ ]",
"media.contentType": "VOD",
"media.length": 60.3333333333333,
"media.id": "VA API Sample Player",
"visitor.marketingCloudOrgId": "[YOUR_MCID]",
"media.name": "ClickMe",
"media.channel": "sample-channel",
"media.sdkVersion": "va-api-0.0.0",
"analytics.enableSSL": false
}
}
Azione 2: avvio del timer di ping Action-2
Avvia il timer di ping. Il primo evento ping dovrebbe quindi attivarsi in 1 secondo se ci sono annunci pre-roll, 10 secondi in caso contrario.
Azione 3 - Avvio dell’interruzione pubblicitaria Action-3
/api/v1/sessions/{sid}/events
Gli annunci possono essere tracciati solo all’interno di un’interruzione pubblicitaria.
{
"playerTime": {
"playhead": 0,
"ts": "<timestamp>"
},
"eventType": "adBreakStart",
"params": {
"media.ad.podFriendlyName": "ad_pod1",
"media.ad.podIndex": 0, "media.ad.podSecond": 0
}
}
Azione 4 - Avvio dell’annuncio Action-4
/api/v1/sessions/{sid}/events
Inizia il tracciamento del primo annuncio pre-roll, che è lungo 15 secondi. Inclusione di metadati personalizzati con questo adStart
.
{
"playerTime": {
"playhead": 0,
"ts": "<timestamp>"
},
"eventType": "adStart",
"params": {
"media.ad.podFriendlyName": "ad_pod1",
"media.ad.name": "Ad 1",
"media.ad.id": "001",
"media.ad.length": 15,
"media.ad.podPosition": 1,
"media.ad.playerName": "Sample Player",
"media.ad.advertiser": "Ad Guys",
"media.ad.campaignId": "1",
"media.ad.creativeId": "42",
"media.ad.siteId": "XYZ",
"media.ad.creativeURL": "https://example.com",
"media.ad.placementId": "sample_placement"
},
"customMetadata": {
"myCustomData1": "CustomData1",
"myCustomData2": "CustomData2"
}
}
Azione 5: ping annuncio Action-5
/api/v1/sessions/{sid}/events
Esegui il ping del backend ogni 1 secondo. I ping di annuncio successivi non vengono visualizzati per brevità.
{
"playerTime": {
"playhead": 0,
"ts": "<timestamp>"
},
"eventType": "ping"
}
Azione 6 - Annuncio completato Action-6
/api/v1/sessions/{sid}/events
Traccia la fine del primo annuncio pre-roll.
{
"playerTime": {
"playhead": 0,
"ts": "<timestamp>"
},
"eventType": "adComplete"
}
Azione 7 - Avvio dell’annuncio Action-7
/api/v1/sessions/{sid}/events
Traccia l’inizio del secondo annuncio pre-roll, che ha una durata di 7 secondi.
{
"playerTime": {
"playhead": 0,
"ts": "<timestamp>"
},
"eventType": "adStart",
"params": {
"media.ad.podFriendlyName": "ad_pod1",
"media.ad.name": "Ad 2",
"media.ad.id": "002",
"media.ad.length": 7,
"media.ad.podPosition": 1,
"media.ad.playerName": "Sample Player",
"media.ad.advertiser": "Ad Guys",
"media.ad.campaignId": "2",
"media.ad.creativeId": "44",
"media.ad.siteId": "XYZ",
"media.ad.creativeURL": "https://example.com",
"media.ad.placementId": "sample_placement2"
},
}
Azione 8 - Ping dell’annuncio Action-8
/api/v1/sessions/{sid}/events
Esegui il ping del backend ogni 1 secondo. I ping di annuncio successivi non vengono visualizzati per brevità.
{
"playerTime": {
"playhead": 0,
"ts": "<timestamp>"
},
"eventType": "ping"
}
Azione 9 - Annuncio completato Action-9
/api/v1/sessions/{sid}/events
Traccia la fine del secondo annuncio pre-roll.
{
"playerTime": {
"playhead": 0,
"ts": "<timestamp>"
},
"eventType": "adComplete"
}
Azione 10 - Completamento dell’interruzione pubblicitaria Action-10
/api/v1/sessions/{sid}/events
L’interruzione pubblicitaria è terminata. Durante l’interruzione pubblicitaria, lo stato della riproduzione è rimasto “in esecuzione”.
{
"playerTime": {
"playhead": 0,
"ts": "<timestamp>"
},
"eventType": "adBreakComplete"
}
Azione 11 - Riproduci il contenuto Action-11
/api/v1/sessions/{sid}/events
Dopo l’evento adBreakComplete
, imposta il lettore nello stato di “riproduzione” utilizzando l’evento play
.
{
"playerTime": {
"playhead": 0,
"ts": "<timestamp>"
},
"eventType": "play"
}
Azione 12: inizio capitolo Action-12
/api/v1/sessions/{sid}/events
Dopo l’evento di riproduzione, traccia l’inizio del primo capitolo.
{
"playerTime": {
"playhead": 0,
"ts": "<timestamp>"
},
"eventType": "chapterStart",
"params": {
"media.chapter.index": 1,
"media.chapter.offset": 0, "media.chapter.length": 20, "media.chapter.friendlyName": "Chapter Uno"
},
}
Azione 13: ping Action-13
/api/v1/sessions/{sid}/events
Esegui il ping del backend ogni 10 secondi.
{
"playerTime": {
"playhead": 8,
"ts": "<timestamp>"
},
"eventType": "ping"
}
Azione 14: avvio del buffer Action-14
/api/v1/sessions/{sid}/events
Traccia lo spostamento allo stato di “buffering”.
{
"playerTime": {
"playhead": 11,
"ts": "<timestamp>"
},
"eventType": "bufferStart"
}
Azione 15: fine buffer (riproduzione) Action-15
/api/v1/sessions/{sid}/events
Il buffering termina dopo 3 secondi, quindi riporta il lettore allo stato di “riproduzione”. Devi inviare un altro evento di riproduzione del tracciamento proveniente dal buffering. La chiamata play
dopo bufferStart
implica una chiamata “bufferEnd” al back-end, quindi non è necessario un evento bufferEnd
.
{
"playerTime": {
"playhead": 11,
"ts": "<timestamp>"
},
"eventType": "play"
}
Azione 16: ping Action-16
/api/v1/sessions/{sid}/events
Esegui il ping del backend ogni 10 secondi.
{
"playerTime": {
"playhead": 15,
"ts": "<timestamp>"
},
"eventType": "ping"
}
Azione 17: fine capitolo Action-17
/api/v1/sessions/{sid}/events
Il primo capitolo termina subito prima della seconda interruzione pubblicitaria.
{
"playerTime": {
"playhead": 20,
"ts": "<timestamp>"
},
"eventType": "chapterComplete"
}
Azione 18: avvio interruzione pubblicitaria Action-18
/api/v1/sessions/{sid}/events
Annuncio mid-roll con una durata di 8 secondi: invia adBreakStart
.
{
"playerTime": {
"playhead": 21,
"ts": "<timestamp>"
},
"eventType": "adBreakStart",
"params": {
"media.ad.podFriendlyName": "ad_pod2",
"media.ad.podIndex": 1, "media.ad.podSecond": 21
}
}
Azione 19: inizio annuncio Action-19
/api/v1/sessions/{sid}/events
Tracciamento dell’annuncio mid-roll.
{
"playerTime": {
"playhead": 21,
"ts": "<timestamp>"
},
"eventType": "adStart",
"params": {
"media.ad.podFriendlyName": "ad_pod2",
"media.ad.name": "Ad 3",
"media.ad.id": "003",
"media.ad.length": 8,
"media.ad.podPosition": 2,
"media.ad.playerName": "Sample Player",
"media.ad.advertiser": "Ad Guys",
"media.ad.campaignId": "7",
"media.ad.creativeId": "40",
"media.ad.siteId": "XYZ",
"media.ad.creativeURL": "https://example.com",
"media.ad.placementId": "sample_placement2"
},
}
Azione 20: ping annuncio Action-20
/api/v1/sessions/{sid}/events
Esegui il ping del backend ogni 1 secondo. I ping di annuncio successivi non vengono visualizzati per brevità.
{
"playerTime": {
"playhead": 21,
"ts": "<timestamp>"
},
"eventType": "ping"
}
Azione 21: annuncio completo Action-21
/api/v1/sessions/{sid}/events
L’annuncio mid-roll è completo.
{
"playerTime": {
"playhead": 21,
"ts": "<timestamp>"
},
"eventType": "adComplete"
}
Azione 22: interruzione annuncio completata Action-22
/api/v1/sessions/{sid}/events
L’interruzione pubblicitaria è stata completata.
{
"playerTime": {
"playhead": 21,
"ts": "<timestamp>"
},
"eventType": "adBreakComplete"
}
Azione 23: inizio capitolo Action-23
/api/v1/sessions/{sid}/events
{
"playerTime": {
"playhead": 22,
"ts": "<timestamp>"
},
"eventType": "chapterStart",
"params": {
"media.chapter.index": 2,
"media.chapter.offset": 22, "media.chapter.length": 22, "media.chapter.friendlyName": "Chapter Dos"
},
}
Azione 24: ping Action-24
/api/v1/sessions/{sid}/events
Esegui il ping del backend ogni 10 secondi.
{
"playerTime": {
"playhead": 27,
"ts": "<timestamp>"
},
"eventType": "ping"
}
Azione 25: pausa Action-25
/api/v1/sessions/{sid}/events
L’azione dell’utente sposta lo stato di riproduzione su “messo in pausa”.
{
"playerTime": {
"playhead": 31,
"ts": "<timestamp>"
},
"eventType": "pauseStart"
}
Azione 26: ping Action-26
/api/v1/sessions/{sid}/events
Esegui il ping del backend ogni 10 secondi. Il lettore è ancora in stato di “buffering”; l’utente rimane bloccato a 20 secondi di contenuto. Furente…
{
"playerTime": {
"playhead": 31,
"ts": "<timestamp>"
},
"eventType": "ping"
}
Azione 27: riprodurre il contenuto Action-27
/api/v1/sessions/{sid}/events
Sposta lo stato di riproduzione su “in riproduzione”. La chiamata play
dopo pauseStart
implica una chiamata “riprendi” al back end, quindi non è necessario un evento resume
.
{
"playerTime": {
"playhead": 31,
"ts": "<timestamp>"
},
"eventType": "play"
}
Azione 28: ping Action-28
/api/v1/sessions/{sid}/events
Esegui il ping del backend ogni 10 secondi.
{
"playerTime": {
"playhead": 37,
"ts": "<timestamp>"
},
"eventType": "ping"
}
Azione 29: fine capitolo Action-29
/api/v1/sessions/{sid}/events
Traccia la fine del secondo e ultimo capitolo.
{
"playerTime": {
"playhead": 0,
"ts": "<timestamp>"
},
"eventType": "chapterComplete"
}
Azione 30: sessione completa Action-30
/api/v1/sessions/{sid}/events
Invia sessionComplete
al backend per indicare che l’utente ha terminato di guardare l’intero contenuto.
{
"playerTime": {
"playhead": 45,
"ts": "<timestamp>"
},
"eventType": "sessionComplete"
}
seekStart
o seekComplete
. Alcuni utenti generano un numero molto elevato di tali eventi nel momento in cui l’utente finale esegue la pulizia. Inoltre, è probabile che le diverse centinaia di utenti causino un bottleneck della larghezza di banda di un servizio back-end. Adobe si basa su un supporto esplicito per gli eventi di ricerca, calcolando la durata dell’heartbeat in base alla marca temporale del dispositivo, anziché alla posizione della testina di riproduzione.