Intent
Need to create an unified deep linking interface for enabling Access to Content on Sunbird across different apps like Read Along,Games etc.
Note: Assumption of this specification is based on the apps being able to support these intents as part of their implementation.
Documentation is categorised into multiple sections:
WorkFlow
Vendor Registration of Apps to Sunbird
Global Vendor Registration API
Local Vendor Registration by Deep Linking
Technical Specification for third party apps
Param Data Supported
Summary Event Spec
API Documentation
Intent Handling
Approaches
Work Flow
Registration of External Apps
Sunbird Third Party App Interaction
Vendor registration of Apps to Sunbird
Global Vendor Registration API
Each Vendor can be registered as part of Global Configuration for Sunbird to have app links being enabled.
Code Block | ||
---|---|---|
| ||
{
identifier: "",
name: "",
logo: "",
appName: "",
packageId: "",
target: {
mimeType : [],
contentType : [],
.... // All content attributes
},
appDetails: {
organization: "",
id: "",
version: ""
},
vendorCode: "" // Internally assigned
} |
Vendor CRUD API (or) Form Configuration Supported.
Local Vendor Registration by Deep Linking
Enabling of Deep link in Sunbird for local registration restricted to device.
Device hears for deep links
to register vendor apps locally (Restricted to particular device).
Steps
Vendor app needs to call a deep link of Sunbird app.
Sunbird App as part of handling deep link will try to persist vendor information locally on app’s data.
Any subsequent invocation of intent from Sunbird will show globally registered apps for Sunbird along with locally registered apps in devices.
deeplink Url :
sunbird://register?name: "", logo: "", appName: "", packageId: "",target:”{}”,appDetails:”{}”
Parameter | DataType | Description |
---|---|---|
name (M) | String | Name of the vendor |
logo (M) | String | App logo Url |
appName (M) | String | App Name |
packageId (M) | String | PackageID of the app |
target (M) | String | Targeted content query |
appDetails (O) | String | App details |
extra (O) | String | Misceallaneous Information to be sent |
Approaches
Expand | ||
---|---|---|
| ||
Approach 1 : (Deeper Integration) |
Targeted Application need to fetch the data from platform. Understand the Content Metadata and play the content. Targeted Application need to respond back with Summary Data
Pros It can enable bazaar apps to index the content in their own environment. It could open up the Sunbird APIs for most of the bazaar players. Cons |
Tighter coupling for bazaar apps to be reliant on Sunbird APIs.
Necessary for bazaar apps to understand the content metadata. Could mean a development effort for these players
Any service disruptions,outage could spell trouble for these apps and also could potentially ending these apps taking aData to be sent might be huge Spec is rigid. If the spec changes there can be inconsistency between various version of both apps |
Expand | ||
---|---|---|
| ||
Approach 2 : (Lighter Integration) |
Intent provides basic information such as content do_id, context information & artifactUrl and mimeType. Bazaar Apps can launch the artifactUrl directly based on mimeType.
Pros |
Intent for bazaar apps. Need to develop a secure mechanism to serve only sun bird specific resources. Cons Data to be sent might be huge Spec is rigid. If the spec changes there can be inconsistency between various version of both apps |
Expand | ||
---|---|---|
|
Intent provides the basic information such as content URL, mimeType & user/session context.
|
|
|
Pros
Context Information Following are the contextual params passed to the reader app
|
Deep Link - URI & Data
Sample Deep Linking URI:dikshacontent://play?mimeType=<>resourceId=<param-value>&referrerPackageId=<param-value>…..
|
Technical Specification for Third Party Apps
Expand | |||
---|---|---|---|
| |||
|
resourceId
identifier of the resource to be served in bazaar apps
String
collectionId
CollectionID of textbook,course
|
batchId
|
contentCategory
|
artifactURL
|
telemetryContext
Hashed value of uid, sid
String
Data Sharing Table :
Params
Approach 1
Approach 2
Approach 3
resourceId
Yes
Yes
collectionId
Yes
Yes
referrerPackageId
Yes
Yes
Yes
batchId
Yes
mimeType
Yes
vendorCode
Yes
Yes
Yes
contentCategory
Yes
artifactURL
Yes
contentURL
Yes
telemetryContext
Yes
Yes
Yes
All the reader apps need to send summary data back to DIKSHA app via intent or deeplink.
SUMMARY Event Spec
Expand | |||||
---|---|---|---|---|---|
| |||||
https://github.com/sunbird-specs/Telemetry/blob/main/v3_event_details.md/#summary
All the reader apps need to send summary data back to Sunbird app via intent data. |
Expand | |||||||
---|---|---|---|---|---|---|---|
| |||||||
The third party apps should do a HTTP GET call on the contentUrl parameter sent via the intent data
Response Data Structure
For More Details on the content model refer Sunbird Documentation |
Expand | ||||
---|---|---|---|---|
| ||||
Intent Handling
|