Gato GraphQL オートメーションデモ

MasterStudy LMSでコースを修了したユーザーをAirTableに自動登録する方法

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

Leonardo Losoviz
Leonardo Losoviz -
Logo
Image
Target Image
Target Image

インテグレーション

MasterStudy LMS のコースをユーザーが修了するたびに、カスタムデータをAirTableに送信し、指定したテーブルにレコードを作成します。

このビデオでは、ユーザーがLMSのコースから2つのレッスンを修了する様子を確認できます。コースの最後のレッスンが完了すると、Gato GraphQLのオートメーションが必要なデータとともに AirTable にレコードを作成します。

テーブルには、ユーザーのデータとして NameProfileURLEmail の列があり、LMSからの Course 列があります。

LMSデータを含むAirTableのテーブル
LMSデータを含むAirTableのテーブル

以下の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のテーブルが自動的に更新されます。上記のビデオで確認できる結果が得られます。

LMSデータを含むAirTableのテーブル
LMSデータを含むAirTableのテーブル

ニュースレターを購読する

Gato GraphQL のすべてのアップデートを把握しましょう。