description: "Leer hoe je OTOBO direct in de kern kunt aanpassen – via XML-configuratie, Perl-modules en templates. We laten je stap voor stap zien hoe je een eigen 'HelloWorld'-module in het systeem integreert."
Plugin-ontwikkeling met OPM-pakketten
In dit gedeelte leer je hoe je eigen plugins als OPM-pakketten voor OTOBO maakt, installeert en distribueert.
1. Structuur van een .sopm
Het SOPM-bestand (*.sopm) bevat alle metadata van je pakket:
<?xml version="1.0" encoding="utf-8"?>
<otobo_package version="1.0">
<Name>MyExtension</Name>
<Version>1.0.0</Version>
<Framework>10.0.x</Framework> <!-- Minimale versie OTOBO -->
<Vendor>JouwNaam BV</Vendor>
<URL>https://github.com/jouw-user/otobo-mypackage</URL>
<License>GPL-3.0</License>
<Description Lang="nl">Uitbreiding voor speciale functies</Description>
<ChangeLog Version="1.0.0" Date="13.06.2025 12:00:00">Eerste publicatie</ChangeLog>
<Filelist>
<File Location="Kernel/Config/Files/XML/MyExtension.xml" Permission="644"></File>
<File Location="Kernel/System/MyExtension.pm" Permission="644"></File>
<File Location="Kernel/Modules/AgentMyPage.pm" Permission="644"></File>
<File Location="Kernel/Output/HTML/Standard/AgentMyPage.tt" Permission="644"></File>
<File Location="Kernel/Language/nl_MyExtension.pm" Permission="644"></File>
</Filelist>
</otobo_package>- Name/Version/Framework: Unieke pakketidentificatie en compatibele OTOBO-versie.
- Filelist: Alle bestanden die tijdens de installatie worden gekopieerd.
2. Bestanden & Directory Structuur
Maak je pakket aan in een eigen directory, bijvoorbeeld MyExtension/:
MyExtension/
├─ MyExtension.sopm
├─ Kernel/
│ ├─ Config/Files/XML/MyExtension.xml
│ ├─ System/MyExtension.pm
│ ├─ Modules/AgentMyPage.pm
│ ├─ Output/HTML/Standard/AgentMyPage.tt
│ └─ Language/nl_MyExtension.pm
└─ sql/
└─ create_tables.sql # optioneel, voor DB-migraties- Kernel/Config/Files/XML/: Registreert modules, menu's of dynamische velden.
- Kernel/System/: Business-logica klasse.
- Kernel/Modules/: Frontend controller.
- Templates & Taal: TT-bestanden + vertaling-.pm.
3. Pakket Bouwen & Installeren
3.1 OPM Creëren
Gebruik de CLI-tool om van je SOPM een OPM te bouwen:
cd /pad/naar/MyExtension
bin/otobo.Console.pl Dev::Package::Build \
--sopm-file MyExtension.sopm \
--output /tmp/MyExtension.opm3.2 Installatie
Admin UI: Upload het pakket onder Admin → Instellingen → Pakketbeheer. Console:
bin/otobo.Console.pl Admin::Package::Install /tmp/MyExtension.opmOm te de-installeren of te updaten:
bin/otobo.Console.pl Admin::Package::Uninstall /tmp/MyExtension.opm
bin/otobo.Console.pl Admin::Package::Upgrade /tmp/MyExtension.opm4. Uitbreidingspunten
4.1 Dynamische Velden
In Kernel/Config/Files/XML/MyExtension.xml registreer je een nieuwe Dynamic Field Driver:
<Setting Name="DynamicFields::Driver###MyCustomField" Required="0" Valid="1">
<Navigation>DynamicFields::Driver</Navigation>
<Value>
<Array>
<Item><Hash>
<Item Key="DriverName">MyCustomField</Item>
<Item Key="Module">Kernel::System::DynamicField::Driver::MyCustomField</Item>
</Hash></Item>
</Array>
</Value>
</Setting>Implementeer de driver in Kernel/System/DynamicField/Driver/MyCustomField.pm.
4.2 Event-Handlers
Meld je event-handler aan:
<Setting Name="Event::EventHandler###MyHandler" Required="0" Valid="1">
<Navigation>Event::EventHandler</Navigation>
<Value>
<Array>
<Item><Hash>
<Item Key="Module">Kernel::System::Event::Handler::MyHandler</Item>
</Hash></Item>
</Array>
</Value>
</Setting>Implementeer de handler in Kernel/System/Event/Handler/MyHandler.pm (Run()-methode).
4.3 Output-Filters
<Setting Name="Output::Filter###MyFilter" Required="0" Valid="1">
<Navigation>Output::Filter</Navigation>
<Value>
<Array>
<Item><Hash>
<Item Key="Module">Kernel::System::Output::Filter::MyFilter</Item>
</Hash></Item>
</Array>
</Value>
</Setting>Filter in Kernel/System/Output/Filter/MyFilter.pm.
5. Deployment & OTOpar
Repository Index: Maak
Packages.xmlaan voor je eigen repo:bashbin/otobo.Console.pl Dev::Package::RepositoryIndex \ --directory /var/www/otobo-packagesVoeg onder SysConfig
Package::RepositoryListje repo-URL toe.OTOpar: Upload je OPM naar https://otopar.perl-services.de, zodat anderen het direct kunnen installeren.
6. Voorbeeld: MyCalendar-pakket
- Maak SOPM aan met naam
MyCalendar. - DB-script
sql/create_calendar.sqlvoor tabelcalendar_events. - Config-XML definieert nieuw ticketveld „Afspraak“.
- Core-module
Kernel/System/CalendarEvent.pmmet CRUD-methoden. - Frontend-modules
Kernel/Modules/AgentCalendar.pm, templateAgentCalendar.tt. - Bouw pakket en upload naar OTOpar.
7. Tips & Best Practices
- Pas versienummer in
sopmaan (SemVer). - Versioneer DB-migraties schoon in
sql/. - Maak unit tests voor systeem- en moduleklassen.
- Documentatie in README plus POD in Perl-modules.
- Vertalingen in
Language/nl_*.pmenen_*.pm.
Hiermee heb je een solide basis om eigen OTOBO-plugins te ontwikkelen, te distribueren en onderhoudbaar in te zetten in klantprojecten. Veel plezier!