LogoLogo
Home
  • Introduction
  • Widget
    • Getting Started
    • Advanced Workflows
    • Theming
    • API Reference
    • Playground
  • dashboard
    • Course Dashboard Embed
  • Annoto Player
    • Getting Started
    • Advanced Workflows
    • API Reference
    • Playground
  • Kaltura Plugin
    • Getting Started
    • Setup the Plugin
    • Customise Annoto Widget configuration
    • Using Annoto Widget API
  • Kaltura Plugin (V2 Legacy)
    • Getting Started
    • Setup using Universal Studio (KMC)
    • Customise Annoto Widget configuration
    • Using Annoto Widget API
    • Setup using Javascript (Optional)
  • Wistia Plugin
    • Getting Started
    • Setup Annoto Plugin
    • Customise Widget Configuration
    • Using Widget API
  • Integrations
    • SSO (Single Sign On)
    • Webhook
Powered by GitBook
On this page
  • Annoto application container
  • Custom Widget Fab Button
  • Annoto Timeline
  • LTI Outcomes
  • LTI Outcomes Webhook Integration
  • LTI Resource Link Request AGS Claim Forwarding
  • Custom Video Player
  • Analytics Events
  • Stats Events
  • Video Benchmark Events
  • Interactions Stats Events

Was this helpful?

Export as PDF
  1. Widget

Advanced Workflows

PreviousGetting StartedNextTheming

Last updated 3 months ago

Was this helpful?

Annoto application container

Annoto widget is set as absolute meaning it doesn't influence the website layout. By default the application is contained inside a single DIV that is appended to the BODY.

If you require different behavior, you can put the following DIV anywhere in your DOM:

<div id="annoto-app"></div>

Once this DIV element is present in the DOM, when Annoto.boot() is called, it would be detected automatically by Annoto and serve as container for the Annoto app.

This is especially useful if BODY is not your main scrollable layout.

As a rule of thumb always place the container in the same scrollable element as your video.

Custom Widget Fab Button

When the Annoto widget is closed a small Fab button with comments icon is positioned next to the player to allow users to open the widget.

In some cases you might want to implement your own open/close UI and functionality.

To hide the default Fab button set the to true:

var config = {
    ux: {
      widget: {
        fabDisable: true
      }
    }
    // ...
  };

Annoto Timeline

Annoto Timeline allows users to spot points of interest. The timeline can be embedded in the player or it can be positioned below the player. Lets explore the timeline configuration options:

By default, the timeline will be positioned under the player:

timeline: {
    overlay: true
}

LTI Outcomes

If Annoto is integrated in a 3d party system that is taking the role of LTI Tool that processes the LTI messaging requests, Annoto still supports taking care of managing the outcomes reporting.

The above setup requires the below configurations.

Once setup, Annoto backend services will take care of always keeping the grades up to date, including retries (in case of LMS rate limiting).

LTI Outcomes Webhook Integration

LTI Resource Link Request AGS Claim Forwarding

During LtiResourceLinkRequest the LMS (Platform) provides the following claims:

https://purl.imsglobal.org/spec/lti-ags/claim/endpoint
https://purl.imsglobal.org/spec/lti/claim/resource_link
const annotoConfig: IConfig = {
  hooks: {
    mediaDetails: () => {
      return {
        outcomes: {
          clientId: "7f84098a3f85",
          integrationKey: 'U0N7wvTXdXTIx3A204tWg',
          lti: {
              userId: 'abc123',
              resourceLinkId: 'xyz321',
              claim: {
                  lineitems: 'https://example.lms.site/48c52e65-5fb9-4099-9b2e',
                  scope: [
                      'https://purl.imsglobal.org/spec/lti-ags/scope/lineitem',
                      'https://purl.imsglobal.org/spec/lti-ags/scope/lineitem.readonly',
                      'https://purl.imsglobal.org/spec/lti-ags/scope/score',
                      'https://purl.imsglobal.org/spec/lti-ags/scope/result.readonly',
                  ],
              },
          },
        },
        title: 'Quick Start',
        // id: '7245-asfa', // (optional) unique media identifier
        // description: 'Quick start for setup on custom platform', // (optional)
      };
    }
  },
  // rest of the widget configuration
};
export interface IOutcomes {
  /**
   * integration key provided by Annoto during setup
   * required if lti object is provided
   */
  integrationKey?: string;
  /**
   * LTI outcomes parameters provided by the platform during launch
   */
  lti?: ILtiAGSOutcome;
  /**
   * if set to true, outcome passback support is expected for the activity, and if not
   * present via this config (or other means), a warning to user will be shown
   * notifying of potential issue with passing back grades to 3d party platform (such as LMS)
   * @default true
   */
  isExpected?: boolean;
}

