Integración de informes de análisis de consumo para reproductores móviles y web personalizados
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.
Los desarrolladores y publishers de terceros también pueden habilitar el análisis de consumo para un reproductor móvil o web personalizado usando la API de análisis de consumo.
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 la sesión haya finalizado y no sea posible realizar eventos adicionales para la sesión (por 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 puede reanudar 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 memoria o cola de eventos, de modo que incluso si la aplicación se cerró inesperadamente, los eventos se puedan 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 tardarán hasta 10 minutos en aparecer en el portal de Omny Studio. Nota: Las sesiones con un total de menos de 10 segundos de duración se filtran del análisis de consumo.
Asistencia técnica
Póngase en contacto con support@omnystudio.com si necesita ayuda.
---
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
OrganizationId
El GUID de la organización Omny Studio
Encabezados
Content-Type
debe 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:
MobileApp
Recomendado para aplicaciones móviles personalizadas
SmartSpeaker
Recomendado para aplicaciones personalizadas de altavoces inteligentes
CustomWeb
Recomendado para reproductores web personalizados
Custom
Recomendado para todas las demás aplicaciones personalizadas
(De forma predeterminada, el reproductor incrustado de Omny y Omny.fm sitio web utiliza elWeb
source)Events
(TrackConsumptionEvent[]) Una serie de eventos de consumo que se están enviando. Debe tener al menos un evento incluido. (ConsulteTrackConsumptionEvent
Modelo 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
OrganizationId
(cadena) El GUID de la organización del clipClipId
(cadena) El GUID del clipSessionId
(cadena) ID único globalmente generado por el cliente (GUID/UUID) que identifica la misma sesión de escucha para un clip individual.
Una sesión se considera una sola reproducción continua. El cambio de clips se considera una sesión nueva (por ejemplo, cambiar entre los clips A, B, A en una lista de reproducción debería generar 3 sesiones únicas). El SessionId no debe reutilizarse para otras sesiones.Type
(cadena) El tipo de evento emitido.
sLos tipos válidos son:
Start
La reproducción ha comenzado en la posición actual
Stop
La reproducción se ha detenido en la posición actualPosition
(número) Tiempo de la posición de escucha en fracciones de segundo, como 1,5, que representa 1,500 milisegundos a lo largo de la línea de tiempo de audio.SeqNumber
(número) Un número de secuencia a partir de1
que debe incrementarse para cada nuevo evento en la sesión. 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.Timestamp
(número) Una marca de tiempo unix (en segundos) que representa el momento en que se emitió este evento. P. ej..1502072310
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.