MasterStudy LMSでコースを修了したユーザーをAirTableに自動登録する方法
WordPressサイトでMasterStudy LMSのコースを修了したユーザーが発生するたびに、ユーザーとコースに関するカスタムデータをAirTableに送信し、指定したテーブルにレコードを作成します。

インテグレーション
MasterStudy LMS のコースをユーザーが修了するたびに、カスタムデータをAirTableに送信し、指定したテーブルにレコードを作成します。
このビデオでは、ユーザーがLMSのコースから2つのレッスンを修了する様子を確認できます。コースの最後のレッスンが完了すると、Gato GraphQLのオートメーションが必要なデータとともに AirTable にレコードを作成します。
テーブルには、ユーザーのデータとして Name、ProfileURL、Email の列があり、LMSからの Course 列があります。

以下の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
}
}
]
}
}
})
}クエリ IsCourseFinished がコースの進捗が 100(つまりコースが修了済み)かどうかを確認し、その場合にのみAirTableへのデータ同期を実行する点に注目してください。
パーシステッドクエリは、MasterStudy LMSのアクションフック stm_lms_progress_updated(後述)からパラメーターを受け取り、以下のデータを取得します。
- ユーザーの名前、メールアドレス、URL
- コースのタイトル
その後、AirTable API に接続し、提供されたデータでレコードを作成します。
APIに接続するには、認証のためにパーソナルアクセストークンが必要です。テーブル用のパーソナルアクセストークンを作成し、スコープ data.records:write を割り当ててください。
次に、新しいオートメーションを作成し、MasterStudyのアクション stm_lms_progress_updated をトリガーとして設定します。
このアクションフックは以下のデータを提供します。
do_action( 'stm_lms_progress_updated', $course_id, $user_id, $progress );また、動的変数用のJSONディクショナリも指定する必要があります。アクションの3つのパラメーターをGraphQLクエリの変数として渡すためです。
{
"courseId": 1,
"userId": 2,
"courseProgress": 3
}
アクションとして、新しく作成したパーシステッドクエリ Export MasterStudy LMS course data to AirTable を選択し、AirTableのデータを含む静的なGraphQL変数のJSONディクショナリを指定します。
{
"baseId": "{ your baseId }",
"tableName": "{ your tableName }",
"personalAccessToken": "{ your access token }"
}
最後にオートメーションを公開します。これ以降、ユーザーがコースを修了するたびに、AirTableのテーブルが自動的に更新されます。上記のビデオで確認できる結果が得られます。