export interface ILtiAGSOutcome {
  /**
   * Tool deployment client_id
   * If provided will be forwarded in the Webhook outcome messages
   */
  clientId?: string;
  /**
   * The userId MUST be present and MUST be the same as the resource link LTI parameter 'user_id'.
   */
  userId: string;
  /**
   * id of the https://purl.imsglobal.org/spec/lti/claim/resource_link claim
   */
  resourceLinkId: string;
  /**
  * This claim is included in LTI messages if any of the
  * Assignment and Grade Services are accessible by the tool in the context of the LTI message.
  * https://www.imsglobal.org/spec/lti-ags/v2p0#assignment-and-grade-service-claim
  */
  claim: {
    /**
    * the endpoint URL for accessing the line item container for the current context.
    */
    lineitems: string;
    /**
     * when an LTI message is launching a resource associated to one and only one lineitem,
     * the claim must include the endpoint URL for accessing the associated line item;
     * in all other cases, this property must be either blank or not included in the claim.
     */
    lineitem?: string;
    /**
     * An array of scopes the tool may ask an access token for.
     */
    scope?: LtiAGSScopeType[];
  }
}

integrationKey is provided by Annoto during setup.

Custom Video Player

Annoto providers ends users, advanced interaction with video content. In order to do it Annoto requires access to video player API. Before Annoto can perform any action it must obtain the media source and the duration of the media.

We already support a variety of widely used player types, and constantly adding new ones. If you are using a custom player or player we don't support yet, you have 2 options:

Analytics Events

Annoto widget exposes api to subscribe to analytics events so that can be used in custom integrations, for example ingested and analyzed by custom BI systems.

The widget provides two types of events:

Stats Events

Discrete events of user actions such as submit a comment, vote, read a reply, click on timestamp, first video play, etc.

Annoto.on('stats_events', function (ev) {
    console.log(ev);
});

Video Benchmark Events

Video analytics events that provides details about the current and historical accumulated video consumption of the user.

Annoto.on('video_benchmark', function (ev) {
    console.log(ev);
});

Interactions Stats Events

Interactions events of user actions that provide details about interactions consumed and the results of the activity.

Annoto.on('cta_stats_events', function (ev) {
    console.log(ev);
});

To show/hide the widget, use the . For more details on how to obtain the api object please refer to .

If is true, the timeline will be positioned inside the controls of the player:

Annoto supports reporting grading to LMS (Learning Management System) using the .

For Backend Webhook setup please refer to for details.

Those claims need to be provided to the :

Implement a and set it in . Contributions are very welcome and appreciated :)

, we are happy to help.

To listen to the events use the familiar api.

For more details on the event callback please refer to the interface. For full list of event types, please refer to .

For more details on the event callback please refer to the definition.

For more details on the event callback please refer to the definition.

position
fabDisable Ux property
IAnnotoApi show() and hide() methods
Using the API
overlay
IMS LTI 1.3 AGS
Webhook integration
mediaDetails of the widget
PlayerAdaptorApi
Widget's player configuration
Contact us
Annoto.on()
AnnotoStatsEventCallback
StatsTypeEnum
AnnotoVideoBenchmarkCallback
AnnotoCtaStatsEventCallback