簡體   English   中英

從SCORM Cloud LRS檢索Tin Can API語句列表

[英]Retrieving a list of Tin Can API statements from SCORM Cloud LRS

我已經在我的LMS中添加了“錫罐”課程,並且我能夠成功上傳和回放該課程,以便將我的聲明寫入“初始應用領域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 Cloud時,我可以看到TCAPI查詢字符串,並且在此處輸入動詞或活動的URI時,它會進行適當過濾。

作為測試語句是否正確輸出的一種方法,我在視圖中也有以下內容,不確定是否這是獲取該語句的可讀版本的最佳方法,但是我在List中的每個語句都有此輸出

<p>@statement.actor.name @statement.verb.display.ToJObject().GetValue("und") '@statement.target.ToJObject(Model.Version)["definition"]["name"]["en-US"]'</p>

+1對Andrew使用圖書館的建議。 獲得結果的原因是因為缺少庫適當添加到所有請求中的“ X-Experience-API-Version”標頭。 缺少標頭意味着LRS會將請求解釋為0.9版本請求,除非您使用該版本存儲了語句,否則不會返回任何語句(語句不會下轉換)。

我知道您知道圖書館在哪里,但對於SO的后代:

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

還要注意,這只會返回LRS的第一頁語句,然后,您需要處理LRS返回的“更多” URL來遞歸地獲取下一頁。 TinCanJS也提供了一種簡單的方法。

我建議使用TinCanJS庫。 稍后我將通過鏈接進行更新,但是您應該可以在Google上找到它和說明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM