You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PHP提取GrassBlade存储的SCORM测验答案并转为JSON格式?

解决方案

一、能否直接从SCORM文件提取用户测验数据?

不行。SCORM是内容打包格式,里面只包含课程/测验的结构、交互逻辑等静态内容,用户完成测验后的结果数据(得分、对错、完成状态等)不会存储在SCORM文件里,而是在用户完成学习后,通过xAPI协议同步到GrassBlade LRS(云端或本地WordPress表)中。所以必须从LRS或WordPress数据库中提取用户的测验结果。

二、可行的数据提取方案

1. 直接读取WordPress本地数据库表

GrassBlade把完成数据存在prefix_grassblade_completions表(prefix是你的WordPress数据库前缀,比如wp_),可以用PHP直接连接数据库查询数据:

<?php
// 数据库连接信息
$db_host = 'localhost';
$db_name = 'your_wordpress_db';
$db_user = 'db_username';
$db_pass = 'db_password';
$table_prefix = 'wp_'; // 替换成你的实际前缀

// 连接数据库
try {
    $pdo = new PDO("mysql:host=$db_host;dbname=$db_name;charset=utf8mb4", $db_user, $db_pass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 查询用户测验结果,根据需求调整字段和条件
    $stmt = $pdo->prepare("SELECT user_id, content_id, score, completion_status, completed_at FROM {$table_prefix}grassblade_completions WHERE type = 'quiz'");
    $stmt->execute();
    $results = $stmt->fetchAll(PDO::FETCH_ASSOC);

    // 输出JSON格式数据
    header('Content-Type: application/json');
    echo json_encode($results, JSON_PRETTY_PRINT);
} catch(PDOException $e) {
    die("数据库连接失败: " . $e->getMessage());
}
?>
  • 注意:要确保数据库账号有该表的只读权限,避免安全风险;如果需要关联LearnDash课程信息,可以联合查询learndash_user_activity等表。

2. 通过GrassBlade LRS API(带认证)调用数据

GrassBlade LRS遵循xAPI标准,支持Basic Auth认证,你可以在LRS后台找到API密钥和密码,然后用PHP CURL发起请求:

<?php
// GrassBlade LRS API信息
$lrs_url = 'https://your-grassblade-lrs-url/xapi/statements';
$api_key = 'your_lrs_api_key';
$api_secret = 'your_lrs_api_secret';

// 生成Basic Auth凭证
$auth = base64_encode("$api_key:$api_secret");

// 发起CURL请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $lrs_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Basic ' . $auth,
    'Content-Type: application/json',
    'Accept: application/json'
]);
// 可以添加查询参数过滤测验相关语句,比如筛选完成类评估活动
curl_setopt($ch, CURLOPT_URL, $lrs_url . '?filter[verb][id]=http://adlnet.gov/expapi/verbs/completed&filter[activityType][id]=http://adlnet.gov/expapi/activities/assessment');

$response = curl_exec($ch);
curl_close($ch);

// 解析并输出JSON结果
header('Content-Type: application/json');
echo $response;
?>
  • 调整查询参数可以精准过滤测验相关的xAPI语句,比如通过verb(完成、得分)或activityType(评估)来筛选;如果需要特定用户或课程的数据,添加对应的filter[agent][mbox]或filter[activity][id]参数即可。

三、关于zAPI插件端点

既然官方支持团队确认无法外部调用,建议放弃该方案,优先使用上述两种方法。

内容的提问来源于stack exchange,提问作者Philip Mc lennan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 02:42:51