Demo de automação com Gato GraphQL

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.

Leonardo Losoviz
Leonardo Losoviz -
Logo
Image
Target Image
Target Image

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.

Tabela no AirTable com dados do LMS
Tabela no AirTable com dados 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
}
Trigger da automação
Trigger da automação

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 }"
}
Action da automação
Action da automação

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:

Tabela no AirTable com dados do LMS
Tabela no AirTable com dados do LMS

Assine nossa newsletter

Fique por dentro de todas as atualizações do Gato GraphQL.