El complemento de Webhook tiene un interruptor en la esquina superior derecha que le permite activar o desactivar esta funcionalidad.
Para poder activar el complemento primero se deben llenar y guardar todos los campos del formulario.
Al activar este complemento, se enviarán notificaciones de eventos específicos hacia un servicio Web externo.
Los campos a llenar de este complemento son:
Ruta: indica la ruta (endpoint) hacia la cual enviar las notificaciones de los eventos que se especifiquen en este complemento.
Evento: consta de un conjunto de casillas de verificación que pueden marcarse para que se envíe una notificación cuando suceda dicho evento. Los eventos que pueden notificarse son:
- Registro de usuarios: este evento se dispara cuando un usuario se registra desde un formulario de «Registro» y luego inicia sesión por primera vez.
- Primer inicio de sesión: este evento se dispara cuando un usuario, que ha sido invitado a la escuela, inicia sesión por primera vez.
- Asignación de cursos: este evento se dispara cuando un administrador asigna uno o varios cursos a uno o varios usuarios desde el módulo de Administración.
- Autoinscripción en cursos: este evento se dispara cuando un usuario se suscribe él mismo a un curso gratis a través del botón «Suscribirse» de la vista de detalles de curso.
- Compra de cursos: este evento se dispara cuando un usuario realiza la compra de un curso a través del botón «Comprar» de la vista de detalles de curso.
- Certificado de curso otorgado: este evento se dispara cuando un usuario obtiene el certificado de un curso.
A continuación se muestran los ejemplos de
los objetos JSON que se envían al dispararse los distintos eventos.
Evento: Registro de usuarios.
Descripción: Un usuario se registra desde un formulario de «Registro» y luego inicia sesión por primera vez.
Objeto JSON enviado:
{
"created": 1521147247,
"object": "event",
"type": "register",
"data": {
"users": [
{
"id": 677,
"username": "antoniogonzalez",
"employee_number": "E123456",
"alternative_id": null,
"external_id": "112233",
"identification_number": null,
"name": "Antonio",
"last_name": "González",
"email": "antoniogonzalez@dominio.com",
"picture": {
"thumb": "https:\/\/d2j3j1vpt0...\/img\/default_user_icon-32x32.jpg",
"small": "https:\/\/d2j3j1vpt0...\/img\/default_user_icon-64x64.jpg",
"medium": "https:\/\/d2j3j1vpt0...\/img\/default_user_icon-98x98.jpg",
"large": "https:\/\/d2j3j1vpt0...\/img\/default_user_icon-198x198.jpg"
},
"phone": "04128889900"
}
]
}
}
Evento: Primer inicio de sesión.
Descripción: Un usuario, que ha sido invitado a la plataforma a través del módulo de Administración, inicia sesión por primera vez.
Objeto JSON enviado:
{
"created": 1521146934,
"object": "event",
"type": "first_login",
"data": {
"users": [
{
"id": 670,
"username": "pedroperez",
"employee_number": "E123456",
"alternative_id": "ID9855325",
"external_id": null,
"identification_number": null,
"name": "Pedro",
"last_name": "Pérez",
"email": "pedroperez@dominio.com",
"picture": {
"thumb": "https:\/\/d2j3j1vpt0...\/img\/default_user_icon-32x32.jpg",
"small": "https:\/\/d2j3j1vpt0...\/img\/default_user_icon-64x64.jpg",
"medium": "https:\/\/d2j3j1vpt0...\/img\/default_user_icon-98x98.jpg",
"large": "https:\/\/d2j3j1vpt0...\/img\/default_user_icon-198x198.jpg"
},
"phone": "04169998877"
}
]
}
}
Evento: Asignación de cursos.
Descripción: Un administrador asigna uno o varios cursos a uno o varios usuarios desde el módulo de Administración:
Existen diferentes maneras en las que un curso puede ser asignado a un usuario desde el módulo de Administración:
Usuarios > Menú de opciones (…) > Suscribir a cursos
Usuarios > Menú de opciones (…) > Asignar a grupos (*)
Usuarios > Seleccionar varios usuarios > Acciones en masa > Suscribir a cursos
Usuarios > Seleccionar varios usuarios > Acciones en masa > Asignar a grupos (*)
(*) esta acción le asigna todos los cursos de todos los grupos que se seleccionen a los usuarios seleccionados.
Cursos > Menú de opciones (…) > Asignar a usuarios
Cursos > Menú de opciones (…) > Asignar a grupos (**)
Cursos > Seleccionar varios cursos > Acciones en masa > Suscribir usuarios
Cursos > Seleccionar varios cursos > Acciones en masa > Asignar a grupos (**)
(**) esta acción asigna los cursos seleccionados a todos los usuarios de todos los grupos que se seleccionen.
Grupos > Abrir > Menú de opciones (…) > Asignar cursos (esta acción, a la vez, asigna los nuevos cursos a los usuarios del grupo)
Grupos > Abrir > Menú de opciones (…) > Añade usuarios (esta acción, a la vez, le asigna a esos nuevos usuarios los cursos del grupo)
Objeto JSON enviado:
{
"created": 1521147641,
"object": "event",
"type": "course_assign_admin",
"data": {
"users": [
{
"id": 670,
"username": "pedroperez",
"employee_number": "E123456",
"alternative_id": "ID9855325",
"external_id": null,
"identification_number": null,
"name": "Pedro",
"last_name": "Pérez",
"email": "pedroperez@dominio.com",
"picture": {
"thumb": "https:\/\/d2j3j1vpt0...\/img\/default_user_icon-32x32.jpg",
"small": "https:\/\/d2j3j1vpt0...\/img\/default_user_icon-64x64.jpg",
"medium": "https:\/\/d2j3j1vpt0...\/img\/default_user_icon-98x98.jpg",
"large": "https:\/\/d2j3j1vpt0...\/img\/default_user_icon-198x198.jpg"
},
"phone": "04161112233"
},
{
"id": 671,
"username": "luisvelasquez",
"employee_number": "E123456",
"alternative_id": "71515ABC",
"external_id": null,
"identification_number": null,
"name": "Luis",
"last_name": "Velásquez",
"email": "luisvelasquez@dominio.com",
"picture": {
"thumb": "https:\/\/d2j3j1vpt0...\/pictures\/1521146757-32x32.jpg",
"small": "https:\/\/d2j3j1vpt0...\/pictures\/1521146757-64x64.jpg",
"medium": "https:\/\/d2j3j1vpt0...\/pictures\/1521146757-98x98.jpg",
"large": "https:\/\/d2j3j1vpt0...\/pictures\/1521146757-198x198.jpg"
},
"phone": "04244445566"
}
],
"courses": [
{
"id": 1691,
"title": "Nemo enim ipsam voluptatem quia voluptas",
"headline": "Ut enim ad minima veniam",
"description": "",
"price": 0,
"cover": {
"thumb": "https:\/\/d2j3j1vpt0...\/img\/course_cover-118x66.jpg",
"small": "https:\/\/d2j3j1vpt0...\/img\/course_cover-222x125.jpg",
"medium": "https:\/\/d2j3j1vpt0...\/img\/course_cover-236x132.jpg",
"large": "https:\/\/d2j3j1vpt0...\/img\/course_cover-506x285.jpg"
}
},
{
"id": 2081,
"title": "At vero eos et accusamus et iusto odio dignissimos",
"headline": "Quis autem vel eum iure.",
"description": "<p>Architecto sint praesentium nam aliquam alias.<\/p>",
"price": 0,
"cover": {
"thumb": "https:\/\/d2j3j1vpt0...\/covers\/1487605210-118x66.jpg",
"small": "https:\/\/d2j3j1vpt0...\/covers\/1487605210-222x125.jpg",
"medium": "https:\/\/d2j3j1vpt0...\/covers\/1487605210-236x132.jpg",
"large": "https:\/\/d2j3j1vpt0...\/covers\/1487605210-506x285.jpg"
}
}
]
}
}
Evento: Autoinscripción en cursos.
Descripción: Un usuario se suscribe él mismo a un curso gratis a través del botón «Suscribirse» de la vista de detalles de curso.
Objeto JSON enviado:
{
"created": 1521146530,
"object": "event",
"type": "course_assign_auto",
"data": {
"users": [
{
"id": 671,
"username": "luisvelasquez",
"employee_number": "E123456",
"alternative_id": "71515ABC",
"external_id": null,
"identification_number": null,
"name": "Luis",
"last_name": "Velásquez",
"email": "luisvelasquez@dominio.com",
"picture": {
"thumb": "https:\/\/d2j3j1vpt0...\/img\/default_user_icon-32x32.jpg",
"small": "https:\/\/d2j3j1vpt0...\/img\/default_user_icon-64x64.jpg",
"medium": "https:\/\/d2j3j1vpt0...\/img\/default_user_icon-98x98.jpg",
"large": "https:\/\/d2j3j1vpt0...\/img\/default_user_icon-198x198.jpg"
},
"phone": "04247778899"
}
],
"courses": [
{
"id": 43,
"title": "Quisque rutrum",
"headline": "Nulla consequat massa quis enim",
"description": "<p>Vivamus elementum semper nisi. Aenean vulputate<\/p>",
"price": 0,
"cover": {
"thumb": "https:\/\/d2j3j1vpt0...\/covers\/1466112612-118x66.jpg",
"small": "https:\/\/d2j3j1vpt0...\/covers\/1466112612-222x125.jpg",
"medium": "https:\/\/d2j3j1vpt0...\/covers\/1466112612-236x132.jpg",
"large": "https:\/\/d2j3j1vpt0...\/covers\/1466112612-506x285.jpg"
}
}
]
}
}
Evento: Compra de cursos.
Descripción: Un usuario realiza la compra de un curso a través del botón «Comprar» de la vista de detalles de curso.
Objeto JSON enviado:
{
"created": 1521146810,
"object": "event",
"type": "course_assign_purchase",
"data": {
"users": [
{
"id": 671,
"username": "luisvelasquez",
"employee_number": "E123456",
"alternative_id": "71515ABC",
"external_id": null,
"identification_number": null,
"name": "Luis",
"last_name": "Velásquez",
"email": "luisvelasquez@dominio.com",
"picture": {
"thumb": "https:\/\/d2j3j1vpt0...\/pictures\/1521146757-32x32.jpg",
"small": "https:\/\/d2j3j1vpt0...\/pictures\/1521146757-64x64.jpg",
"medium": "https:\/\/d2j3j1vpt0...\/pictures\/1521146757-98x98.jpg",
"large": "https:\/\/d2j3j1vpt0...\/pictures\/1521146757-198x198.jpg"
},
"phone": "04242225588"
}
],
"courses": [
{
"id": 31,
"title": "Sed ut perspiciatis unde omnis iste natus",
"headline": "Aenean commodo ligula eget dolor",
"description": "<p>Lorem ipsum dolor sit amet, consectetuer adipisc.<\/p>",
"price": 1,
"cover": {
"thumb": "https:\/\/d2j3j1vpt0...\/img\/course_cover-118x66.jpg",
"small": "https:\/\/d2j3j1vpt0...\/img\/course_cover-222x125.jpg",
"medium": "https:\/\/d2j3j1vpt0...\/img\/course_cover-236x132.jpg",
"large": "https:\/\/d2j3j1vpt0...\/img\/course_cover-506x285.jpg"
}
}
]
}
}
Evento: Certificado de curso otorgado.
Descripción: Un usuario completa la cantidad de lecciones necesaria para obtener el certificado de un curso.
Objeto JSON enviado:
{
"created": 1579889546,
"object": "event",
"type": "course_certificate_granted",
"data": {
"user": {
"id": 671,
"username": "luisvelasquez",
"employee_number": "E123456",
"alternative_id": "71515ABC",
"external_id": null,
"identification_number": null,
"name": "Luis",
"last_name": "Velásquez",
"email": "luisvelasquez@dominio.com",
"picture": {
"thumb": "https:\/\/d2j3j1vpt0...\/pictures\/1521146757-32x32.jpg",
"small": "https:\/\/d2j3j1vpt0...\/pictures\/1521146757-64x64.jpg",
"medium": "https:\/\/d2j3j1vpt0...\/pictures\/1521146757-98x98.jpg",
"large": "https:\/\/d2j3j1vpt0...\/pictures\/1521146757-198x198.jpg"
},
"phone": "04242225588"
},
"course": {
"id": 70,
"title": "Nemo enim ip",
"headline": "Ut enim ad minima veniam",
"description": "<p>Lorem ipsum dolor sit amet, consectetuer adipisc.<\/p>",
"cover": {
"thumb": "https:\/\/d2j3j1vpt0...\/img\/course_cover-118x66.jpg",
"small": "https:\/\/d2j3j1vpt0...\/img\/course_cover-222x125.jpg",
"medium": "https:\/\/d2j3j1vpt0...\/img\/course_cover-236x132.jpg",
"large": "https:\/\/d2j3j1vpt0...\/img\/course_cover-506x285.jpg"
},
"slug": "nemo-enim-ip",
"url": "https:\/\/escueladeprueba.teachlr.com\/#courses-online\/nemo-enim-ip"
},
"certificate": {
"organization_name": "Escuela de prueba",
"hash": "ce7f8d46f67b",
"use_custom_certif": false,
"url": "https:\/\/escueladeprueba.teachlr.com\/#certificate\/ce7f8d46f67b",
"instructors": "Moises Annicchiarico, Irving Martínez",
"granted_at": "2020-01-24 14:12:25",
}
}
}
Un ejemplo de cómo leer y utilizar los valores de estos objetos JSON utilizando el lenguaje PHP sería como sigue:
<?php
//Para el evento Asignación de cursos:
//$json es una variable que debe tener la respuesta obtenida del webhook
//se decodifica el JSON para poder manipularlo
$webhook_data = json_decode($json);
//obtener la fecha (timestamp) del evento
$date = $webhook_data->created;
//obtener el tipo de evento:
$type = $webhook_data->type;
//obtener el arreglo de todos los usuarios
$array_users = $webhook_data->data->users;
//recorrer el arreglo de usuarios para obtener la información de cada uno de ellos
foreach ($array_users as $key => $user)
{
//obtener el id
$user_id = $user->id;
//obtener el nombre de usuario
$username = $user->username;
//obtener el número de empleado
$username = $user->employee_number;
//obtener el ID alternativo (inicio de sesión alternativo)
$username = $user->alternative_id;
//obtener el ID externo (inicio de sesión con token)
$username = $user->external_id;
//obtener el número de identificación
$username = $user->identification_number;
//obtener el nombre
$name = $user->name;
//obtener el apellido
$last_name = $user->last_name;
//obtener el email
$email = $user->email;
//obtener la imagen miniatura de perfil
$thumb = $user->picture->thumb;
//obtener la imagen de perfil pequeña
$small = $user->picture->small;
//obtener la imagen de perfil mediana
$medium = $user->picture->medium;
//obtener la imagen de perfil grande
$large = $user->picture->large;
//obtener el número de teléfono
$phone = $user->phone;
}
//obtener el arreglo de todos los cursos
$array_courses = $webhook_data->data->courses;
//recorrer el arreglo de cursos para obtener la información de cada uno de ellos
foreach ($array_courses as $key => $course)
{
//obtener el id
$course_id = $course->id;
//obtener el título
$title = $course->title;
//obtener el subtítulo
$headline = $course->headline;
//obtener la descripción
$description = $course->description;
//obtener el precio
$price = $course->price;
//obtener la imagen de portada miniatura
$thumb = $course->cover->thumb;
//obtener la imagen de portada pequeña
$small = $course->cover->small;
//obtener la imagen de portada mediana
$medium = $course->cover->medium;
//obtener la imagen de portada grande
$large = $course->cover->large;
}
Leave A Comment?