Specification

Version

The current version of the telemetry specification is 3. Version 3 is a complete rewrite of the specification where we have generalized the events in 17 generic event types to be able to capture all possible use-cases and not tied to any specific domain.

Version 3.1

The telemetry version has been updated to 3.1 on 06/10/2021 with the addition of new optional attribute platform under the pdata section of the event envelope/structure.

The version 3 spec has provision to capture producer information in pdata as follows:

pdata: {
    "id": "", // unique id assigned to that component. For ex: "sunbird.mobile" in case of a mobile app or "sunbird.desktop" incase of desktop
    "pid": "", // In case the component is distributed, then which instance of that component. For ex: "sunbird.mobile.contentplayer" incase of content player
    "ver": "" // version number of the build. For ex: "3.9.437"
}

However of late we have observed that there is increasing need to analyze the system/component usage by the underlying OS. For ex: Mobile usage distributed by android vs iOS is one example of it. Desktop usage segregated by Windows vs Ubuntu vs Mac is another example. To be able to support the need to analyze by the underlying platform we have introduced one more attribute platform under pdata as follows:

pdata: {
    "id": "", // unique id assigned to that component. For ex: "sunbird.mobile" in case of a mobile app or "sunbird.desktop" incase of desktop
    "pid": "", // In case the component is distributed, then which instance of that component. For ex: "sunbird.mobile.contentplayer" incase of content player
    "ver": "", // version number of the build. For ex: "3.9.437"
    "platform": "" // Underlying OS platform. For ex: "Android/iOS/Windows/Ubuntu/MacOS"
}

Telemetry V3 Event Structure

All events follow a common data structure, though the event data structure (“edata”) differs for each event. The complete data structure is as follows:

Note:

  • All events have the same structure with only difference in edata structures.

  • All events have unique event codes i.e., (IDs).

  • All events are as per platform schema

Events Specs

  • 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.

  • Audit - This method is used to log telemetry when an object is changed. This includes life-cycle changes as well

  • Error - This method is used to capture when users face an error

  • Heartbeat - This method is used to log telemetry for heartbeat event to denote that the process is running

  • 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.

  • Metrics - This method is used to log telemetry for service business metrics

  • Summary - This method is used to log telemetry summary event

  • 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

The "edata" structure of Start is as follows:

Example event data:

Impression

This API is used to log telemetry when users visit a specific page.

The "edata" structure of Start is as follows:

Example event data:

Interact

This API is used to log telemetry of user interactions on the page. For example, search, click, preview, move, resize, configure

The "edata" structure of Start is as follows:

Example event data:

Assess

This API is used to log telemetry of assessments that have occured when the user is viewing content

The "edata" structure of Start is as follows:

Example event data:

Response

This API is used to log telemetry of user response. For example; Responded to assessments.

The "edata" structure of Start is as follows:

Example event data:

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.

The "edata" structure of Start is as follows:

Example event data:

Feedback

This API is used to log telemetry of feedback provided by the user.

The "edata" structure of Start is as follows:

Example event data:

Share

This API is used to log telemetry when a user shares any content with other users.

The "edata" structure of Start is as follows:

Example event data:

Audit

This API is used to log telemetry when an object is changed. This includes life-cycle changes as well.

The "edata" structure of Start is as follows:

Example event data:

Error

This API is used to log telemetry of any error that has occurred when a user is viewing content or playing games.

The "edata" structure of Start is as follows:

Example event data:

Heartbeat

This API is used to log telemetry for heartbeat event to denote that the process is running.

The "edata" structure of Start is as follows:

Log

This API is used to log telemetry of generic log events. For example; API calls, service calls, app updates, etc.

The "edata" structure of Start is as follows:

Example event data:

This API is used to log telemetry when a user triggers a search for any content, item or asset

The "edata" structure of Start is as follows:

Example event data:

Metrics

This API is used to log telemetry for service business metrics (also accessible via health API).

The "edata" structure of Start is as follows:

Summary

This API is used to log telemetry summary event

The "edata" structure of Start is as follows:

Exdata

This API is used to log telemetry for external data, while playing content

The "edata" structure of Start is as follows:

Example event data:

End

This API is used to log telemetry while the user is closing or exiting the content or game

The "edata" structure of Start is as follows:

Example event data:

Last updated

Was this helpful?