Adds the Asyntai chat assistant to every page of an ILIAS installation.
The plugin is a User Interface Hook plugin. It adds one small loader script to
the page. The script waits for the page load event, then loads the widget from
widget.asyntai.com. ILIAS is drawn first, so the page speed does not change.
- Tested on ILIAS 11.3, ILIAS 10.10 and ILIAS 9.22. The full test set passes on all three.
- Supports ILIAS 9, 10 and 11.
- English and German administration texts.
| Setting | Effect |
|---|---|
| Asyntai widget ID | The chat is on when this holds a valid ID. Empty means off. You can paste the whole snippet from the Asyntai dashboard; the plugin keeps only the ID. |
| Show only to visitors who are not logged in | Members who are logged in never see the chat. |
| Script address (optional) | For a different widget address. Empty means the standard address. |
-
Copy the folder
AsyntaiChatinto the User Interface Hook slot.ILIAS 10 and 11:
<ilias>/public/Customizing/global/plugins/Services/UIComponent/UserInterfaceHook/AsyntaiChatILIAS 9:
<ilias>/Customizing/global/plugins/Services/UIComponent/UserInterfaceHook/AsyntaiChat -
In the ILIAS root folder, read the new classes and build the artifacts:
composer duILIAS needs this step. Without it the plugin class is not found. The command also builds the ILIAS artifacts, because ILIAS runs its setup build after every autoload dump.
-
Update the installation.
ILIAS 10 and 11:
php cli/setup.php updateILIAS 9:
php setup/setup.php update -
Open Administration > Extending ILIAS > Plugins, find AsyntaiChat, then click Install and Activate.
-
Click Configure and paste your Asyntai widget ID. You find the ID at asyntai.com under Setup & Integration.
AsyntaiChat/
plugin.php plugin id, version, ILIAS versions
classes/
class.ilAsyntaiChatPlugin.php the plugin, settings, loader script
class.ilAsyntaiChatConfigGUI.php the administration form
class.ilAsyntaiChatUIHookGUI.php required by ILIAS, empty on purpose
GlobalScreen/
AsyntaiChatModificationProvider.php adds the script to every page
lang/
ilias_en.lang English texts
ilias_de.lang German texts
Two ILIAS rules shape this code. Both were found by testing, and both break the site in a quiet way if you forget them.
-
ILIAS keeps only one content modification. The one with the highest priority wins; the others are dropped. The ILIAS page content itself is such a modification. A second one from a plugin deletes the whole page, including the login form. The script is therefore added with
globalScreen()->layout()->meta()->addOnloadCode(), which has no such limit. -
The ILIAS template engine deletes every
{word}group, because that is how it writes its own placeholders. In JavaScript this silently removes blocks like{return}and turns a guard into its opposite. Every pair of braces in the loader script therefore holds at least one character that is not a letter, a digit, a dot, an underscore or a hyphen.ilAsyntaiChatPlugin::isTemplateSafe()checks this.
GPL-3.0-or-later, the same licence as ILIAS. See LICENSE.
Copyright (C) 2026 Asyntai.