Configura el complemento de notificación de eventos (Webhook) de Teachlr Organizaciones

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. 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",
"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",
"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",
"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",
"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",
"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",
"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" } } ] } }

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 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; } webhook_instructions_es
//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; }
?>