consuming_telemetry

Telemetry Exhaust APIs

The Sunbird telemetry services are made available through a daily exhaust, supported by Ekstep infra from multiple channels. It is common that, these channels will not have the data pipeline to process the telemetry data. Hence, telemetry are made available to channels.
Steps involved in consuming Data Exhaust:
  1. 1.
    [Automated] A User need to register using Register User API{:target="_blank"}. This API returns a license key, which needs to be used when requesting telemetry data. This creates an entry for the user in data_exhaust_users table.
  2. 2.
    [Manual] Access needs to be granted, manually, to this user to the dataset resource that they want to consume. This access is granted by making an entry, for corresponding user and resource, in data_exhaust_users_resources table.
  3. 3.
    [Automated] User can then use Datasets API{:target="_blank"} to download telemetry data. User has to pass the license key, got in Step 1, for authentication. Internally, Datasets API will invoke Authentication API{:target="_blank"} and Authorisation API{:target="_blank"} to check if the user has is valid and has access to the requested resource, if the checks pass, dataset is returned.
Note: Database schema of Data Exhaust is described here{:target="_blank"}.

Using channel ID and API key to request channel telemetry

Standard Telemetry Workflows

This section details Standard Telemetry Workflows for different access channels.

Mobile App Workflow

1
START(type: "app")
2
...| --> app events such as IMPRESSION, FEEDBACK, etc may happen
3
START(type: "session")
4
...
5
| --> IMPRESSION - For the pages that the user visits
6
| --> INTERACT --> one of the content is clicked
7
| --> START(type: "player") --> events generated by specific content
8
...|
9
...| --> in-content events such as ASSESS, INTERACT, IMPRESSION, LEVEL_SET etc.
10
...|
11
| --> END(type: "player")
12
| --> IMPRESSION - Returned back to mobile app for content player
13
...| --> app events such as IMPRESSION, INTERACT, etc. may happen
14
| --> INTERACT --> one of the content is clicked
15
| --> START(type: "player") --> events generated by specific content
16
...|
17
...| --> in-content events such as ASSESS, INTERACT, IMPRESSION, LEVEL_SET etc.
18
...|
19
| --> END(type: "player")
20
| --> IMPRESSION - Returned back to mobile app for content player
21
...| --> app events such as IMPRESSION, INTERACT, etc. may happen
22
END(type: "session")
23
...| --> app events such as APP_UPDATE, FEEDBACK, etc may happen
24
END(type: "app")
Copied!

Web Portal Workflow

1
AUDIT (object: user) --> (Optional if a user is created for the first time)
2
START(type: "session") --> User session starts
3
...
4
| --> IMPRESSION - For the pages that the user visits
5
| --> INTERACT - For the interactions on the page
6
// there is no explicit logout/timeout
Copied!

Content Editor Workflow

1
START (type: "session") - User logs in
2
...
3
| --> IMPRESSION (Portal) - User visits content creation page (cdata session)
4
| --> INTERACT (Portal) - User initiates content creation
5
| --> AUDIT (Platform) - User creates a new content
6
| --> START (type: "editor", mode: "content")
7
...
8
| --> INTERACT (Editor) - In editor, user is loading the asset browser
9
| --> SEARCH (Platform) - In AT, user is searching for assets (cdata session, search result id)
10
| --> PLUGIN_LIFECYCLE (Editor) - User selects the asset for content (which search result was used)
11
| --> PLUGIN_LIFECYCLE (Editor) - User removes the asset from content
12
| --> INTERACT (Editor) - User clicks save in AT
13
| --> ACCESS (Platform) - Platform save API is called
14
| --> INTERACT (Editor) - User clicks on submit to review
15
| --> AUDIT (object: Content, state: "Review", prevstate: "Draft") - Platform sends the content to review state
16
| --> END (type: "editor", mode: "content") - User closes the editor and goes back to portal
Copied!

Backend-services Workflow

1
AUDIT (object: Service, state: "Ready") --> State transition to READY
2
...| --> ACCESS events for API requests
3
ACCESS
4
LOG --> Log events in the context of the incoming request (by request correlation ID)
5
...
6
METRICS --> Health/business metrics (e.g. number of jobs executed)
7
AUDIT (object: Service, state: "Stopped") --> State transition to STOPPED
Copied!

DIAL Code Consumption Workflow

1
AUDIT (object: Service, state: "Ready") --> State transition to READY
2
...| --> ACCESS events for API requests
3
ACCESS
4
LOG --> Log events in the context of the incoming request (by request correlation ID)
5
--> SEARCH (Platform) - In AT, user is searching for assets (cdata session, search result id)
6
...
7
SCAN --> Health/business metrics (e.g. number of jobs executed)
8
| --> INTERACT --> one of the content is clicked
9
| --> START(type: "player") --> events generated by specific content
10
...|
11
...| --> in-content events such as ASSESS, INTERACT, IMPRESSION, LEVEL_SET etc.
12
...|
13
AUDIT (object: Service, state: "Stopped") --> State transition to STOPPED
Copied!
Last modified 9mo ago