Claro | Best Practices for xAPI

By Sean Putman (VP Learning and Development, Altair Engineering)

claro

In terms of xAPI support Claro offers a lot right out of the box.  Claro has the ability to assign statement generation to any object within a page using an Action.  Each page also generates its own statement without having to do anything other than set the output type for publishing.

Claro will output statements for the following interactions:

  • Pages
  • Actions on Objects
  • Multimedia Objects
  • Drag and Drop Interactions
  • Course Attempts
  • Quiz pass/fail
  • Questions Submission and Scoring

The verbs will map as follows:

  • Pages use the verb experienced when a page is viewed;
  • Objects in Pages will use the verb interacted on the object and create a statement with a verb that is selected for the target object.
  • Multimedia objects use the verbs started, played, paused and consumed and will be labeled as started, played, paused and ended. Multimedia also uses the activity type Media. The title of the statement will be the name of the multimedia file.
  • Drag and drop interactions uses the verb interacted. With activity type event. The display values are sent in as further context to describe the type of interaction as started dragging, dropped, dragged over, dragged out of.
  • Quizzes use the verb answered when a question is answered.
  • Courses use attempted when the course is started and when the course is completed with the quiz score.
  • Quizzes use passed when a quiz is passed and failed is generated when a quiz is failed.

Page Best Practices

Claro will create statements from all defined pages within the course automatically.  The pages will use the verb experienced and the page name will be used as the object.  Here is an example of the statement generated by the page:

Best Practice

Since the Object is defined by the page name, it is important to give all the pages in a course a logical name.

Rationale

If a logical name is not given, the statement will appear with the default name.

With a logical name the data will be much easier to read and analyze.  The statement for experiencing a page can help define the path a user took by telling you what page they are on.  Once you know the page, you can define what items they have interacted with on the page.  It is especially helpful if you have items that are common across pages, (i.e. Menu, Next button, Previous button, Home button, etc. ).

Objects within a Page

As stated in the overview, Claro offers the ability to generate statements from any object by use of an Action.  

screen1

Button to open content

 

The Actions in Claro are added to an object using the Send xAPI Statement option.

Inside the Action you can set the trigger that will generate the statement, which is seen in the image:

trigger

Triggers

In the case of our course here, we just used a mouse click on a button.  You can also link the actions to custom variables if desired.  A verb can be selected from the list:

verbs

Available Verbs

The type can be selected from the list:

type

Type

Other fields such as Label, Activity ID, Name, Description, Delay, and Conditions can also be entered.

The other properties will fill out the fields on the statement as shown in the JSON at the end of the article.  Two statements are generated from the object.  One that the objected has been interacted with, this out of the box.

interacted

A second statement is created for the target object using the verb and object that are user defined.

custom

As stated above in this course we only used the mouse click on a button.  Multimedia and Drag and Drop interactions automatically send statements as shown in the Overview if added to a course.

The parent context of all statements, including custom statements, is always the course activity. In a reuse model this ensures activities maintain unique activity context with each use as well as extends that report ability of the child activity everywhere it is used.

Best Practices

Enter a logical name into the Name field for the  xAPI Object.

When defining the verb, it is a good idea to check to see if there is a community of practice that has a set vocabulary and how to use the verbs.

If defining Activity ID it is a good practice to make sure you are being consistent across courses for activities that are reused.

Enter a logical description in the Description field when defining the Action.

Rationale

Logical names will make it easier to analyze the data after collecting the statements.

Making sure the verbs are used correctly with a community of practice, even though they are from a set list, means you are being consistent in your usage of the vocabulary.  There are a number of verbs in the list that could be interchanged so it is a good idea to have a consistent usage pattern.

If the same activity used in multiple courses, using a consistent Activity ID will allow for filtering to be done in the analytics by the ID.

A Logical description will help analysts and those viewing the statements to understand the statement and its context.

Quiz Best Practices

For quiz pages, the page name will use the question that is entered on the page.  The second statement will be the score of the answered question.  The verb for the page will be answered and the question will appear.  When a quiz is finished Claro produces a statement with either the verb passed or the verb failed, the course name, and the score received on the quiz.   

Best Practice

When creating the question page, be sure to give the page a meaningful name as with the other pages.

Rationale

When the statement is created for answering the question page, it will grab the name of the page for the object.

Publishing and Launching Claro Content

You can set the LRS endpoint prior to publishing from the Target menu option in the App menu.

If the course is launched from an LRS that does not provide the actor the user will automatically be prompted for actor information.

 

The statement will then appear as follows:

Note: The JSON Statements below were created using Grassblade which assigns the actor.

In the publishing window enter a Title (by default it will grab the course name) and a Description.  The Title will be used to generate the object for the course attempt statements.  The Description will appear in the JSON for the course.

The settings for output of statements can be found in the Learning Standard selection in the publish dialog.  In the Standard menu select the TinCan API 1.0 output.

Selection to generate xAPI statements

Selection to generate xAPI statements

The LRS Target can be selected here for the LRS(s) if defined.  Selecting “none” will use the default LRS info supplied by the system launching the course.

