Demo de automatización con Gato GraphQL

Cómo registrar automáticamente en AirTable a los usuarios que han completado una lección de MasterStudy LMS

Cada vez que un usuario complete una lección de MasterStudy LMS en el sitio WordPress, envía datos personalizados (sobre el usuario, la lección y el curso) a AirTable y crea registros en una tabla concreta.

Leonardo Losoviz
Leonardo Losoviz -
Logo
Image
Target Image
Target Image

Cada vez que un usuario complete una lección de MasterStudy LMS, enviaremos datos personalizados a AirTable y crearemos registros en una tabla concreta.

En este vídeo, el usuario completa dos lecciones de un curso del LMS. Cuando se completa cada lección, una automatización de Gato GraphQL crea un registro en AirTable con los datos requeridos:

La tabla tiene las columnas Name, ProfileURL y Email con datos del usuario, y Course y Lesson del LMS.

Tabla en AirTable con datos del LMS
Tabla en AirTable con datos del LMS

Crea una consulta persistida que contenga la siguiente consulta GraphQL y dale el título Export MasterStudy LMS lesson data to AirTable:

query ExportUserData(
  $userId: ID!
  $lessonId: ID!
  $courseId: ID!
) {
  user(by: { id: $userId }) {
    displayName
      @export(as: "userDisplayName")
    email
      @export(as: "userEmail")
    url
      @export(as: "userURL")
  }
  course: customPost(by: {id: $courseId}, customPostTypes:["stm-courses"]) {
    title
      @export(as: "courseTitle")
  }
  lesson: customPost(by: {id: $lessonId}, customPostTypes:["stm-lessons"]) {
    title
      @export(as: "lessonTitle")
  }
}
 
query CreateRecordInAirTable(
  $baseId: String!
  $tableName: String!
  $personalAccessToken: String!
)
  @depends(on: "ExportUserData")
{
  url: _sprintf(
    string: "https://api.airtable.com/v0/%s/%s",
    values: [$baseId, $tableName]
  )
  bearerToken: _sprintf(
    string: "Bearer %s",
    values: [$personalAccessToken]
  )
    @remove
  response: _sendJSONObjectItemHTTPRequest(input: {
    url: $__url,
    method: POST,
    options: {
      headers: [
        {
          name: "Authorization",
          value: $__bearerToken
        }
      ]
      json: {
        records: [
          {
            fields: {
              Name: $userDisplayName,
              ProfileURL: $userURL,
              Email: $userEmail,
              Course: $courseTitle,
              Lesson: $lessonTitle
            }
          }
        ]
      }
    }
  })
}

La consulta persistida recibirá los parámetros del action hook stm_lms_lesson_passed de MasterStudy LMS (ver más abajo) y recuperará todos los datos asociados:

  • El nombre, correo y URL del usuario
  • El título de la lección
  • El título del curso

A continuación, se conectará a la API de AirTable y creará los registros con los datos proporcionados.

Para conectarnos a la API necesitamos tokens de acceso personal para la autenticación. Asegúrate de crear un token de acceso personal para tu tabla y asignarle el scope data.records:write.

A continuación, creamos una nueva automatización, indicando la acción stm_lms_lesson_passed de MasterStudy como disparador.

Este action hook proporciona los siguientes datos:

do_action( 'stm_lms_lesson_passed', $user_id, $lesson_id, $course_id );

También debemos proporcionar el diccionario JSON para las variables dinámicas, para pasar los tres parámetros de la acción como variables a la consulta GraphQL:

{
  "userId": 1,
  "lessonId": 2,
  "courseId": 3
}
Disparador de la automatización
Disparador de la automatización

Para la acción, seleccionamos la consulta persistida recién creada Export MasterStudy LMS lesson data to AirTable y proporcionamos el diccionario JSON con las variables estáticas de GraphQL, con datos de AirTable:

{
  "baseId": "{ your baseId }",
  "tableName": "{ your tableName }",
  "personalAccessToken": "{ your access token }"
}
Acción de la automatización
Acción de la automatización

Finalmente, publica la automatización. A partir de ahora, cada vez que el usuario complete una lección, la tabla de AirTable se rellenará automáticamente.


Suscríbete a nuestra newsletter

Mantente al tanto de todas las novedades de Gato GraphQL.