Demo di automazione con Gato GraphQL

Come registrare automaticamente su AirTable gli utenti che hanno completato una lezione di MasterStudy LMS

Ogni volta che un utente completa una lezione di MasterStudy LMS sul sito WordPress, invia dati personalizzati (riguardanti l'utente, la lezione e il 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 una lezione 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 dell'LMS. Quando ogni lezione viene completata, un'automazione 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 e Lesson dall'LMS.

Tabella in AirTable con i dati dell'LMS
Tabella in AirTable con i dati dell'LMS

Crea una query persistente contenente la seguente query GraphQL, e assegnale il titolo Export MasterStudy LMS lesson data to AirTable:

query ExportUserData(
  $userId: ID!
  $lessonId: ID!
  $courseId: ID!
) {
  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")
  }
  lesson: customPost(by: {id: $lessonId}, customPostTypes:["stm-lessons"]) {
    title
      @export(as: "lessonTitle")
  }
}
 
query CreateRecordInAirTable(
  $baseId: String!
  $tableName: String!
  $personalAccessToken: String!
)
  @depends(on: "ExportUserData")
{
  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,
              Lesson: $lessonTitle
            }
          }
        ]
      }
    }
  })
}

La query persistente riceverà i parametri dall'action hook stm_lms_lesson_passed di MasterStudy LMS (vedi sotto), e recupererà tutti i dati ad essi associati:

  • Il nome, l'email e l'URL dell'utente
  • Il titolo della lezione
  • Il titolo del corso

Successivamente si connetterà all'API di AirTable e creerà i record con i dati forniti.

Per connetterci all'API abbiamo bisogno di token di accesso personale per l'autenticazione. Assicurati quindi di creare un token di accesso personale per la tua tabella e di assegnargli lo scope data.records:write.

Successivamente, creiamo una nuova automazione, indicando l'action stm_lms_lesson_passed di MasterStudy come trigger.

Questo action hook fornisce i seguenti dati:

do_action( 'stm_lms_lesson_passed', $user_id, $lesson_id, $course_id );

Dobbiamo inoltre fornire il dizionario JSON per le variabili dinamiche, in modo da passare tutti e tre i parametri dell'action come variabili alla query GraphQL:

{
  "userId": 1,
  "lessonId": 2,
  "courseId": 3
}
Trigger dell'automazione
Trigger dell'automazione

Per l'action, selezioniamo la query persistente appena creata Export MasterStudy LMS lesson 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 una lezione, la tabella AirTable verrà popolata automaticamente.


Iscriviti alla nostra newsletter

Resta aggiornato su tutte le novità di Gato GraphQL.