Identify the passing score for the course and any quiz questions.

Once the setup is complete the course is published and a .zip file is created.  

If you are using a compatible LMS or Grassblade xAPI Companion the zip file can be uploaded directly to the system.

Claro JSON Examples

Page

Sean Putman http://adlnet.gov/expapi/verbs/experienced ‘Introduction’

{
   "id": "c53b7736-67f0-4b4d-9f59-e2eeb55c206f",
   "timestamp": "2015-12-18T15:40:31.846Z",
   "actor": {
       "objectType": "Agent",
       "mbox": "mailto:sputman34@gmail.com",
       "name": "Sean Putman"
   },
   "verb": {
       "id": "http://adlnet.gov/expapi/verbs/experienced",
       "display": {
           "und": "experienced"
       }
   },
   "context": {
       "registration": "36fc1ee0-2849-4bb9-b697-71cd4cad1b6e",
       "contextActivities": {
           "parent": [
               {
                   "id": "http://try.clarolive.com//activities/dk-112060-TC",
                   "objectType": "Activity",
                   "definition": {
                       "name": {
                           "en-US": "xAPI Test"
                       },
                       "description": {
                           "en-US": ""
                       }
                   }
               }
           ]
       }
   },
   "object": {
       "id": "http://try.clarolive.com//activities/dk-112060-TC/51645",
       "objectType": "Activity",
       "definition": {
           "name": {
               "en-US": "Introduction"
           }
       }
   },
   "stored": "2015-12-18T15:40:27.628Z",
   "authority": {
       "account": {
           "homePage": "http://learnxapi.net/grassblade-lrs/xAPI/",
           "name": "15-557d7b8d7eda474"
       },
       "objectType": "Agent"
   }
}

Object Interaction

Sean Putman http://adlnet.gov/expapi/verbs/interacted ‘LRS’

{
   "id": "5c247474-b64a-4c1f-8df5-4e0345107e48",
   "timestamp": "2016-01-07T02:10:30.102Z",
   "actor": {
       "objectType": "Agent",
       "mbox": "mailto:sputman34@gmail.com",
       "name": "Sean Putman"
   },
   "verb": {
       "id": "http://adlnet.gov/expapi/verbs/interacted",
       "display": {
           "en-us": "clicked"
       }
   },
   "context": {
       "registration": "36fc1ee0-2849-4bb9-b697-71cd4cad1b6e",
       "contextActivities": {
           "parent": [
               {
                   "id": "http://demo.clarolive.com/activities/course/101496",
                   "objectType": "Activity",
                   "definition": {
                       "name": {
                           "en-US": "Test xAPI"
                       },
                       "description": {
                           "en-US": ""
                       }
                   }
               }
           ]
       }
   },
   "object": {
       "id": "http://demo.clarolive.com/activities/element/167505",
       "objectType": "Activity",
       "definition": {
           "type": "http://activitystrea.ms/schema/1.0/event",
           "name": {
               "en-US": "LRS"
           },
           "description": {
               "en-US": ""
           }
       }
   },
   "stored": "2016-01-07T02:10:18.907Z",
   "authority": {
       "account": {
           "homePage": "http://learnxapi.net/grassblade-lrs/xAPI/",
           "name": "15-557d7b8d7eda474"
       },
       "objectType": "Agent"
   }
}

Quiz Question

Sean Putman http://adlnet.gov/expapi/verbs/answered ‘You can connect to more than one LRS.’

{
   "id": "b629c8c9-c569-4543-be7b-7cb5f322dd82",
   "timestamp": "2015-12-18T15:41:45.855Z",
   "actor": {
       "objectType": "Agent",
       "mbox": "mailto:sputman34@gmail.com",
       "name": "Sean Putman"
   },
   "verb": {
       "id": "http://adlnet.gov/expapi/verbs/answered",
       "display": {
           "und": "answered"
       }
   },
   "result": {
       "success": true,
       "response": "true"
   },
   "context": {
       "registration": "36fc1ee0-2849-4bb9-b697-71cd4cad1b6e",
       "contextActivities": {
           "parent": [
               {
                   "id": "http://try.clarolive.com//activities/dk-112060-TC",
                   "objectType": "Activity",
                   "definition": {
                       "name": {
                           "en-US": "xAPI Test"
                       },
                       "description": {
                           "en-US": ""
                       }
                   }
               }
           ],
           "grouping": [
               {
                   "id": "http://try.clarolive.com//activities/dk-112060-TC-undefined",
                   "objectType": "Activity"
               }
           ]
       }
   },
   "object": {
       "id": "http://try.clarolive.com//activities/dk-112060-TC-503670",
       "objectType": "Activity",
       "definition": {
           "type": "http://adlnet.gov/expapi/activities/cmi.interaction",
           "description": {
               "en-US": "You can connect to more than one LRS."
           },
           "interactionType": "true-false",
           "correctResponsesPattern": [
               "true"
           ]
       }
   },
   "stored": "2015-12-18T15:41:41.160Z",
   "authority": {
       "account": {
           "homePage": "http://learnxapi.net/grassblade-lrs/xAPI/",
           "name": "15-557d7b8d7eda474"
       },
       "objectType": "Agent"
   }
}

