Como registrar automaticamente no AirTable os usuários que concluíram um curso do MasterStudy LMS
Sempre que um usuário concluir um curso do MasterStudy LMS no site WordPress, envie dados personalizados (sobre o usuário e o curso) ao AirTable e crie registros em uma tabela especificada.

Integrações
Sempre que um usuário concluir um curso do MasterStudy LMS, enviaremos dados personalizados ao AirTable e criaremos registros em uma tabela especificada.
Neste vídeo, o usuário conclui duas aulas de um curso do LMS. Quando a última aula do curso é concluída, uma automação do Gato GraphQL cria um registro no AirTable com os dados necessários:
A tabela tem as colunas Name, ProfileURL e Email com dados do usuário, e Course do LMS.

Crie uma query persistida contendo a seguinte query GraphQL e dê a ela o 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
}
}
]
}
}
})
}Observe como a query IsCourseFinished verifica se o progresso do curso é 100 (ou seja, o curso foi concluído), e somente então executa a sincronização dos dados com o AirTable.
A query persistida receberá os parâmetros do action hook stm_lms_progress_updated do MasterStudy LMS (veja abaixo) e recuperará os seguintes dados:
- O nome, e-mail e URL do usuário
- O título do curso
Em seguida, ela se conectará à API do AirTable e criará os registros com os dados fornecidos.
Para conectar à API, precisamos de personal access tokens para autenticação. Portanto, certifique-se de criar um personal access token para sua tabela e atribua a ele o escopo data.records:write.
Em seguida, criamos uma nova automação, fornecendo a action stm_lms_progress_updated do MasterStudy como trigger.
Esse action hook fornece os seguintes dados:
do_action( 'stm_lms_progress_updated', $course_id, $user_id, $progress );Também precisamos fornecer o dicionário JSON para as variáveis dinâmicas, a fim de passar os três parâmetros da action como variáveis para a query GraphQL:
{
"courseId": 1,
"userId": 2,
"courseProgress": 3
}
Para a action, selecionamos a query persistida recém-criada Export MasterStudy LMS course data to AirTable e fornecemos o dicionário JSON para as variáveis GraphQL estáticas, com os dados do AirTable:
{
"baseId": "{ your baseId }",
"tableName": "{ your tableName }",
"personalAccessToken": "{ your access token }"
}
Por fim, publique a automação. A partir de agora, sempre que o usuário concluir um curso, a tabela do AirTable será preenchida automaticamente, como mostra o resultado no vídeo acima:
