Los desarrolladores y editores de terceros pueden habilitar el análisis de consumo para un reproductor móvil o web personalizado mediante la API de análisis de consumo.
El análisis de consumo de Omny Studio permite a los editores ver una visualización de cómo sus oyentes consumen e interactúan con su contenido de audio. De forma predeterminada, el análisis de consumo está disponible en reproducciones mediante el reproductor incrustable y el reproductor web de Omny.fm.
Al usar la API de análisis de consumo, el reproductor envía eventos de reproducción que se analizan, filtran y procesan mediante nuestros servicios de análisis para generar informes de análisis de consumo conjuntos.
Nuestros servicios de análisis analizan, filtran y procesan los datos de eventos sin procesar para generar informes analíticos de consumo agregados.
Implementación del cliente
Durante la reproducción de un clip, el reproductor debe emitir los siguientes eventos a la memoria/cola local.
Los eventos solo deben vaciarse/enviarse al servidor cuando se completa la sesión y no es posible realizar eventos adicionales para la sesión. Ejemplo: el oyente finalizó la reproducción del clip, cambió los episodios o cerró la aplicación, pero no cuando el usuario acaba de pausar la reproducción porque es posible que reanude la sesión en el futuro.
Para los navegadores, recomendamos usar Navigator.sendBeacon() para enviar eventos al descargar la página. Para las aplicaciones, recomendamos un almacenamiento local persistente para almacenar la cola de eventos, de modo que incluso si la aplicación se cerró inesperadamente, los eventos se pueden conservar y vaciar en la próxima oportunidad disponible.
Procesamiento por lotes (opcional)
Para reducir el uso de la red en el extremo de la API, puede enviar opcionalmente varias sesiones completadas en una solicitud de API, siempre y cuando cada SessionId está garantizado para ser único.
Ensayo
Al enviar las sesiones completadas, los resultados tardan hasta 10 minutos en aparecer en el portal de Omny Studio. Las sesiones con un total de menos de 10 segundos de duración se filtran del análisis de consumo.
Enviar datos de consumo
Envíe datos de eventos de análisis de consumo a Omny Studio.
Solicitud
POST https://traffic.omny.fm/api/consumption/events?organizationId={organizationId}Parámetros:
OrganizationIdEl GUID de la organización Omny Studio
Encabezados:
Content-Typedebe serapplication/json
Cuerpo (JSON):
Source(cadena) La fuente de donde se registró esta información de consumo. Esto permite separar diferentes consumos de diferentes tipos de fuentes o aplicaciones en la interfaz de usuario. Los siguientes orígenes están disponibles para implementaciones personalizadas:
MobileApppara aplicaciones móviles personalizadas
SmartSpeakerPara aplicaciones personalizadas de altavoces inteligentes
CustomWebpara reproductores web personalizados
Custompara todas las demás aplicaciones personalizadasDe forma predeterminada, el reproductor incrustado de Omny y Omny.fm sitio web utiliza el
Websource
Events(TrackConsumptionEvent[]) Una serie de eventos de consumo que se están enviando. Debe tener al menos un evento incluido. ConsulteTrackConsumptionEventmodelo a continuación.Completed(booleano) Si la sesión ha finalizado. Debe sertrue
Ejemplo de cURL
curl -X POST \
'https://traffic.omny.fm/api/consumption/events?organizationId=126281f8-200e-4c9f-8378-a4870055423b' \
-H 'Content-Type: application/json' \
-d '{
"Source": "Web",
"Events": [
{
"OrganizationId": "126281f8-200e-4c9f-8378-a4870055423b",
"ClipId": "9b5c82f7-74cf-4841-a870-a670017cc8eb",
"SessionId": "a039f83d-1916-436b-a090-efbc08698506",
"Type": "Start",
"Position": 0,
"SeqNumber": 1,
"Timestamp": 1540270724
},
{
"OrganizationId": "126281f8-200e-4c9f-8378-a4870055423b",
"ClipId": "9b5c82f7-74cf-4841-a870-a670017cc8eb",
"SessionId": "a039f83d-1916-436b-a090-efbc08698506",
"Type": "Stop",
"Position": 4.554,
"SeqNumber": 2,
"Timestamp": 1540270728
},
{
"OrganizationId": "126281f8-200e-4c9f-8378-a4870055423b",
"ClipId": "9b5c82f7-74cf-4841-a870-a670017cc8eb",
"SessionId": "a039f83d-1916-436b-a090-efbc08698506",
"Type": "Start",
"Position": 308.053,
"SeqNumber": 3,
"Timestamp": 1540270728
},
{
"OrganizationId": "126281f8-200e-4c9f-8378-a4870055423b",
"ClipId": "9b5c82f7-74cf-4841-a870-a670017cc8eb",
"SessionId": "a039f83d-1916-436b-a090-efbc08698506",
"Type": "Stop",
"Position": 542.643,
"SeqNumber": 4,
"Timestamp": 1540270962
}
],
"Completed": true
}'Respuesta
Modelo
Enabled(booleano) Si el servicio Análisis de consumo está habilitado o no. Si la respuesta es falsa, el cliente debe dejar de intentar enviar eventos para la sesión de la página web/aplicación móvil.
Ejemplo:
{
"Enabled": true
}Esquema del modelo TrackConsumptionEvent
Un objeto de evento de análisis de consumo:
Sub-object | Tipo, | Descripción |
|---|---|---|
| Secuencia | The GUID of the clip’s organization. |
| Secuencia | The GUID of the clip. |
| Secuencia | Client-side generated, globally unique ID (GUID/UUID) that identifies the same listen session for an individual clip. Una sesión se considera una sola reproducción continua. |
| Secuencia | The type of event emitted. Los tipos válidos son:
|
| Number | Time of the listen position in fractional seconds. Example: 1.5 represents 1,500 milliseconds along the audio timeline. |
| Number | A sequence number starting from 1 that must be incremented for each new event in the Session. Esto se usa para resolver problemas de condición de carrera con eventos generados mediante programación que ocurren muy rápidamente uno tras otro y que pueden tener la misma marca de tiempo. |
| Number | A Unix timestamp, in seconds, representing the moment this event was emitted. Es importante que la marca de tiempo refleje el tiempo de emisión del evento real, y no cuando el evento se está vaciando en la API. |
| Secuencia | Identifies whether a consumption event is for audio or video. Can be either |