Target Object

Sean Putman viewed ‘Lightbox’

{
   "id": "b440630a-82c5-4239-8e36-d819dda0756b",
   "timestamp": "2016-01-07T02:10:29.575Z",
   "actor": {
       "objectType": "Agent",
       "mbox": "mailto:sputman34@gmail.com",
       "name": "Sean Putman"
   },
   "verb": {
       "id": "http://id.tincanapi.com/verb/viewed",
       "display": {
           "en-US": "viewed"
       }
   },
   "context": {
       "registration": "36fc1ee0-2849-4bb9-b697-71cd4cad1b6e",
       "contextActivities": {
           "parent": [
               {
                   "id": "http://demo.clarolive.com/activities/course/101496",
                   "objectType": "Activity",
                   "definition": {
                       "name": {
                           "en-US": "Test xAPI"
                       },
                       "description": {
                           "en-US": ""
                       }
                   }
               }
           ]
       }
   },
   "object": {
       "id": 124,
       "objectType": "Activity",
       "definition": {
           "type": "http://activitystrea.ms/schema/1.0/image",
           "name": {
               "en-US": "Lightbox"
           },
           "description": {
               "en-US": "Viewed the lightbox image"
           }
       }
   },
   "stored": "2016-01-07T02:10:18.387Z",
   "authority": {
       "account": {
           "homePage": "http://learnxapi.net/grassblade-lrs/xAPI/",
           "name": "15-557d7b8d7eda474"
       },
       "objectType": "Agent"
   }
}

Course Start

Sean Putman http://adlnet.gov/expapi/verbs/attempted ‘xAPI Test’

{
   "id": "61a32bcf-054e-430d-b963-44286e828a16",
   "timestamp": "2015-12-18T15:40:26.692Z",
   "actor": {
       "objectType": "Agent",
       "mbox": "mailto:sputman34@gmail.com",
       "name": "Sean Putman"
   },
   "verb": {
       "id": "http://adlnet.gov/expapi/verbs/attempted",
       "display": {
           "und": "attempted"
       }
   },
   "context": {
       "registration": "36fc1ee0-2849-4bb9-b697-71cd4cad1b6e"
   },
   "object": {
       "id": "http://try.clarolive.com//activities/dk-112060-TC",
       "objectType": "Activity",
       "definition": {
           "name": {
               "en-US": "xAPI Test"
           },
           "description": {
               "en-US": ""
           }
       }
   },
   "stored": "2015-12-18T15:40:22.56Z",
   "authority": {
       "account": {
           "homePage": "http://learnxapi.net/grassblade-lrs/xAPI/",
           "name": "15-557d7b8d7eda474"
       },
       "objectType": "Agent"
   }
}

Pass/Fail

Sean Putman http://adlnet.gov/expapi/verbs/passed ‘xAPI Test’ with score 100

{
   "id": "43417364-f55a-4bcd-8c69-b3f226cc2129",
   "timestamp": "2015-12-18T15:41:45.855Z",
   "actor": {
       "objectType": "Agent",
       "mbox": "mailto:sputman34@gmail.com",
       "name": "Sean Putman"
   },
   "verb": {
       "id": "http://adlnet.gov/expapi/verbs/passed",
       "display": {
           "und": "passed"
       }
   },
   "result": {
       "success": true,
       "duration": "PT1M19.16S",
       "score": {
           "raw": 100,
           "min": 0,
           "max": 100
       }
   },
   "context": {
       "registration": "36fc1ee0-2849-4bb9-b697-71cd4cad1b6e"
   },
   "object": {
       "id": "http://try.clarolive.com//activities/dk-112060-TC",
       "objectType": "Activity",
       "definition": {
           "name": {
               "en-US": "xAPI Test"
           },
           "description": {
               "en-US": ""
           }
       }
   },
   "stored": "2015-12-18T15:41:41.160Z",
   "authority": {
       "account": {
           "homePage": "http://learnxapi.net/grassblade-lrs/xAPI/",
           "name": "15-557d7b8d7eda474"
       },
       "objectType": "Agent"
   }
}

SEAN PUTMAN (VP, Learning and Development, Altair Engineering)

DSC_4801b-3 Sean Putman, the Vice President of Learning Development for Altair Engineering and the Owner of Intellectus Learning, has been an instructor, instructional designer, and developer for over 15 years. He has spent his career designing and developing training programs, both instructor-led and online, for many different industries.  Sean has also spent the last few years focusing on the use and deployment of the Experience API and its effect on learning interventions.  Sean has spoken at many industry conferences on xAPI and related topics.

2 Comments…

  1. John Menken says:

    Hi Sean,
    Thank you for this. I gather from this article and your previous one on Captivate 9 that Claro right now is further along the line with sending statements than Captivate 9. Agreed?

    • Sean Putman says:

      John,

      i think that is a fair assessment. Claro certainly gives you more flexibility when it comes to statement generation. I believe it will also give more options on the analytics side of things as well to parse data.

Speak Your Mind

*