Zammad Integration for Open Ticket AI
Open Ticket AI (OTAI) includes a plugin for Zammad, allowing OTAI to read and update tickets through the Zammad REST API. This enables AI-driven routing, prioritization and categorization directly inside Zammad. The current implementation works, but it is not fully tested yet and may require adjustments in real-world installations.
Architecture
The integration follows the standard OTAI plugin pattern:
- a separate plugin package:
otai_zammad - a
ZammadTicketsystemService(Injectable) - a
ZammadPluginregistering the service - configuration in
config.yml - OTAI writes predictions back into Zammad through the service’s REST calls
This structure is identical to all OTAI ticket system plugins (e.g. OTOBO/Znuny, Freshdesk, OTRS).
Zammad Plugin Structure
otai_zammad/
src/
otai_zammad/
zammad_ticket_system_service.py
plugin.py
pyproject.tomlplugin.py
python
from open_ticket_ai import Injectable, Plugin
from otai_zammad.zammad_ticket_system_service import ZammadTicketsystemService
class ZammadPlugin(Plugin):
def _get_all_injectables(self) -> list[type[Injectable]]:
return [
ZammadTicketsystemService,
]The plugin exposes exactly one injectable: ZammadTicketsystemService.
ZammadTicketsystemService Parameters
The service accepts these fields:
yaml
base_url: The base URL of the Zammad instance (e.g. https://helpdesk.example.com)
access_token: Personal Access Token used for authentication
timeout: Optional HTTP timeout in seconds
verify: TLS verification flag or path to CA bundleThese map directly to the service’s params model.
Example Configuration
(You just change “use” to zammad:ZammadTicketsystemService)
yaml
ticket_systems:
zammad:
use: zammad:ZammadTicketsystemService
params:
base_url: https://your-zammad-domain
access_token: "{{ get_env('ZAMMAD_TOKEN') }}"
timeout: 10
verify: trueAfter this, OTAI will automatically load the plugin via the entry point in your pyproject.toml:
toml
[project.entry-points."otai.plugins"]
otai_zammad = "otai_zammad.plugin:ZammadPlugin"How OTAI Uses the Zammad Service
- OTAI fetches new or updated Zammad tickets
- AI models classify queue, priority or custom labels
- OTAI calls
update_ticket(...)on the Zammad API - Zammad updates the ticket
- Agents continue their normal Zammad workflow, now powered by OTAI
The process is identical to OTOBO/Znuny, Freshdesk, OTRS or any other OTAI ticket system plugin.
Current Status
The Zammad integration is implemented, but:
- it is not fully tested
- API coverage may be incomplete
- real-world Zammad setups may require additional adjustments
- performance characteristics (pagination, search endpoints, large result sets) still need benchmarking
You can already use the plugin for prototyping and internal testing, but production use should wait until further validation.
Benefits
- AI classification entirely on-premise
- no Zammad cloud extensions or external AI needed
- integrates cleanly into existing OTAI workflows
- same plugin architecture as all other OTAI services