Extensión interna del sistema central de OTOBO
Extensión interna del sistema central de OTOBO
Sección titulada «Extensión interna del sistema central de OTOBO»En este artículo aprenderás cómo personalizar OTOBO directamente en el núcleo mediante configuración XML, módulos Perl y plantillas. Te mostramos paso a paso cómo integrar tu propio módulo “HelloWorld” en el sistema.
1. Estructura de directorios
Sección titulada «1. Estructura de directorios»Todas las personalizaciones se encuentran debajo de tu clon de OTOBO en el directorio Kernel/:
Kernel/├─ Config/Files/ # Registros XML│ └─ XML/├─ System/ # Módulos de lógica de negocio (Core)├─ Modules/ # Frontend-Controller (Agent/Customer)├─ Output/HTML/Standard/ # Plantillas Template Toolkit (TT)└─ Language/ # Traducciones2. Configuración XML
Sección titulada «2. Configuración XML»Los nuevos módulos y rutas se registran mediante XML. Crea un archivo HelloWorld.xml en Kernel/Config/Files/XML/:
<?xml version="1.0" encoding="UTF-8"?><otobo_config version="2.0" init="Application">
<!-- 1. Registrar módulo de Frontend --> <Setting Name="Frontend::Module###AgentHelloWorld" Required="1" Valid="1"> <Navigation>Frontend::Agent::ModuleRegistration</Navigation> <Value> <Item ValueType="FrontendRegistration"> <Hash> <Item Key="Group"><Array><Item>users</Item></Array></Item> <Item Key="Description" Translatable="1">Módulo HelloWorld</Item> <Item Key="Title" Translatable="1">HelloWorld</Item> <Item Key="NavBarName">HelloWorld</Item> </Hash> </Item> </Value> </Setting>
</otobo_config>3. Módulo Core (Lógica de negocio)
Sección titulada «3. Módulo Core (Lógica de negocio)»Crea tu lógica en Kernel/System/HelloWorld.pm:
package Kernel::System::HelloWorld;use strict;use warnings;our @ObjectDependencies = ();
sub new { my ($Type, %Param) = @_; return bless {}, $Type;}
sub GetHelloWorldText { my ($Self, %Param) = @_; return $Self->_FormatText(String => 'Hello World');}
sub _FormatText { my ($Self, %Param) = @_; return uc $Param{String};}
1;4. Módulo de Frontend (Controller)
Sección titulada «4. Módulo de Frontend (Controller)»En Kernel/Modules/AgentHelloWorld.pm integras tu lógica en el Frontend del agente:
package Kernel::Modules::AgentHelloWorld;use strict;use warnings;
sub new { bless {}, shift }
sub Run { my ($Self, %Param) = @_;
my $HelloObj = $Kernel::OM->Get('Kernel::System::HelloWorld'); my $LayoutObj = $Kernel::OM->Get('Kernel::Output::HTML::Layout'); my %Data;
$Data{Text} = $HelloObj->GetHelloWorldText();
return $LayoutObj->Header(Title => 'HelloWorld') . $LayoutObj->NavigationBar() . $LayoutObj->Output( TemplateFile => 'AgentHelloWorld', Data => \%Data, ) . $LayoutObj->Footer();}
1;5. Plantillas (TT)
Sección titulada «5. Plantillas (TT)»Crea la siguiente plantilla en Kernel/Output/HTML/Standard/AgentHelloWorld.tt:
[% Data.Text %]
<p>¡Este es tu módulo HelloWorld creado por ti mismo!</p>6. Flujo de trabajo de ejemplo
Sección titulada «6. Flujo de trabajo de ejemplo»-
Recargar:
Ventana de terminal bin/otobo.Console.pl Maint::Config::Rebuild -
Limpiar caché:
Ventana de terminal bin/otobo.Console.pl Maint::Cache::Delete -
Abrir navegador: Interfaz de agente → Menú → “HelloWorld”
7. Consejos y mejores prácticas
Sección titulada «7. Consejos y mejores prácticas»- Declarar limpiamente las ObjectDependencies (p. ej., DB, Layout).
- No olvidar la documentación POD en los módulos Perl.
- Mantener las traducciones en
Kernel/Language/es_*.pm. - Configurar pruebas unitarias con Mojolicious (opcional).
- Después de cada cambio, realizar Config rebuild y limpiar caché.
Con esto tienes una base sólida para realizar más extensiones del núcleo en OTOBO. ¡Diviértete desarrollando!