Демо автоматизации с Gato GraphQL

Как автоматически регистрировать в AirTable пользователей, завершивших курс в MasterStudy LMS

Каждый раз, когда пользователь завершает курс в MasterStudy LMS на сайте WordPress, отправляйте пользовательские данные (о пользователе и курсе) в AirTable и создавайте записи в указанной таблице.

Leonardo Losoviz
Leonardo Losoviz -
Logo
Image
Target Image
Target Image

Интеграции

Каждый раз, когда пользователь завершает курс в MasterStudy LMS, мы будем отправлять пользовательские данные в AirTable и создавать записи в указанной таблице.

В этом видео пользователь проходит два урока из курса LMS. Когда последний урок курса завершён, автоматизация Gato GraphQL создаёт запись в AirTable с необходимыми данными:

Таблица имеет столбцы Name, ProfileURL и Email с данными пользователя, а также Course из LMS.

Таблица в AirTable с данными LMS
Таблица в AirTable с данными LMS

Создайте persisted query со следующим GraphQL-запросом и присвойте ей название 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
            }
          }
        ]
      }
    }
  })
}

Обратите внимание, как query IsCourseFinished проверяет, равен ли прогресс курса 100 (то есть курс завершён), и только в этом случае выполняет синхронизацию данных с AirTable.

Persisted query получит параметры из action hook stm_lms_progress_updated MasterStudy LMS (см. ниже) и извлечёт следующие данные:

  • Имя, email и URL пользователя
  • Название курса

Затем она подключится к AirTable API и создаст записи с предоставленными данными.

Для подключения к API необходимы персональные токены доступа для аутентификации. Обязательно создайте персональный токен доступа для вашей таблицы и назначьте ему scope data.records:write.

Далее создаём новую автоматизацию, указав action stm_lms_progress_updated MasterStudy в качестве триггера.

Этот action hook предоставляет следующие данные:

do_action( 'stm_lms_progress_updated', $course_id, $user_id, $progress );

Необходимо также предоставить JSON-словарь для динамических переменных, чтобы передать все три параметра из action как переменные в GraphQL-запрос:

{
  "courseId": 1,
  "userId": 2,
  "courseProgress": 3
}
Триггер автоматизации
Триггер автоматизации

Для action выбираем только что созданную persisted query Export MasterStudy LMS course data to AirTable и предоставляем JSON-словарь со статическими переменными GraphQL с данными из AirTable:

{
  "baseId": "{ your baseId }",
  "tableName": "{ your tableName }",
  "personalAccessToken": "{ your access token }"
}
Action автоматизации
Action автоматизации

Наконец, опубликуйте автоматизацию. Отныне каждый раз, когда пользователь завершает курс, таблица AirTable будет заполняться автоматически, как показано в видео выше:

Таблица в AirTable с данными LMS
Таблица в AirTable с данными LMS

Подпишитесь на нашу рассылку

Будьте в курсе всех обновлений Gato GraphQL.