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.

Intégrations
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.

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
}
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 }"
}
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 :
