2

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>
4

2 に答える 2

3

ライブラリを使用するためのアンドリューの提案に+1。取得している結果が得られる理由は、ライブラリがすべてのリクエストに適切に追加する「X-Experience-API-Version」ヘッダーがないためです。ヘッダーがないということは、LRS がリクエストを 0.9 バージョンのリクエストとして解釈していることを意味し、そのバージョンを使用してステートメントを格納していない限り、何も返されません (ステートメントはダウン コンバートされません)。

図書館がどこにあるか知っていることは知っていますが、SOの子孫のために:

http://rusticisoftware.github.io/TinCanJS/

また、これはステートメントの LRS の最初のページのみを返すことに注意してください。次のページを再帰的に取得するには、LRS によって返される「詳細」URL を処理する必要があります。TinCanJS は、それを行うための簡単な方法も提供します。

于 2014-06-09T18:08:58.353 に答える
0

TinCanJS ライブラリの使用をお勧めします。後でリンクを更新しますが、Google でリンクと手順を見つけることができるはずです。

于 2014-06-09T17:57:06.773 に答える