Tin Can コースを LMS に追加しました。コースを正常にアップロードして再生できるので、ステートメントが Initial Application Realm LRS に書き込まれます。ここまでは順調ですね。
ここで、記述されたすべてのステートメントのリストを LRS から取得して、これらを反復処理し、サインインしているユーザーのコースの完了を確認できるようにしたいと考えています。私のステートメントは次のエンドポイントに書き込まれています。
https://cloud.scorm.com/tc/7QLMQA89WV/
.NET ライブラリと次のコードを使用してステートメントをクエリしようとしました。
//Initialize the TinCan Remote LRS for retrieving completion statistics
LRS = new RemoteLRS("https://cloud.scorm.com/tc/7QLMQA89WV/", "<username>", "<pw>");
Version = TinCan.TCAPIVersion.V101;
//Create the TinCan statement to query completed activities for the logged in user
var query = new StatementsQuery();
query.agent = new TinCan.Agent();
query.agent.mbox = "mailto:jpmcfeely@hsl-data.com";
query.verbId = new Uri("http://adlnet.gov/expapi/verbs/completed");
query.activityId = new Uri("http://tincanapi.com/GolfExample_TCAPI");
ただし、これは、使用された動詞またはアクティビティに関係なく、すべてのステートメントのリストを返します。SCORM クラウドを使用すると TCAPI クエリ文字列が表示され、動詞またはアクティビティの URI をここに入力すると適切にフィルタリングされるため、クエリ フィルターにバグがある可能性があります。
ステートメントが正しく出力されていることをテストする手段として、私は次のことも考えています。これがステートメントの人間が読めるバージョンを取得するための最良の方法であるかどうかはわかりませんが、リスト内の各ステートメントに対してこの出力があります
<p>@statement.actor.name @statement.verb.display.ToJObject().GetValue("und") '@statement.target.ToJObject(Model.Version)["definition"]["name"]["en-US"]'</p>