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のデータとして CourseLesson の列があります。

LMSデータが入ったAirTableのテーブル
LMSデータが入ったAirTableのテーブル

以下のGraphQLクエリを含むパーシステッドクエリを作成し、タイトルを 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
            }
          }
        ]
      }
    }
  })
}

パーシステッドクエリはMasterStudy LMSのアクションフック stm_lms_lesson_passed(後述)からパラメーターを受け取り、関連するすべてのデータを取得します。

  • ユーザーの名前、メールアドレス、URL
  • レッスンのタイトル
  • コースのタイトル

その後、AirTable APIに接続し、提供されたデータでレコードを作成します。

APIに接続するには、認証のためにパーソナルアクセストークンが必要です。テーブル用のパーソナルアクセストークンを作成し、スコープ data.records:write を割り当ててください。

次に、新しいオートメーションを作成し、MasterStudyのアクション stm_lms_lesson_passed をトリガーとして設定します。

このアクションフックは以下のデータを提供します。

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

また、動的変数のJSONディクショナリを提供して、アクションの3つのパラメーターすべてをGraphQLクエリの変数として渡す必要があります。

{
  "userId": 1,
  "lessonId": 2,
  "courseId": 3
}
オートメーションのトリガー
オートメーションのトリガー

アクションとして、新しく作成したパーシステッドクエリ Export MasterStudy LMS lesson data to AirTable を選択し、AirTableのデータを含む静的GraphQL変数のJSONディクショナリを提供します。

{
  "baseId": "{ your baseId }",
  "tableName": "{ your tableName }",
  "personalAccessToken": "{ your access token }"
}
オートメーションのアクション
オートメーションのアクション

最後にオートメーションを公開します。これ以降、ユーザーがレッスンを完了するたびに、AirTableのテーブルが自動的に更新されます。


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

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