Q: What if I need to send dynamic parameters to my AICC content?
A: If you're using Engine, you're in luck.
You will need to write a little bit of code. In your integration layer, you can do something like this:
public override void CustomizeRegistration(Registration reg, ExternalConfiguration externalConfig) { if (reg.Package != null) { if (reg.Package.LearningStandard.IsAICC()) { if (reg.Package.LearningObjects.Length > 0 && reg.Package.LearningObjects[0].Children.Length > 0) { reg.Package.LearningObjects[0].Children[0].Parameters = "&foo=bar"; } } } }
Here, we're first checking to see if the learning standard of the launched package is AICC. Then we're modifying the registration (basically, the tracked launch of AICC content) at launch by dynamically merging with the WEB_LAUNCH parameters from the Assignable Unit (.au) file that are used to construct the content URL.
You can add as many parameters as you want in the format of a query string. E.g., "&foo=bar&baz=ola".
If the original content would have been something like:
http://enginecustomer.com/courses/AICC%20Basic%20Run-time%20Calls/scormdriver/indexAPI.html?AICC_SID=53ad7d90-dfa5-4773-a5cd-c7dd854f3ccd&AICC_URL=http%3A//localhost/Engine-2013.2.x/ProcessAiccRequest.aspx
Then using the above code, it would be something like this:
http://enginecustomer.com/courses/AICC%20Basic%20Run-time%20Calls/scormdriver/indexAPI.html?foo=bar&AICC_SID=53ad7d90-dfa5-4773-a5cd-c7dd854f3ccd&AICC_URL=http%3A//localhost/Engine-2013.2.x/ProcessAiccRequest.aspx
Also, you have an ExternalConfiguration available for anything you need to do dynamically beyond just checking to make sure the learning standard is AICC.
I've thrown in some null checks that should protect against some real-world corner cases, but note that this is only sample code.