Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota:
Aviso de alfa-beta
Este campo o característica forma parte de la funcionalidad que actualmente se encuentra en fase Alfa o Beta. Por lo tanto, está sujeto a cambios.
El servicio de audiencia instantánea es un método del lado del servidor que usa una arquitectura de streaming para agregar grupos individuales o pequeños de usuarios a segmentos, a través de la API de la plataforma digital. Se trata de una alternativa a la API de servicio de segmento por lotes, que se usa para cargar usuarios en masa en los públicos. De forma similar a la API de servicio de segmentos por lotes, las cargas no se procesan en tiempo real y pueden tardar hasta 24 horas en completarse.
Configurar el servicio
Nota:
El Servicio de audiencia instantánea (IAS) es un servicio cerrado y no está habilitado de forma predeterminada. Si está interesado en utilizar IAS, primero debe member_id estar habilitado explícitamente para una configuración de IAS. Póngase en contacto con el representante de la cuenta de Microsoft o con el equipo de soporte técnico para solicitar acceso e iniciar el proceso de habilitación.
Si es un cliente nuevo y desea comenzar a usar el Servicio de audiencia instantánea, deberá abrir un ticket y proporcionar la siguiente información:
- ¿Está utilizando ID de usuario externos (es decir, usa mapUID para almacenar la asignación con Xandr)? Si usas identificadores de usuario externos de otro miembro, inclúyelos
member_idtambién. - ¿Necesita rellenar segmentos que pertenecen a otros miembros? Si es así, proporcione el
member_idsarchivo . - ¿Cuándo quieres que tus segmentos expiren de forma predeterminada (por ejemplo, nunca expirar, expirar dentro de 60 días, etc.)? Tenga en cuenta que si incluye EXPIRACIÓN en el bloque seg, no se usará la expiración predeterminada.
- Las siguientes preguntas son para nuestra planificación de capacidad interna:
- ¿Cuál es el número de ID de usuario únicos por publicación?
- ¿Cuál es el número de publicaciones esperadas por día?
- ¿Cuál es el número de segmentos únicos por publicación?
Autenticar
Consulte el Servicio de autenticación para obtener una descripción general sobre cómo realizar llamadas a la API de Xandr. Al igual que cualquier otro servicio, debe autenticarse en https://api.appnexus.com. Sin embargo, las llamadas posteriores se realizarán al Servicio de Audiencia Instantánea en https://streaming-data.appnexus.com.
Nota:
En la respuesta de autenticación, anote el token, ya que será necesario para las llamadas posteriores al servicio de audiencia instantánea.
Ejemplo de respuesta del servicio de autenticación:
{
"response": {
"status": "OK",
"token": "hbapi:123456:9876abcd54321:nym2",
"dbg_info": {
...
}
}
}
El token devuelto en la respuesta debe incluirse en llamadas posteriores al servicio de audiencia instantánea en el encabezado de autorización o como un access_token parámetro de cadena de consulta, como se muestra en los ejemplos siguientes:
Encabezado Authorization
curl -X POST -H "Authorization: hbapi:123456:9876abcd54321:nym2" https://streaming-data.appnexus.com/rt-segment
Cadena de consulta
curl -X POST https://streaming-data.appnexus.com/rt-segment?access_token=hbapi:123456:9876abcd54321:nym2
Agregar o eliminar usuarios de segmentos
Tras la autenticación, ya está listo para agregar o quitar un usuario a o desde un segmento, mediante un archivo JSON.
Nota:
Asegúrese de esperar aproximadamente 20 minutos antes de intentar agregar usuarios a los segmentos recién creados (para permitir que estos segmentos se propaguen a todos los servidores). Como práctica recomendada, trate de minimizar la creación de nuevos segmentos, reutilizar los segmentos existentes cuando sea posible o utilizar segment valuespara subdividir aún más a los usuarios dentro de los segmentos existentes. Estas prácticas garantizarán el éxito del usuario de agregar o eliminar a los segmentos. Para obtener más información sobre cómo crear segmentos values, consulte Píxeles de segmento: segmentación avanzada y segmentación en la documentación de la interfaz de usuario.
En el ejemplo siguiente se muestra cómo asignar un usuario a dos segmentos. En este ejemplo, el miembro agrega el ID de usuario 12345678900987654321 (este es un ID de usuario de Xandr) a los segmentos 10001 y 10002, estableciendo ambas asociaciones con valor = 1 y expiración en 1440 minutos.
Ejemplo de cómo asignar un usuario a dos segmentos
Llamada API
curl -X POST-H "Authorization: hbapi:123456:9876abcd54321:nym2"-d @json/segment.json "https://streaming-data.appnexus.com/rt-segment"
Carga útil de JSON
{
"rt_segment":
[
{
"user_id":"12345678900987654321",
"seg_block":[
{
"seg_id":10001,
"seg_code":null,"value":1,
"expiration":1440,
"member_id":null
},
{
"seg_id":10002,
"seg_code":null,
"value":1,
"expiration":1440,
"member_id":null
}
],
"domain":null
}
]
}
Respuesta
{
"response":{
"status":"OK",
"message":{
"users_in_request":1,
"segments_in_request":2
},
"warnings":[
]
}
}
Campos JSON
rt_segment array
| Campo | Tipo | Descripción |
|---|---|---|
user_id |
string | Este sería el Xandr user_id o un identificador basado en el dominio, como "AEBE52E7-03EE-455A-B3C4-E57283966239", como ejemplo de un identificador de dispositivo.Necesario: Al menos uno. |
seg_block |
matriz | Matriz de bloques de segmentos para que los segmentos se asocien con el usuario (consulte la estructura de bloques de segmentos a continuación). Necesario: Al menos uno. |
domain |
string | Tipo de identificador que se usa en la solicitud, como el id. de usuario de Xandr (representado con null) o el identificador de dispositivo (idfa, sha1udid, md5udid, openudidy ).aaidNota: No usar sha1mac, que quedó en desuso en 2019. |
seg_block array
| Campo | Tipo | Descripción |
|---|---|---|
seg_id |
Entero | El identificador de segmento de Xandr. Necesario: Si no se utiliza seg_code y member_id para identificar el segmento. |
seg_code |
string | Un nombre definido por el usuario para el segmento. Nota: Puede incluir SEG_CODE AND member_id o SEG_ID, pero no ambos.Necesario: Si no se utiliza seg_ID para identificar el segmento. |
value |
Entero | Un valor numérico que le gustaría asignar a un segmento. |
expiration |
Entero | La duración de la asociación usuario-segmento en minutos, a partir de cuando la leemos. Un valor de 0 significa que el segmento nunca expirará; -1 significa que el usuario se quitará de este segmento. |
member_id |
Entero | El identificador de miembro del propietario del segmento para el seg_block. Necesario: Si usa seg_code. |
Response
| Campo | Tipo | Descripción |
|---|---|---|
status |
string | Describe si agregar y quitar se realizó o produjo un error. |
users_in_request |
Entero | El número de usuarios leídos en la solicitud. Nota: Esto simplemente mostrará el número de usuarios detectados inicialmente en la solicitud, independientemente de si son válidos. |
segments_in_request |
Entero | El número de segmentos leídos en la solicitud. Nota: Esto simplemente mostrará el número de segmentos detectados inicialmente en la solicitud independientemente de si son válidos en nuestro sistema y sin importar con qué usuarios se les asocie en la llamada. |
Escenarios adicionales POST
Usar el id. de dispositivo (IDFA)
Llamada API de REST (IDFA)
curl -X POST-H "Authorization: hbapi:123456:9876abcd54321:nym2"-d @json/segment.json "https://streaming-data.appnexus.com/rt-segment"
Carga útil JSON (IDFA)
{
"rt_segment":[
{
"user_id":"1ba98a6c-d1a5-49ef-ad1c-2d9230ebcd13",
"seg_block":[
{
"seg_id":12,
"seg_code":null,
"value":1,
"expiration":1440,
"member_id":null
},
{
"seg_id":23784,
"seg_code":null,
"value":1,
"expiration":0,
"member_id":null
}
],
"domain":"idfa"
}
]
}
Respuesta (IDFA)
{
"response":{
"status":"OK",
"message":{
"users_in_request":1,
"segments_in_request":2
},
"warnings":
[
]
}
Uso de códigos para otros miembros
Llamada a la API de REST
curl -X POST-H "Authorization: hbapi:123456:9876abcd54321:nym2"-d @json/segment.json "https://streaming-data.appnexus.com/rt-segment"
Códigos de carga útil JSON para otros miembros
{
"rt_segment":[
{
"user_id":"12345678900987654321",
"seg_block":[{"seg_code":"abcd",
"value":1,
"expiration":1440,
"member_id":1661
},
{
"seg_code":"zywx",
"value":1,
"expiration":1440,
"member_id":1262
}
],
- "domain":null
}
]
}
Códigos de respuesta para otros miembros
{
"response":{
"status":"OK",
“users_in_request”:1,
"segments_in_request":2
}
}
Límites del servicio
Nota:
Los límites del servicio pueden cambiar durante las pruebas alfa y beta de este servicio.
Para cumplir con un tiempo máximo de activación de dos minutos, el servicio de audiencia instantánea tiene actualmente los siguientes límites:
| Tipo de límite | Descripción |
|---|---|
| Frecuencia de llamadas | Hasta 100 POST llamadas por segundo (por miembro) y hasta 1000 GET llamadas por segundo (por miembro). Si superas este límite de frecuencia, se devolverá el siguiente mensaje: "Límite de frecuencia superado. Ha superado el límite de solicitudes de 1000 lecturas por 1 segundo para rt-segment-processed, espere e inténtelo de nuevo o póngase en contacto con Xandr para obtener límites más altos". |
| Objetos | - Hasta 1000 usuarios por segundo. - Hasta 100 segmentos por usuario por llamada. |
| Tamaño de la carga útil | La carga útil de JSON no debe superar 1 MB. |
Ejemplos de escenarios de error
Agregar o quitar más de 1000 usuarios en una solicitud
Llamada API para agregar o quitar más de 1000 usuarios en una solicitud
curl -X POST-H "Authorization: hbapi:123456:9876abcd54321:nym2"-d @json/1002_users.json "https://streaming-data.appnexus.com/rt-segment"
Carga útil JSON para 1000 usuarios en una solicitud
{
"rt_segment":[
{
"user_id":"12345678900987654321",
"seg_block":[
{
"seg_id":10001,
"seg_code":null,
"value":1,
"expiration":1440,
"member_id":null
},
{
"seg_id":10002,
"seg_code":null,
"value":1,
"expiration":1440,
"member_id":null
}
],"domain":"domain"
},
#... assume there are additional 1000 users inthisarray(1002in total)
]
}
Respuesta para 1000 usuarios en una solicitud
{
"response":{
"status":"OK",
"message":{
"users_in_request":1000,
"segments_in_request":2000
},
"warnings":[
{
"message":"Too many user_ids in request.",
"entity":{
"user_id":"23456789009876543211",
"seg_block":[
{
"seg_id":10001,
"seg_code":null,
"value":1,
"expiration":1440,
"member_id":null
},
{
"seg_id":10002,
"seg_code":null,
"value":1,
"expiration":1440,
"member_id":null
}
]
}
},
#... similar error will be sent for each user over 1000
]
}
}
seg_id o seg_code y member_id no se proporcionan
Carga útil de JSON (seg_id/seg_code y member_id escenario de error)
{
"rt_segment": [
{
"user_id":"1",
"seg_block":
[
{
"seg_id":null,
"seg_code":"abc",
"value":1,
"expiration":1,
"member_id":null
}
]
}
]
}
Escenario de respuesta (seg_id/seg_code y member_id error)
{
"status":"OK",
"message":{
"users_in_request":0,
"segments_in_request":0},
"warnings":[
{
"message":"'seg_id' or 'seg_code' and 'member_id' are required",
"entity":{
"seg_code":"abc",
"value":1,
"expiration":1
}
},
{
"message":"No valid segments for user_id: 1.",
"entity":{
"user_id":"1",
"seg_block":[
{
"seg_code":"abc",
"value":1,
"expiration":1
}
]
}
},
{
"message":"No valid rt_segment in request.",
"entity":{
"rt_segment":[
{
"user_id":"1",
"seg_block":[
{
"seg_code":"abc",
"value":1,"expiration":1
}
]
}
]
}
}
]
}
seg_block No se proporciona
Carga útil de JSON (seg_block escenario de error)
{
"rt_segment":[
{
"user_id":"asdf"
}
],
"domain":"domain"
}
Respuesta (seg_block escenario de error)
{
"status":"OK",
"message":{
"users_in_request":0,
"segments_in_request":0
},
"warnings":[
{
"message":"'seg_block' is required",
"entity":{
"user_id":"asdf"
}
},
{
"message":"No valid rt_segment in request.",
"entity":{
"rt_segment":[
{
"user_id":"asdf"
}
]
}
}
]
}
user_id está vacío
Carga útil de JSON (user_id escenario de error)
{
"rt_segment":[
{
"seg_block":[
{
"seg_id":1,
"seg_code":null,
"value":1,
"expiration":1,
"member_id":null
}
]
}
],
"domain":"domain"
}
Respuesta (user_id escenario de error)
{
"status":"OK",
"message":{
"users_in_request":0,
"segments_in_request":0
},
"warnings":[
{
"message":"'user_id' is required and cannot be empty",
"entity":{
"seg_block":[
{
"seg_id":1,
"seg_code":null,
"value":1,
"expiration":1
}
]
}
},
{
"message":"No valid rt_segment in request.",
"entity":{
"rt_segment":[
{
"seg_block":[
{
"seg_id":1,
"seg_code":null,
"value":1,
"expiration":1
}
]
}
]
}
}
]
}