Demo de automatización con Gato GraphQL

Cómo registrar automáticamente en AirTable a los usuarios que han completado un curso de MasterStudy LMS

Cada vez que un usuario complete un curso de MasterStudy LMS en el sitio WordPress, envía datos personalizados (sobre el usuario 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 un curso 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 la última lección del curso, 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 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 course data to AirTable:

query IsCourseFinished(
  $courseProgress: Int!  
) {
  isCourseFinished: _equals(value1: $courseProgress, value2: 100)
    @export(as: "isCourseFinished")
}
 
query ExportUserData(
  $courseId: ID!
  $userId: ID!
)
  @depends(on: "IsCourseFinished")
  @include(if: $isCourseFinished)
{
  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")
  }
}
 
query CreateRecordInAirTable(
  $baseId: String!
  $tableName: String!
  $personalAccessToken: String!
)
  @depends(on: "ExportUserData")
  @include(if: $isCourseFinished)
{
  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
            }
          }
        ]
      }
    }
  })
}

Observa cómo la consulta IsCourseFinished comprueba si el progreso del curso es 100 (es decir, si el curso se ha completado), y solo entonces ejecuta la sincronización de datos a AirTable.

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

  • El nombre, correo y URL del usuario
  • 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_progress_updated de MasterStudy como disparador.

Este action hook proporciona los siguientes datos:

do_action( 'stm_lms_progress_updated', $course_id, $user_id, $progress );

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:

{
  "courseId": 1,
  "userId": 2,
  "courseProgress": 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 course 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 un curso, la tabla de AirTable se rellenará automáticamente, como se muestra en el vídeo anterior:

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

Suscríbete a nuestra newsletter

Mantente al tanto de todas las novedades de Gato GraphQL.