Démo d'automatisation avec Gato GraphQL

Comment enregistrer automatiquement sur AirTable les utilisateurs ayant terminé un cours MasterStudy LMS

Chaque fois qu'un utilisateur termine un cours MasterStudy LMS sur le site WordPress, envoyez des données personnalisées (concernant l'utilisateur et le cours) à AirTable et créez des enregistrements dans une table spécifiée.

Leonardo Losoviz
Leonardo Losoviz -
Logo
Image
Target Image
Target Image

Chaque fois qu'un utilisateur termine un cours de MasterStudy LMS, nous enverrons des données personnalisées à AirTable et créerons des enregistrements dans une table spécifiée.

Dans cette vidéo, l'utilisateur termine deux leçons d'un cours du LMS. Lorsque la dernière leçon du cours est terminée, une automatisation Gato GraphQL crée un enregistrement dans AirTable avec les données requises :

La table possède les colonnes Name, ProfileURL et Email avec les données de l'utilisateur, et Course du LMS.

Table dans AirTable avec les données du LMS
Table dans AirTable avec les données du LMS

Créez une requête persistée contenant la requête GraphQL suivante, et donnez-lui le titre 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
            }
          }
        ]
      }
    }
  })
}

Remarquez comment la requête IsCourseFinished vérifie si la progression du cours est 100 (c'est-à-dire que le cours a été terminé), et seulement alors exécute la synchronisation des données vers AirTable.

La requête persistée recevra les paramètres du hook d'action stm_lms_progress_updated de MasterStudy LMS (voir ci-dessous), et récupérera les données suivantes :

  • Le nom, l'e-mail et l'URL de l'utilisateur
  • Le titre du cours

Elle se connectera ensuite à l'API AirTable, et créera les enregistrements avec les données fournies.

Pour se connecter à l'API, nous avons besoin de tokens d'accès personnel pour l'authentification. Assurez-vous donc de créer un token d'accès personnel pour votre table, et de lui attribuer la portée data.records:write.

Ensuite, nous créons une nouvelle automatisation, en indiquant l'action stm_lms_progress_updated de MasterStudy comme déclencheur.

Ce hook d'action fournit les données suivantes :

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

Nous devons également fournir le dictionnaire JSON pour les variables dynamiques, afin de passer les trois paramètres de l'action comme variables à la requête GraphQL :

{
  "courseId": 1,
  "userId": 2,
  "courseProgress": 3
}
Déclencheur de l'automatisation
Déclencheur de l'automatisation

Pour l'action, nous sélectionnons la requête persistée nouvellement créée Export MasterStudy LMS course data to AirTable, et nous fournissons le dictionnaire JSON pour les variables GraphQL statiques, avec les données d'AirTable :

{
  "baseId": "{ your baseId }",
  "tableName": "{ your tableName }",
  "personalAccessToken": "{ your access token }"
}
Action de l'automatisation
Action de l'automatisation

Enfin, publiez l'automatisation. Désormais, chaque fois que l'utilisateur termine un cours, la table AirTable sera automatiquement remplie, comme le montre le résultat dans la vidéo ci-dessus :

Table dans AirTable avec les données du LMS
Table dans AirTable avec les données du LMS

Abonnez-vous à notre newsletter

Restez au courant de toutes les nouveautés de Gato GraphQL.