Gato GraphQL 自动化演示

如何将在MasterStudy LMS完成课程的用户自动注册到AirTable

每当WordPress站点上有用户完成MasterStudy LMS的课程时,将用户和课程的自定义数据发送到AirTable,并在指定表格中创建记录。

Leonardo Losoviz
Leonardo Losoviz -
Logo
Image
Target Image
Target Image

每当用户完成 MasterStudy LMS 的课程时,我们将把自定义数据发送到AirTable,并在指定表格中创建记录。

在这段视频中,用户完成了LMS课程中的两个课时。当课程的最后一个课时完成后,Gato GraphQL的自动化功能将携带所需数据在 AirTable 中创建一条记录:

该表格包含来自用户数据的 NameProfileURLEmail 列,以及来自LMS的 Course 列。

包含LMS数据的AirTable表格
包含LMS数据的AirTable表格

创建一个持久化 query,包含以下GraphQL query,并将其命名为 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的数据同步。

持久化 query 将从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字典,以便将动作的三个参数作为变量传递给GraphQL query:

{
  "courseId": 1,
  "userId": 2,
  "courseProgress": 3
}
自动化触发器
自动化触发器

对于动作,我们选择新创建的持久化 query 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 的所有更新。