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

Интеграции
Каждый раз, когда пользователь завершает курс в MasterStudy LMS, мы будем отправлять пользовательские данные в AirTable и создавать записи в указанной таблице.
В этом видео пользователь проходит два урока из курса LMS. Когда последний урок курса завершён, автоматизация Gato GraphQL создаёт запись в AirTable с необходимыми данными:
Таблица имеет столбцы Name, ProfileURL и Email с данными пользователя, а также Course из 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 }"
}
Наконец, опубликуйте автоматизацию. Отныне каждый раз, когда пользователь завершает курс, таблица AirTable будет заполняться автоматически, как показано в видео выше:
