PHPackages                             oat-sa/extension-tao-ltideliveryprovider - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. oat-sa/extension-tao-ltideliveryprovider

ActiveTao-extension[Utility &amp; Helpers](/categories/utility)

oat-sa/extension-tao-ltideliveryprovider
========================================

extension to manage LTI delivery provider for TAO

v14.0.0(2mo ago)382.7k↑83.3%3[2 PRs](https://github.com/oat-sa/extension-tao-ltideliveryprovider/pulls)3GPL-2.0-onlyPHPCI failing

Since Sep 18Pushed 2mo ago42 watchersCompare

[ Source](https://github.com/oat-sa/extension-tao-ltideliveryprovider)[ Packagist](https://packagist.org/packages/oat-sa/extension-tao-ltideliveryprovider)[ Docs](http://www.taotesting.com)[ RSS](/packages/oat-sa-extension-tao-ltideliveryprovider/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (18)Versions (236)Used By (3)

TAO *ltiDeliveryProvider* extension
===================================

[](#tao-ltideliveryprovider-extension)

[![TAO Logo](https://github.com/oat-sa/taohub-developer-guide/raw/master/resources/tao-logo.png)](https://github.com/oat-sa/taohub-developer-guide/raw/master/resources/tao-logo.png)

[![GitHub](https://camo.githubusercontent.com/3ccdca46a3351d38662c7d2336ca3a4f2e9f0a1c44b8d6e04154e7174b2bf0dd/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6f61742d73612f657874656e73696f6e2d74616f2d6c746964656c697665727970726f76696465722e737667)](https://camo.githubusercontent.com/3ccdca46a3351d38662c7d2336ca3a4f2e9f0a1c44b8d6e04154e7174b2bf0dd/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6f61742d73612f657874656e73696f6e2d74616f2d6c746964656c697665727970726f76696465722e737667)[![GitHub release](https://camo.githubusercontent.com/0c4166370355391f5dcbdce65e855c1a29d40266a59de097dbd3f77a16403901/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f6f61742d73612f657874656e73696f6e2d74616f2d6c746964656c697665727970726f76696465722e737667)](https://camo.githubusercontent.com/0c4166370355391f5dcbdce65e855c1a29d40266a59de097dbd3f77a16403901/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f6f61742d73612f657874656e73696f6e2d74616f2d6c746964656c697665727970726f76696465722e737667)[![GitHub commit activity](https://camo.githubusercontent.com/8ed1b73e7be7e37f1ee2254806050692af12dea802c46bf0ac44812a96d04530/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6d6d69742d61637469766974792f792f6f61742d73612f657874656e73696f6e2d74616f2d6c746964656c697665727970726f76696465722e737667)](https://camo.githubusercontent.com/8ed1b73e7be7e37f1ee2254806050692af12dea802c46bf0ac44812a96d04530/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6d6d69742d61637469766974792f792f6f61742d73612f657874656e73696f6e2d74616f2d6c746964656c697665727970726f76696465722e737667)[![codecov](https://camo.githubusercontent.com/9b4aabc5464ee9430f8924233a611cca0e688fb87d76e960a9c49712b0653484/68747470733a2f2f636f6465636f762e696f2f67682f6f61742d73612f657874656e73696f6e2d74616f2d6c746964656c697665727970726f76696465722f6272616e63682f6d61737465722f67726170682f62616467652e737667)](https://codecov.io/gh/oat-sa/extension-tao-ltideliveryprovider)

> The LTI Delivery extension allows test-takers to take a delivery (delivered test) via LTI

The endpoint for this service to proctor a specific delivery is: `https://YOUR_DOMAIN/ltiDeliveryProvider/DeliveryTool/launch?delivery=YOUR_DELIVERY_URI`

or

`https://YOUR_DOMAIN/ltiDeliveryProvider/DeliveryTool/{"delivery":"YOUR_URI"}(base64 encoded)`

This link can retrieved using the LTI button in the deliveries section in the TAO admin user interface.

Alternatively a configurable link can be used by omitting the delivery parameter `https://YOUR_DOMAIN/ltiDeliveryProvider/DeliveryTool/launch`

In this scenario the instructor would need to call the LTI service first, and will be presented with a list of deliveries. Once he has chosen one of these deliveries it can no longer be changed. Test-takers subsequently clicking on the same link (as identified by Resource ID) will start the delivery chosen by the instructor.

The expected roles are:

- `Learner` for people taking a test
- `Instructor` for people configuring a link

Custom parameters:

- `max_attempts` Overrides the number of executions allowed on the delivery. Expects a positive integer value or 0 for unlimited attempts. Attempts on LTI calls are calculated per `resource_link_id` instead of per delivery.

Return Values:

- `log message` will contain the status of the delivery execution
    - **100** for an active delivery
    - **101** for a paused delivery
    - **200** for a finished delivery
    - **201** for a terminated delivery

Installation instructions
-------------------------

[](#installation-instructions)

These instructions assume that you have already a TAO installation on your system. If you don't, go to [package/tao](https://github.com/oat-sa/package-tao) and follow the installation instructions.

If you installed your TAO instance through [package/tao](https://github.com/oat-sa/package-tao), `oat-sa/extension-tao-ltideliveryprovider` is very likely already installed. You can verify this under *Settings -&gt; Extension manager*, where it would appear on the left hand side as `ltiDeliveryProvider`. Alternatively you would find it in the code at `/config/generis/installation.conf.php`.

*Note, that you have to be logged in as System Administrator to do this.*

Add the extension to your TAO composer and to the autoloader:

```
composer require oat-sa/extension-tao-ltideliveryprovider
```

Install the extension on the CLI from the project root:

**Linux:**

```
sudo php tao/scripts/installExtension oat-sa/extension-tao-ltideliveryprovider
```

**Windows:**

```
php tao\scripts\installExtension oat-sa/extension-tao-ltideliveryprovider
```

As a system administrator you also install it through the TAO Extension Manager:

- Settings (the gears on the right hand side of the menu) -&gt; Extension manager
- Select *ltiDeliveryProvider* on the right hand side, check the box and hit *install*

REST API
--------

[](#rest-api)

[LTI delivery service REST API](https://openapi.taotesting.com/viewer/?url=https://raw.githubusercontent.com/oat-sa/extension-tao-ltideliveryprovider/master/doc/rest.json)

Configuration options
---------------------

[](#configuration-options)

### Feature flags

[](#feature-flags)

#### FEATURE\_FLAG\_AGS\_SCORE\_SENDING\_RETRY

[](#feature_flag_ags_score_sending_retry)

A `bool`-typed environment variable, controlling whether AGS score should be resent if it fails to be sent.

- `"false"` – the application won't try to resend another request when it fails. Default behavior.
- `"true"` – the application will try to resend requests until the number of max retries is reached.

### LaunchQueue.conf.php

[](#launchqueueconfphp)

#### Configuration option `relaunchInterval`

[](#configuration-option-relaunchinterval)

*Description:* specifies time (in seconds) for a test taker to wait before the page is reloaded when waiting in LTI queue

*Possible values:*

- Any numerical value (&gt; 0)

#### Configuration option `relaunchIntervalDeviation`

[](#configuration-option-relaunchintervaldeviation)

*Description:* specifies time (in seconds) to pick a random amount of seconds between 0 and `relaunchIntervalDeviation`, then the random result is randomly added to or subtracted from relaunchInterval for each time the queue page is being reloaded. The goal of this option is to prevent knocking the backend simultaneously by multiple clients.

*Possible values:*

- Any numerical value between 0 and `relaunchInterval`

### LtiDeliveryExecution.conf.php

[](#ltideliveryexecutionconfphp)

#### Configuration option `queue_persistence`

[](#configuration-option-queue_persistence)

*Description:* a persistence that LTI delivery execution service should work based on. Should be a persistence name that's registered in `generis/persistences.conf.php`

*Value example:*

- `default`
- `cache`

### LtiNavigation.conf.php

[](#ltinavigationconfphp)

#### Configuration option `thankyouScreen`

[](#configuration-option-thankyouscreen)

*Description:* whether the 'thank you' screen should be shown once a test is passed through LTI. It only takes effect if the `custom_skip_thankyou` LTI parameter is omitted. Otherwise, it's only depends on the LTI parameter.

*Possible values:*

- `true`
- `false`

#### Configuration option `delivery_return_status`

[](#configuration-option-delivery_return_status)

*Description:* if enabled, the `deliveryExecutionStatus` return parameter will be included in a consumer return URL. This parameter will always be set to a delivery execution state label.

*Possible values:*

- `true`: include the parameter in consumer return URLs
- `false`: omit the parameter

#### Configuration option `message`

[](#configuration-option-message)

*Description:* a factory for producing LTI messages

*Possible values:*

- an instance of any class that has the `getLtiMessage` method

*Value example:*

- `new oat\ltiDeliveryProvider\model\navigation\DefaultMessageFactory()`

### LtiResultIdStorage.conf.php

[](#ltiresultidstorageconfphp)

#### Configuration option `persistence`

[](#configuration-option-persistence)

*Description:* a persistence that LTI result aliases should be stored in. Should be a persistence name that's registered in `generis/persistences.conf.php`

*Value example:*

- `default`
- `cache`

Extension Wiki
--------------

[](#extension-wiki)

You can find the [extension wiki here](https://github.com/oat-sa/extension-tao-ltideliveryprovider/wiki).

###  Health Score

62

—

FairBetter than 99% of packages

Maintenance86

Actively maintained with recent releases

Popularity34

Limited adoption so far

Community35

Small or concentrated contributor base

Maturity83

Battle-tested with a long release history

 Bus Factor7

7 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~26 days

Recently: every ~127 days

Total

159

Last Release

70d ago

Major Versions

v10.1.1.1 → v11.3.1.32020-10-05

v10.1.8.1 → v11.5.02020-11-06

11.4.2.1 → v12.0.02021-02-18

v12.21.6 → v13.0.02026-01-09

v13.0.0 → v14.0.02026-03-09

### Community

Maintainers

![](https://www.gravatar.com/avatar/98ddc6f1b615b1fac2d59f1e72d5dc6056cf6650414271da90cb3f0e203516fe?d=identicon)[bugalood](/maintainers/bugalood)

![](https://www.gravatar.com/avatar/c0ec704e0a8abaf0c27b227ad05d7aca23bc8f83d195229d94d4508cddc0fd24?d=identicon)[oat-lionel](/maintainers/oat-lionel)

![](https://www.gravatar.com/avatar/e8c30644c0da147701176483ca1ca40e1c41012e6c5b0da47e984c1eb8a840b1?d=identicon)[jbout](/maintainers/jbout)

![](https://www.gravatar.com/avatar/348b2cf6408227372fbb22c6e8b0832e1c8c98c5d6b0c88bb220dbdfbcd21a39?d=identicon)[krampstudio](/maintainers/krampstudio)

---

Top Contributors

[![jbout](https://avatars.githubusercontent.com/u/5815304?v=4)](https://github.com/jbout "jbout (80 commits)")[![llecaque](https://avatars.githubusercontent.com/u/5645487?v=4)](https://github.com/llecaque "llecaque (73 commits)")[![tikhanovichA](https://avatars.githubusercontent.com/u/1053022?v=4)](https://github.com/tikhanovichA "tikhanovichA (72 commits)")[![boajer](https://avatars.githubusercontent.com/u/4569734?v=4)](https://github.com/boajer "boajer (57 commits)")[![antoinerobin](https://avatars.githubusercontent.com/u/5881795?v=4)](https://github.com/antoinerobin "antoinerobin (42 commits)")[![ionutpad](https://avatars.githubusercontent.com/u/31656944?v=4)](https://github.com/ionutpad "ionutpad (41 commits)")[![hectoras](https://avatars.githubusercontent.com/u/339792?v=4)](https://github.com/hectoras "hectoras (36 commits)")[![wazelin](https://avatars.githubusercontent.com/u/2943256?v=4)](https://github.com/wazelin "wazelin (28 commits)")[![siwane](https://avatars.githubusercontent.com/u/8009602?v=4)](https://github.com/siwane "siwane (26 commits)")[![bugalot](https://avatars.githubusercontent.com/u/4217431?v=4)](https://github.com/bugalot "bugalot (24 commits)")[![emgolubev](https://avatars.githubusercontent.com/u/136785?v=4)](https://github.com/emgolubev "emgolubev (23 commits)")[![pnal](https://avatars.githubusercontent.com/u/18700632?v=4)](https://github.com/pnal "pnal (21 commits)")[![augustas](https://avatars.githubusercontent.com/u/2705327?v=4)](https://github.com/augustas "augustas (21 commits)")[![krampstudio](https://avatars.githubusercontent.com/u/468620?v=4)](https://github.com/krampstudio "krampstudio (21 commits)")[![SergiiTao](https://avatars.githubusercontent.com/u/36041347?v=4)](https://github.com/SergiiTao "SergiiTao (20 commits)")[![zagovorichev](https://avatars.githubusercontent.com/u/1445911?v=4)](https://github.com/zagovorichev "zagovorichev (20 commits)")[![jsconan](https://avatars.githubusercontent.com/u/1500098?v=4)](https://github.com/jsconan "jsconan (19 commits)")[![shpran](https://avatars.githubusercontent.com/u/59471572?v=4)](https://github.com/shpran "shpran (19 commits)")[![bartlomiejmarszal](https://avatars.githubusercontent.com/u/16231681?v=4)](https://github.com/bartlomiejmarszal "bartlomiejmarszal (15 commits)")[![uncleempty](https://avatars.githubusercontent.com/u/32706312?v=4)](https://github.com/uncleempty "uncleempty (13 commits)")

---

Tags

TAOcomputer-based-assessmentOATQTI

### Embed Badge

![Health badge](/badges/oat-sa-extension-tao-ltideliveryprovider/health.svg)

```
[![Health](https://phpackages.com/badges/oat-sa-extension-tao-ltideliveryprovider/health.svg)](https://phpackages.com/packages/oat-sa-extension-tao-ltideliveryprovider)
```

###  Alternatives

[oat-sa/tao-community

TAO is an Open Source e-Testing platform that empowers you to build, deliver, and share innovative and engaging assessments online – in any language or subject matter.

104.9k1](/packages/oat-sa-tao-community)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
