Come registrare automaticamente su AirTable gli utenti che hanno completato un corso di MasterStudy LMS
Ogni volta che un utente completa un corso di MasterStudy LMS sul sito WordPress, invia dati personalizzati (relativi all'utente e al corso) ad AirTable e crea record in una tabella specificata.

Integrazioni
Ogni volta che un utente completa un corso di MasterStudy LMS, invieremo dati personalizzati ad AirTable e creeremo record in una tabella specificata.
In questo video, l'utente completa due lezioni di un corso del LMS. Quando l'ultima lezione del corso viene completata, un'automazione di Gato GraphQL crea un record in AirTable con i dati richiesti:
La tabella ha le colonne Name, ProfileURL ed Email con i dati dell'utente, e Course dal LMS.

Crea una query persistente contenente la seguente query GraphQL, e assegnale il titolo 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
}
}
]
}
}
})
}Nota come la query IsCourseFinished verifichi se l'avanzamento del corso è 100 (ovvero il corso è stato completato), e solo allora esegua la sincronizzazione dei dati verso AirTable.
La query persistente riceverà i parametri dall'action hook stm_lms_progress_updated di MasterStudy LMS (vedi sotto), e recupererà i seguenti dati:
- Il nome, l'email e l'URL dell'utente
- Il titolo del corso
Si connetterà quindi all'API di AirTable, e creerà i record con i dati forniti.
Per connetterci all'API abbiamo bisogno di personal access token per l'autenticazione. Assicurati quindi di creare un personal access token per la tua tabella, e di assegnargli lo scope data.records:write.
Successivamente, creiamo una nuova automazione, indicando l'action stm_lms_progress_updated di MasterStudy come trigger.
Questo action hook fornisce i seguenti dati:
do_action( 'stm_lms_progress_updated', $course_id, $user_id, $progress );Dobbiamo anche fornire il dizionario JSON per le variabili dinamiche, in modo da passare tutti e tre i parametri dell'action come variabili alla query GraphQL:
{
"courseId": 1,
"userId": 2,
"courseProgress": 3
}
Per l'action, selezioniamo la query persistente appena creata Export MasterStudy LMS course data to AirTable, e forniamo il dizionario JSON per le variabili GraphQL statiche, con i dati di AirTable:
{
"baseId": "{ your baseId }",
"tableName": "{ your tableName }",
"personalAccessToken": "{ your access token }"
}
Infine, pubblica l'automazione. D'ora in poi, ogni volta che l'utente completa un corso, la tabella di AirTable verrà popolata automaticamente, come mostra il risultato nel video qui sopra:
