# Customizations

## Configure variable substitutions for User ID and Course ID

{% hint style="info" %}
Course ID is used to uniquely identify the Canvas course.

User ID is used to uniquely identify the Canvas users.

Please refer to [Canvas LTI variable substitution documentation](https://canvas.instructure.com/doc/api/file.tools_variable_substitutions.html) to learn more.
{% endhint %}

By default Annoto uses `$Canvas.course.id` for course and `$Canvas.user.id` for user. In some cases it is required to use different values as unique identifiers for course and user.&#x20;

The most common use case is if Kaltura KAF integration is used alongside Annoto LTI on the same Canvas LMS. For seamless experiance, Annoto LTI setup and Kaltura KAF setup should use the same subsitution variables for identifying courses and users.

{% hint style="info" %}
Kaltura KAF in the LMS is using [LTI 1.3 as integration method](https://knowledge.kaltura.com/help/kaltura-video-app-for-canvas-deployment-guide-lti-13) similar to Annoto LTI 1.3
{% endhint %}

{% hint style="warning" %}
If Kaltura KAF(LTI) course ID substitution variable does not match Annoto LTI, two duplicate courses would be created in Annoto platform with same name, one for Kaltura KAF actvities and another for Annoto LTI activities.

If Kaltura KAF(LTI) user ID subsitution variable does not match Annoto LTI, two duplicate users would be created in Annoto platform with same name.

This leads to confusion and may lead to variaous access and analytics issues.
{% endhint %}

### Prerequisites

* Admin access to Canvas account
* LTI 1.3 deployment of Annoto (Not Legacy)

### Step by Step guide

{% hint style="danger" %}
It is highly advisable to coordinate any changes to substitution variables with the Annoto team, **prior** to making any changes.

Changes to those settings will effectively modify the course/user identifiers, for live courses this will cause duplicates and data corruption.
{% endhint %}

{% hint style="warning" %}
If the goal of making this change is to match the Kaltura KAF, do not relly on the mentioned defaults below.

Check with your Kaltura contact to validate what [actual settings](https://knowledge.kaltura.com/help/kaltura-video-app-for-canvas-deployment-guide-lti-13#step-1-enable-lti-1-3) are made to the [hosted module](https://knowledge.kaltura.com/help/hosted) of the Kaltura KAF, and that they match the [KAF LTI developer key additional settings](https://knowledge.kaltura.com/help/kaltura-video-app-for-canvas-deployment-guide-lti-13#step-5-confirm-the-values-in-the-lti-developer-key-additional-settings).
{% endhint %}

{% hint style="success" %}
Why did Annoto choose `$Canvas.user.id` as the default instead of what [Kaltura is using](https://knowledge.kaltura.com/help/kaltura-video-app-for-canvas-deployment-guide-lti-13#step-8-configure-the-kaltura-user-id-value) `$Canvas.user.loginId` .

As per [Canvas documentation](https://canvas.instructure.com/doc/api/file.tools_variable_substitutions.html) the `$Canvas.user.id` we are using by default is a unique user identifier, is bound to the user account and is the best option to uniquely identify users in the Canvas LMS.

On the other hand `$Canvas.user.loginId` which is used by Kaltura is "Username/Login ID for the primary pseudonym for the user for the account" which in some cases can be an email. The value of loginId can be changed by the user itselft, effectively changing they identification if used.\
Annoto is a comprehansive interactivity and assessment platform, and unique and reliable user identification is required.\
**Annoto's best practice recomendation is to keep Annoto defaults, and change Kaltura KAF subsitution variables instead.**
{% endhint %}

1. Determine the required Canvas substution parameters to be used as course ID and user ID (Canvas has support for various ids). \
   To determine the values used by the Kaltura KAF, please refer to [Kaltura video app for Canvas deployment guide](https://knowledge.kaltura.com/help/kaltura-video-app-for-canvas-deployment-guide-lti-13#step-5-confirm-the-values-in-the-lti-developer-key-additional-settings).
2. Find the [Annoto LTI developer key](/setup-guides/canvas/deployment-guide.md#step-1-create-lti-developer-key) in Canvas Admin -> Developer Keys and click on Edit button. ![](/files/a3FSccxlnZxihjbtqrRO)
3. Scroll down and expand the Additional Settings dropdown to access the Custom Fields:

   <figure><img src="/files/SPZS12D81qwxUFWOwUZg" alt=""><figcaption></figcaption></figure>
4. Replace existing or add new fields as required (the defaults might be missing if the deployment was done long time ago):
   1. `nn_sub_course_id=$Canvas.course.id`  - in most cases no change is required for the defaults as it maps to the Canvas course ID as seen in the browser URL.
   2. `nn_sub_user_id=$Canvas.user.id` - [Kaltura uses a different value by default](https://knowledge.kaltura.com/help/kaltura-video-app-for-canvas-deployment-guide-lti-13#step-8-configure-the-kaltura-user-id-value), so to match Kaltura deployment this value can be changed to: `nn_sub_user_id=$Canvas.user.loginId`
5. **Inform the Annoto team about this change.** For valid setup, Annoto team would need to update substitution parameters in the Annoto Admin dashboard LTI integration to match the new value:

   <figure><img src="/files/dKQ3pSGCPPLTWs9tNYcv" alt=""><figcaption></figcaption></figure>

## Hide the Annoto Dashboard Link by Default for all the Courses

Using LTI 1.3 in Canvas, administrators have the option to hide the Annoto Dashboard link from course navigation by default. This means that the link will not appear for instructors unless they choose to enable it themselves.&#x20;

### Prerequisites&#x20;

* Admin access to Canvas account
* LTI 1.3 deployment of Annoto (Not Legacy)

### Step by Step interactive guide

{% @guidejar/embed guideId="de2af80c-3835-4e39-9b19-fccf4882b885" type="1" controls="null" url="<https://www.guidejar.com/guides/de2af80c-3835-4e39-9b19-fccf4882b885?utm_source=gitbook&utm_medium=iframely>" fullWidth="false" %}

<br>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.annoto.net/setup-guides/canvas/customizations.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
