Telemetry Event Details
Contribution Guidelines Edit | Report
Contents[hide] |
V3 Event Details
Every API method has an associated event. The following API methods log details of the associated telemetry event.
-
Start - This method initializes capture of telemetric data associated to the start of user action
-
Impression - This method is used to capture telemetry for user visits to a specific page.
-
Interact - This method is used to capture user interactions on a page. For example, search, click, preview, move, resize, configure
-
Assess - This method is used to capture user assessments that happen while playing content.
-
Response - This method is used to capture user responses. For example; response to a poll, calendar event or a question.
-
Interrupt - This method is used to capture interrupts triggered during user activity. For example; mobile app sent to background, call on the mobile, etc.
-
Feedback - This method is used to capture user feedback
-
Share - This method is used to capture everything associated with sharing. For example; Share content, telemetry data, link, file etc.
-
Error - This method is used to capture when users face an error
-
Log - This method is used to capture generic logging of events. For example; capturing logs for API calls, service calls, app updates etc.
-
Search - This method is used to capture the search state i.e. when search is triggered for content, item, assets etc.
-
Exdata - This method is used as a generic wrapper event to capture encrypted or serialized data
-
End - This method is used to capture closure after all the activities are completed
Start
This API is used to log telemetry when users view content or initiate game play
start: function(config, contentId, contentVer, data) { }
Request Arguments:
{ "config": Object, //Config object "contentId": String, //Required. Id of the content "contentVer": String, //Required. Version of the content. Defaults to "1.0" "data": { // Required. event data "type": String, //Required. app, session, editor, player, workflow, assessment "mode": "", //Required. mode of preview: preview, edit or play "stageid": "" //Required. stage id where the play has been initiated } }
Impression
This API is used to log telemetry when users visit a specific page.
impression: function(data) { }
Request Arguments:
data - Object //Required { "type": String, //Required. Impression type (list, detail, view, edit, workflow, search) "subtype": String, //Optional. Additional subtype. "Paginate", "Scroll" "pageid": String, //Required. Unique page id "itype": "", // type of interaction - SWIPE, SCRUB (fast forward using page thumbnails) or AUTO "stageto": "" // game level, stage of page id to which the navigation was done }
Interact
This API is used to log telemetry of user interactions on the page. For example, search, click, preview, move, resize, configure
interact: function(data) { }
Request Arguments:
data - Object //Required { "type": "", // Required. Type of interaction TOUCH,DRAG,DROP,PINCH,ZOOM,SHAKE,ROTATE,SPEAK,LISTEN,WRITE,DRAW,START,ENDCHOOSE,ACTIVATE,SHOW,HIDE,SCROLL,HEARTBEAT,OTHER "subtype": "", // Optional. Additional types for a global type. For ex: for an audio the type is LISTEN and thesubtype can be one of PLAY,PAUSE,STOP,RESUME,END "id": "", // Required. Resource (button, screen, page, etc) id on which the interaction happened - use systemidentifiers when reporting device events "pageid": "", // Optional. Stage or page id on which the event happened "extra": { // Optional. Extra attributes for an interaction "pos": [{"x":,"y":,"z":}], // Array of positional attributes. For ex: Drag and Drop has two positional attributes. One where the drag has started and the drop point "values": [], // Array of values, e.g. for timestamp of audio interactions "tid": "", // When interaction is between multiple resources, (e.g. drag and drop) - target resource id "uri": "" // Unique external resource identifier if any (for recorded voice, image, etc.) } }
Assess
This API is used to log telemetry of assessments that have occured when the user is viewing content
assess: function(data) { }
Request Arguments:
data - Object //Required { "item": QUESTION, // Required. Question Data "pass": "", // Required. Yes, No. This is case-sensitive. default value: No. "score": , // Required. Evaluated score (Integer or decimal) on answer(between 0 to 1), default is 1 if pass=YES or 0 if pass=NO. "resvalues": [{"id":"value"}], // Required. Array of key-value pairs that represent child answer (result of this assessment) "duration": // Required. time taken (decimal number) for this assessment in seconds } QUESTION = { "id": "", // unique assessment question id. its an required property. "maxscore", // user defined score to this assessment/question. "exlength": , // expected time (decimal number) in seconds that ideally child should take "params": [ // Array of parameter tuples {"id":"value"} // for ex: if var1 is substituted with 5 apples the parameter is {"var1":"5"} ], "uri": "", // Unique external resource identifier if any (for recorded voice, image, etc.) "desc": "short description", "title": "title", "mmc": [], // User defined missing micros concepts "mc": [] // micro concepts list }
Response
This API is used to log telemetry of user response. For example; Responded to assessments.
response: function(data) { }
Request Arguments:
data - Object //Required { "target": TARGET, // Required. Target of the response "qid": "", // Required. Unique assessment/question id "type": "", // Required. Type of response. CHOOSE, DRAG, SELECT, MATCH, INPUT, SPEAK, WRITE "values": [{"key":"value"}] // Required. Array of response tuples. For ex: if lhs option1 is matched with rhs optionN - [{"lhs":"option1"}, {"rhs":"optionN"}] } TARGET = { "id": "", // Required. unique id for the target "ver": "", // Required. version of the target "type": "", // Required. Type of the target "parent": { "id": "", // Optional. parent id of the object "type": "" // Optional. parent type of the object. Required if parentid is present. } }
Interrupt
This API is used to log telemetry for any interruptions that have occurred when a user is viewing content or playing games. For example; screen lock, incoming call, etc.
interrupt: function(data) { }
Request Arguments:
data - Object //Required { "type": "", // Required. Type of interuption "pageid": "", // Optional. Current Stage/Page unique id on which interuption occured "eventid": "" // Optional. unique event ID }
Feedback
This API is used to log telemetry of feedback provided by the user.
// To log content start/play event feedback: function(data) { }
Request Arguments:
data - Object //Required { "contentId": "", // Required. Id of the content "rating": 3, // Optional. Numeric score (+1 for like, -1 for dislike, or 4.5 stars given in a rating) "comments": "User entered feedback" // Optional. Text feedback (if any) }
Share
This API is used to log telemetry when a user shares any content with other users.
// To log content start/play event share: function(data) { }
Request Arguments:
data - Object //Required { "dir": "", // In/Out "type": "", // File/Link/Message "items": [{ // Required. array of items shared "obj": { "id": "", "type": "", "ver": "" }, "params": [ {"key": "value"} ], "origin": { // Origin of the share file/link/content "id": "", // Origin id "type": "" // Origin type }, "to": { "id": "", "type": "" } }] }
Audit
This API is used to log telemetry when an object is changed. This includes life-cycle changes as well.
audit: function(data) { }
Request Arguments:
data - Object //Required { "edata": { "props": [""], // Updated properties "state": "", // Optional. Current state "prevstate": "" // Optional. Previous state } }
Error
This API is used to log telemetry of any error that has occurred when a user is viewing content or playing games.
error: function(error) { }
Request Arguments:
error - Object //Required { "err": "", // Required. Error code "errtype": "", // Required. Error type classification - "SYSTEM", "MOBILEAPP", "CONTENT" "stacktrace": "", // Required. Detailed error data/stack trace }
Heartbeat
This API is used to log telemetry for heartbeat event to denote that the process is running.
heartbeat: function(data) { }
Request Arguments:
data - Object //Required { { "edata": { } }
Log
This API is used to log telemetry of generic log events. For example; API calls, service calls, app updates, etc.
log: function(data) { }
Request Arguments:
data - Object //Required { "type": "", // Required. Type of log (system, process, api_access, api_call, job, app_update etc) "level": "", // Required. Level of the log. TRACE, DEBUG, INFO, WARN, ERROR, FATAL "message": "", // Required. Log message "params": [{"key":"value"}] // Optional. Additional params in the log message }
Search
This API is used to log telemetry when a user triggers a search for any content, item or asset
search: function(data) { }
Request Arguments:
data - Object - Required { "type": "", // Required. content, assessment, asset "query": "", // Required. Search query string "filters": {}, // Optional. Additional filters "sort": {}, // Optional. Additional sort parameters "correlationid": "", // Optional. Server generated correlation id (for mobile app's telemetry) "size": 333, // Required. Number of search results "topn": [{}] // Required. top N (configurable) results with their score }
Metrics
This API is used to log telemetry for service business metrics (also accessible via health API).
metrics: function(data) { }
Request Arguments:
data - Object - Required { "edata": { "metric1": Int, "metric2": Int /// more metrics, each is a key value } }
Summary
This API is used to log telemetry summary event
summary: function(data) { }
Request Arguments:
data - Object - Required { "edata": { "type": "", // Required. Type of summary. Free text. "session", "app", "tool" etc "mode": "", // Optional. "starttime": Long, // Required. Epoch Timestamp of app start. Retrieved from first event. "endtime": Long, // Required. Epoch Timestamp of app end. Retrieved from last event. "timespent": Double, // Required. Total time spent by visitor on app in seconds excluding idle time. "pageviews": Long, // Required. Total page views per session(count of CP_IMPRESSION) "interactions": Long, // Required. Count of interact events "envsummary": [{ // Optional "env": String, // High level env within the app (content, domain, resources, community) "timespent": Double, // Time spent per env "visits": Long // count of times the environment has been visited }], "eventssummary": [{ // Optional "id": String, // event id such as CE_START, CE_END, CP_INTERACT etc. "count": Long // Count of events. }], "pagesummary": [{ // Optional "id": String, // Page id "type": String, // type of page - view/edit "env": String, // env of page "timespent": Double, // Time taken per page "visits": Long // Number of times each page was visited }] } }
Exdata
This API is used to log telemetry for external data, while playing content
exdata: function(data) { }
Request Arguments:
data - Object - Required { type - Free flowing text. For ex: partnerdata, xapi etc .... Serialized data (can be either encrypted/encoded/stringified) }
End
This API is used to log telemetry while the user is closing or exiting the content or game
end: function(data) { }
Request Arguments:
data - Object //Required { "contentId": "", // Required. Id of the content "type": , // Required. app, session, editor, player, workflow, assessment "duration": , // Required. Total duration from start to end in seconds "pageid": "", // Optional. Page/Stage id where the end has happened. "summary": [{"key":"value"}] // Optional. Summary of the actions done between start and end. For ex: "progress" for player session, "nodesModified" for collection editor }