El sistema de Coremetrix puede notificar a tu backend cuando ocurran ciertos eventos, utilizando webhooks. Puedes suscribirte a eventos en tiempo real a través de los webhooks de Coremetrix. Los webhooks pueden gestionarse a través de la API de Subscriptions.
Esta API se puede utilizar para suscribirse a varios eventos del ciclo de vida del cuestionario.
Cómo funciona:
Actualmente admitimos suscripciones a los siguientes eventos:
event_name | description |
---|---|
quiz_consent | Desencadenado cuando un usuario ha aceptado el procesamiento de datos personales relacionados con él o ella. |
quiz_consent_withdrawal | Desencadenado cuando un usuario ha retirado su consentimiento para el procesamiento de datos personales relacionados con él o ella. |
landing_load | Se activa cuando un usuario carga la landing page de un cuestionario (si se configura una landing page) |
quiz_load | Desencadenado cuando un usuario carga la primera página del cuestionario. |
quiz_start | Desencadenado cuando un usuario ha comenzado el cuestionario (se ha enviado la primera pregunta del cuestionario). |
quiz_complete | Desencadenado cuando un usuario ha completado el cuestionario (se ha enviado la última pregunta del cuestionario). |
attempt_scored | Desencadenado cuando se ha calificado (o marcado) un intento. |
attempt_profiled | Desencadenado cuando se ha perfilado (o marcado) un intento. |
Note: La lista completa de eventos a los que puedes suscribirte se puede encontrar llamando al/subscriptions/events
endpoint:
Cuando creas una suscripción a través de la API de Suscripciones, debes proporcionar una URL. Cuando ocurra cualquiera de los eventos descritos anteriormente, Coremetrix enviará los datos correspondientes mediante POST a la URL proporcionada. Tu API debe ser capaz de consumir la siguiente carga:
{
}
"event": "quiz_consent", "consentTime": "2020-01-31T13:14:35.208Z", "lastUpdated": "2020-01-31T13:14:35.208Z", "slug": "sandbox", "puid": "a_puid", "quizId": "481ac0fe-ac33-402a-9367-2aaa7a98b49d", "consent": true
Note: el lastUpdated y consentTime están en formato ISO8601
{
}
"event": "quiz_consent_withdrawal", "withdrawalTime": "2020-01-31T13:25:02.786Z", "lastUpdated": "2020-01-31T13:25:02.786Z", "slug": "sandbox", "puid": "a_puid", "quizId": "481ac0fe-ac33-402a-9367-2aaa7a98b49d", "consent": false
Note: el lastUpdated y consentTime están en formato ISO8601
{
}
"attemptId": "0012ba6f-f8a2-493a-b32d-7cda370af477", "event": "landing_load", "puid": "test-70b8f195-8d75-4177-b094-4e0ac7472e", "quizId": "511c77c5-f6a3-48fd-a136-93f18d47116a", "timestamp": 1727174639100
Note: el puid es opcional y el timestamp está en milisegundos del Epoch
{
}
"event": "quiz_load", "attemptId": "4d1c90d4-f1fe-4303-ad83-535d99a61cf5", "quizId": "481ac0fe-ac33-402a-9367-2aaa7a98b49d", "puid": "a_puid", "timestamp": 1562161162000
Note: el puid es opcional y el timestamp está en milisegundos del Epoch
{
}
"event": "quiz_start", "attemptId": "4d1c90d4-f1fe-4303-ad83-535d99a61cf5", "quizId": "481ac0fe-ac33-402a-9367-2aaa7a98b49d", "puid": "a_puid", "timestamp": 1562161162000
Note: el puid es opcional y el timestamp está en milisegundos del Epoch
{
}
"event": "quiz_complete", "attemptId": "4d1c90d4-f1fe-4303-ad83-535d99a61cf5", "quizId": "481ac0fe-ac33-402a-9367-2aaa7a98b49d", "puid": "a_puid", "timestamp": 1562161162000
Note: el puid es opcional y el timestamp está en milisegundos del Epoch
{
}
"event": "attempt_scored", "attemptId": "4d1c90d4-f1fe-4303-ad83-535d99a61cf5", "quizId": "481ac0fe-ac33-402a-9367-2aaa7a98b49d", "puid": "a_puid", "age": "age", "gender": "gender", "maritalStatus": "maritalStatus", "occupation": "occupation", "accommodation": "accommodation", "education": "education", "scores": [],
{}
"value": 203.04200292294007, "model": "generic_model" "flags": [ ], "status": "COMPLETED_SCORED"
- el puid es opcional
- la age, gender, maritalStatus, occupation,
accommodation y education también son opcionales ya que algunos cuestionarios pueden no tener preguntas demográficas
status | description |
---|---|
COMPLETED_SCORED | El cuestionario ha sido completado, se esperan perfiles presentes. |
COMPLETED_PARTIALLY_SCORED | El cuestionario ha sido completado, se esperan perfiles y marcas presentes. |
COMPLETED_NOT_SCORED | No se puede calificar el cuestionario, razones posibles: el cuestionario se respondió demasiado rápido (no se generará un perfil y en su lugar se presentará una marca de CLIC RÁPIDO), no se han configurado / habilitado modelos de perfil. |
{
}
"event": "attempt_profiled", "attemptId": "4d1c90d4-f1fe-4303-ad83-535d99a61cf5", "quizId": "481ac0fe-ac33-402a-9367-2aaa7a98b49d", "puid": "a_puid", "age": "age", "gender": "gender", "maritalStatus": "maritalStatus", "occupation": "occupation", "accommodation": "accommodation", "education": "education", "profiles": {},
"basic_profile": {}
"value": "HIGH", "scale": []
"LOW", "MEDIUM", "HIGH" "profileFlags": { }, "status": "COMPLETED_SCORED"
{
}
"event": "attempt_profiled", "attemptId": "4d1c90d4-f1fe-4303-ad83-535d99a61cf5", "quizId": "481ac0fe-ac33-402a-9367-2aaa7a98b49d", "puid": "a_puid", "age": "age", "gender": "gender", "maritalStatus": "maritalStatus", "occupation": "occupation", "accommodation": "accommodation", "education": "education", "profiles": { }, "profileFlags": {},
"basic_profile": {}
"flag": []
"FAST_CLICK" "status": "COMPLETED_NOT_SCORED"
- el puid es opcional
- la age, gender, maritalStatus, occupation,
accommodation y education también son opcionales ya que algunos cuestionarios pueden no tener preguntas demográficas
status | description |
---|---|
COMPLETED_SCORED | El cuestionario ha sido completado, se esperan perfiles presentes. |
COMPLETED_PARTIALLY_SCORED | El cuestionario ha sido completado, se esperan perfiles y marcas presentes. |
COMPLETED_NOT_SCORED | No se puede calificar el cuestionario, razones posibles: el cuestionario se respondió demasiado rápido (no se generará un perfil y en su lugar se presentará una marca de CLIC RÁPIDO), no se han configurado / habilitado modelos de perfil. |
Coremetrix emplea cifrado para toda la transmisión de datos. La API de Suscripciones solo aceptará el protocolo https. Esto es para proteger la comunicación entre el sistema de Coremetrix y tu backend. Debes activar TLS en tu servidor y configurar la URL de suscripción para que use https.
Coremetrix admite la autenticación básica HTTP para permitir que tu backend asegure la URL del suscriptor. Esto asegurará que solo Coremetrix pueda enviar datos a tu servidor.
La API de Suscripciones te permitirá crear una URL de suscriptor con el siguiente formato: https://username:password@my_server.com/my_secure_path
Note: username and password should not contain any :
or @
symbols.
OAuth 2.0 es un estándar abierto para la autorización en internet. Coremetrix admite la autorización OAuth 2.0 para permitir que nuestro backend tenga acceso limitado a tu punto final de webhook.
OAuth 2.0 requiere un token de autenticación, que es emitido por un servidor de autorización.
Para otorgar acceso a Coremetrix para enviar datos a tu punto final de webhook, primero debes configurar tus suscripciones usando la API de Suscripciones.
Para cada suscripción, también debes proporcionar la siguiente configuración:
Field | Required | Description |
---|---|---|
Token URL | Yes | La URL del punto final de la API para solicitar un token de acceso (solo se permite https). Nota: De acuerdo con RFC 6749, la URL del token debe aceptar un tipo de contenido de x-www-form-urlencoded. |
Client id | Yes | El ID del cliente de la aplicación web. |
Client secret | Yes | El secreto del cliente de la aplicación web. |
Scope | No | Alcance de permisos a solicitar. |
Audience | No | El público objetivo es el destinatario previsto del token. El URI del público objetivo DEBE ser un URI absoluto según lo definido en la Sección 4.3 de [RFC3986]. |
Grant type | No | Tipo de concesión. |
Note: Estos parámetros se agregarán utilizando el formato application/x-www-form-urlencoded con una codificación de caracteres UTF-8 en el cuerpo de la entidad de la solicitud HTTP.
Puedes encontrar detalles completos aquí.
Estos parámetros se agregarán utilizando el formato application/x-www-form-urlencoded con una codificación de caracteres UTF-8 en el cuerpo de la entidad de la solicitud HTTP.
Puedes encontrar detalles completos aquí.
Cómo funciona:
OAuth 2.0 especifica múltiples flujos para obtener y validar tokens. Coremetrix admite el Flujo de Credenciales del Cliente, donde la comunicación es estrictamente de servidor a servidor. No se emite un Token de Actualización en este flujo, ya que el cliente puede recuperar un nuevo Token de Acceso usando sus credenciales de todos modos.
Cuando ocurre un evento, si OAuth 2.0 está configurado:
Los Tokens Web JSON te permiten verificar que los datos enviados a tu servidor no han sido manipulados y que realmente provienen de Coremetrix.
Cómo funciona:
jti
reclamo), el tiempo de creación (iat
reclamo) y un tiempo de expiración (exp
reclamo) como parte de la carga útil del JWT. El tiempo de expiración está configurado actualmente en 60 segundos.X-Coremetrix-Signature
al enviar datos a tu servidor.Validación del JWT:
Deberás validar el JWT para verificar su autenticidad. Puedes hacer esto verificando su firma digital y sus reclamos. Hay varias bibliotecas disponibles para ayudarte en esto. Por ejemplo, puedes usar la biblioteca jjwt para Java.
Coremetrix volverá a intentar enviar los eventos en caso de error. Además de los reintentos, Coremetrix implementa el algoritmo de retroceso exponencial para lograr un mejor control del flujo. En caso de error devuelto por tu servidor al intentar entregar los eventos, el sistema de Coremetrix volverá a intentarlo después de un período de tiempo. El tiempo de espera aumentará incrementalmente entre las solicitudes de reintentos consecutivos después de cada falla. Esto dará a tu servicio suficiente tiempo para recuperarse
Coremetrix volverá a intentar enviar mensajes a tu sistema durante aproximadamente 1 hora. Si tu servicio está inactivo durante más de una hora, te recomendamos que utilices la API de informes de Coremetrix para obtener la información faltante.