Demo di automazione con Gato GraphQL

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.

Leonardo Losoviz
Leonardo Losoviz -
Logo
Image
Target Image
Target Image

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.

Tabella in AirTable con i dati del LMS
Tabella in AirTable con i dati del 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
}
Trigger dell'automazione
Trigger dell'automazione

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 }"
}
Action dell'automazione
Action dell'automazione

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:

Tabella in AirTable con i dati del LMS
Tabella in AirTable con i dati del LMS

Iscriviti alla nostra newsletter

Resta aggiornato su tutte le novità di Gato GraphQL.