[{"data":1,"prerenderedAt":756},["ShallowReactive",2],{"navbar-de":3,"footer-de":25,"company-de":71,"blog-post-de-otobo-openticketai-connector":158},{"id":4,"extension":5,"items":6,"meta":22,"stem":23,"__hash__":24},"navbar_de/de/_data/navbar.yml","yml",[7,10,13,16,19],{"label":8,"to":9},"Startseite","/",{"label":11,"to":12},"Services","/services",{"label":14,"to":15},"Blog","/blogs",{"label":17,"to":18},"Buchung","/booking",{"label":20,"to":21},"Kontakt","/contact",{},"de/_data/navbar","o8D6u3OMiKGLNDfXGblf6vurGc32IWmjb7wmM8vWqZE",{"id":26,"columns":27,"extension":5,"meta":68,"stem":69,"__hash__":70},"footer_de/de/_data/footer.yml",[28,38,54],{"title":29,"links":30},"Unternehmen",[31,32,35],{"label":20,"to":21},{"label":33,"to":34},"Impressum","/contact/impressum",{"label":36,"to":37},"Datenschutz","/contact/dataprivacy",{"title":11,"links":39},[40,43,46,49,52],{"label":41,"to":42},"Ticketsysteme (OTOBO & Znuny)","/service-groups/ticket-systems",{"label":44,"to":45},"KI-Services","/services#ai-services",{"label":47,"to":48},"Support & Hosting","/service-groups/support",{"label":50,"to":51},"Engineering Days","/service-groups/flexible",{"label":53,"to":12},"Alle Services",{"title":55,"links":56},"Ressourcen",[57,59,62,65],{"label":14,"to":58},"/blog",{"label":60,"to":61},"OTOBO Docs","https://otobo-docs.softoft.de",{"label":63,"to":64},"Znuny Docs","https://znuny-docs.softoft.de/de/",{"label":66,"to":67},"OpenITSMHub","https://openitsmhub.com",{},"de/_data/footer","25NjHHDEmDFI6YYxBcq-SRoVOEOPxH6XTb2I4Sfp2_0",{"id":72,"contact":73,"descriptor":82,"extension":5,"fullName":83,"meta":84,"metrics":85,"name":98,"partners":99,"qualification":104,"socialMedia":112,"stem":129,"tagline":130,"testimonials":131,"whySoftoft":144,"__hash__":157},"company_de/de/_data/company.yml",{"email":74,"appointmentUrl":75,"googleReviewsUrl":76,"address":77},"tab@softoft.de","https://calendar.app.google/fXPHuhqQvx9Gf4LT9","https://www.google.com/maps/place/SoftOft/@50.0040865,8.2451374,17z/data=!3m1!4b1!4m6!3m5!1s0x47bd97c3c5e853d3:0x63a648317d57a53d!8m2!3d50.0040865!4d8.2451374!16s%2Fg%2F11rg8q5d69",{"street":78,"city":79,"zip":80,"country":81},"Am Judensand 7","Mainz","55122","Deutschland","Ticketsystem Services","Softoft Tobias Bück Einzelunternehmen",{},[86,89,92,95],{"value":87,"label":88},"5+","Jahre Ticketsystem-Erfahrung",{"value":90,"label":91},"5,0 ★","Bewertung auf Google",{"value":93,"label":94},"Top 1000","Kaggle Datasets weltweit",{"value":96,"label":97},"100%","On-Premise & datenschutzkonform","Tobias Bück",[100],{"name":101,"description":102,"url":103},"Open Ticket AI","KI-gestützte Ticket-Klassifizierung und -Routing für On-Premise-OTOBO/Znuny über REST-APIs und Python SDKs","https://openticketai.com",{"heading":105,"intro":106,"bullets":107},"Für wen ist das geeignet?","Ideal für Teams mit klaren Ticket-System-Zielen:",[108,109,110,111],"On-Premise-Ticketsysteme","OTOBO- oder Znuny-Teams","REST-API- & Python-SDK-Integrationen",">500 Tickets/Monat oder KI-Automatisierungspläne",[113,117,121,125],{"platform":114,"url":115,"icon":116},"LinkedIn","https://www.linkedin.com/company/softoft/","fa-brands:linkedin",{"platform":118,"url":119,"icon":120},"GitHub","https://github.com/Softoft","fa-brands:github",{"platform":122,"url":123,"icon":124},"Kaggle","https://www.kaggle.com/tobiasbueck","simple-icons:kaggle",{"platform":126,"url":127,"icon":128},"Medium","https://medium.com/@softoft","fa-brands:medium","de/_data/company","Ihr Partner für On-Premise-Ticket-Automatisierung & KI",[132,137,141],{"text":133,"name":134,"role":135,"company":136},"Tobi hat uns in Bezug auf unser Ticketsystem OTOBO einiges an Fine-Tuning vorgenommen. Das ging schnell und unkompliziert. Er weiß was er tut und setzt dies mit kreativen Lösungsansätzen um. Jederzeit wieder. Vielen Dank.","Dennis Lohmann","Google-Rezension","",{"text":138,"name":139,"role":135,"company":140},"Softoft hat uns (Vianova Service GmbH) bei der Einrichtung des OTOBO Ticketsystems geholfen. Es hat alles gut funktioniert.","Reinhard Sczech","Vianova Service GmbH",{"text":142,"name":143,"role":135,"company":136},"SoftOft hat uns bei der Weiterentwicklung unserer Webseite geholfen. Schnell, unkompliziert, preiswert! Gerne wieder!","Jochen Petersen",[145,148,151,154],{"icon":146,"text":147},"heroicons:star-20-solid","Weniger manuelles Sortieren — Ihr Team antwortet schneller",{"icon":149,"text":150},"heroicons:rocket-launch-20-solid","In Wochen produktiv, nicht in Monaten",{"icon":152,"text":153},"heroicons:shield-check-20-solid","Ihre Daten verlassen nie Ihre Server",{"icon":155,"text":156},"heroicons:user-20-solid","Direkter Draht zum Experten — ohne Zwischeninstanzen","y0Fwk-AD0gPXkSNknAQ7UpjRjO6TtVDAmJpwdp3rIXQ",{"id":159,"title":160,"author":98,"blogId":161,"body":162,"canonicalUrl":730,"description":731,"extension":732,"externalUrl":733,"layout":733,"mainImage":734,"meta":735,"mobileImage":734,"navigation":433,"openItsmHubRelated":736,"openItsmHubUrl":739,"order":743,"path":744,"publishedAt":745,"seo":746,"stem":747,"tags":748,"__hash__":755},"blog_de/de/blog/otobo-openticketai-connector.md","Open Ticket AI Connector: Generic-Interface-API von OTOBO und Znuny erweitern","otobo-openticketai-connector",{"type":163,"value":164,"toc":722},"minimark",[165,170,183,195,213,218,221,248,261,265,272,394,397,402,405,409,412,598,608,618,622,629,632,644,648,689,699,703,706,718],[166,167,169],"h1",{"id":168},"wir-haben-den-connector-api-erweiterungen-für-otobo-und-znuny","Wir haben den Connector: API-Erweiterungen für OTOBO und Znuny",[171,172,173,174,178,179,182],"p",{},"OTOBO und Znuny bieten über das ",[175,176,177],"strong",{},"Generic Interface"," bereits Ticket anlegen, lesen, suchen und aktualisieren. Das reicht, um Tickets zu bewegen — nicht aber für eine KI-Runtime oder ein Studio, das ",[175,180,181],{},"Queues, Status, Prioritäten, Services, Typen, Dynamische Felder und FAQ"," synchronisieren muss, bevor es klassifizieren oder routen kann.",[171,184,185,186,189,190,194],{},"Deshalb liefern wir den ",[175,187,188],{},"Open Ticket AI Connector",": ein Paket, das einen REST-Webservice namens ",[191,192,193],"code",{},"OpenTicketAI"," einrichtet und zusätzliche Generic-Interface-Operationen über die eingebaute Ticket-API legt.",[171,196,197,198,204,205,208,209,212],{},"Der Connector ist die Anbindung von ",[199,200,101],"a",{"href":201,"rel":202},"https://openticketai.com/",[203],"nofollow"," an ",[175,206,207],{},"OTOBO 11"," und ",[175,210,211],{},"Znuny"," on-premise. Kein SaaS-Umweg, kein zweites Ticket-Archiv — das Ticketsystem bleibt die Quelle der Wahrheit.",[214,215,217],"h2",{"id":216},"was-das-paket-installiert","Was das Paket installiert",[171,219,220],{},"Bei der Installation passieren zwei Dinge:",[222,223,224,240],"ol",{},[225,226,227,228,231,232,235,236,239],"li",{},"Es wird ein ",[175,229,230],{},"eingeschränkter API-Agent"," angelegt, den nur Open Ticket AI nutzt (OTOBO-Standardlogin ",[191,233,234],{},"otai-webservice","; Znuny-Standard ",[191,237,238],{},"open_ticket_ai",").",[225,241,242,243,247],{},"Es wird ein Generic-Interface-REST-Webservice ",[175,244,245],{},[191,246,193],{}," importiert, der auf diesen Benutzer beschränkt ist — andere Agenten können ihn nicht aufrufen.",[171,249,250,251,256,257,260],{},"Zusätzlich existiert die Gruppe ",[175,252,253],{},[191,254,255],{},"ai-agent",". FAQ-Kategorien, die die KI durchsuchen darf, müssen dieser Gruppe (und ",[191,258,259],{},"users"," für menschliche Agenten) zugeordnet sein.",[214,262,264],{"id":263},"ticket-operationen-plus-katalog-erweiterungen","Ticket-Operationen plus Katalog-Erweiterungen",[171,266,267,268,271],{},"Der Webservice behält die bekannten Ticket-Routen und ergänzt Katalog-Operationen als Module ",[191,269,270],{},"TicketAICatalog::*",":",[273,274,275,291],"table",{},[276,277,278],"thead",{},[279,280,281,285,288],"tr",{},[282,283,284],"th",{},"Operation",[282,286,287],{},"Route",[282,289,290],{},"Rolle",[292,293,294,318,337,353,370,383],"tbody",{},[279,295,296,300,315],{},[297,298,299],"td",{},"TicketCreate / Get / Search / Update",[297,301,302,305,306,305,309,305,312],{},[191,303,304],{},"/ticket-create",", ",[191,307,308],{},"/ticket-get",[191,310,311],{},"/ticket-search",[191,313,314],{},"/ticket-update",[297,316,317],{},"Kern-Ticket-API",[279,319,320,323,334],{},[297,321,322],{},"QueueList, StateList, PriorityList",[297,324,325,305,328,305,331],{},[191,326,327],{},"/queue-list",[191,329,330],{},"/state-list",[191,332,333],{},"/priority-list",[297,335,336],{},"Routing-Katalog",[279,338,339,342,350],{},[297,340,341],{},"ServiceList, TypeList",[297,343,344,305,347],{},[191,345,346],{},"/service-list",[191,348,349],{},"/type-list",[297,351,352],{},"Klassifikationswerte",[279,354,355,358,367],{},[297,356,357],{},"DynamicFieldList / Values / Create",[297,359,360,305,363,366],{},[191,361,362],{},"/dynamic-field-list",[191,364,365],{},"/dynamic-field-values",", …",[297,368,369],{},"Feld-Sync und Dropdowns",[279,371,372,375,380],{},[297,373,374],{},"FAQSearch",[297,376,377],{},[191,378,379],{},"/faq-search",[297,381,382],{},"Wissenssuche für die KI",[279,384,385,388,391],{},[297,386,387],{},"AgentCount",[297,389,390],{},"Lizenz / Sizing",[297,392,393],{},"Zählt gültige Agenten",[171,395,396],{},"Basis-URL:",[171,398,399],{},[191,400,401],{},"\u003Chost>/\u003Cotobo|znuny>/nph-genericinterface.pl/Webservice/OpenTicketAI/\u003Croute>",[171,403,404],{},"Authentifizierung per HTTP Basic Auth mit den Zugangsdaten des API-Agenten.",[214,406,408],{"id":407},"so-sieht-eine-erweiterung-im-code-aus","So sieht eine Erweiterung im Code aus",[171,410,411],{},"Jede Katalog-Operation ist ein Generic-Interface-Modul. Nach der Authentifizierung liest sie native OTOBO-/Znuny-Objekte und liefert eine stabile JSON-Liste — hier Queues:",[413,414,418],"pre",{"className":415,"code":416,"language":417,"meta":136,"style":136},"language-perl shiki shiki-themes github-light github-dark","package Kernel::GenericInterface::Operation::TicketAICatalog::QueueList;\n\nuse parent qw(Kernel::GenericInterface::Operation::TicketAICatalog::Base);\n\nsub Run {\n    my ( $Self, %Param ) = @_;\n\n    my ( $UserID, $Error ) = $Self->_AuthOrError(%Param);\n    return $Error if $Error;\n\n    my $QueueObject = $Kernel::OM->Get('Kernel::System::Queue');\n    my %Queues      = $QueueObject->QueueList( Valid => 0 );\n\n    my @Items;\n    for my $QueueID ( sort { $a \u003C=> $b } keys %Queues ) {\n        my %Queue = $QueueObject->QueueGet( ID => $QueueID );\n        next if !%Queue;\n        push @Items, {\n            ID      => $QueueID + 0,\n            Name    => $Queue{Name} // $Queues{$QueueID},\n            Comment => $Queue{Comment} // '',\n            Valid   => ( ( $Queue{ValidID} // 1 ) == 1 ) ? 1 : 0,\n        };\n    }\n\n    return {\n        Success => 1,\n        Data    => { Item => \\@Items },\n    };\n}\n","perl",[191,419,420,428,435,441,446,452,458,463,469,475,480,486,492,497,503,509,515,521,527,533,539,545,551,557,563,568,574,580,586,592],{"__ignoreMap":136},[421,422,425],"span",{"class":423,"line":424},"line",1,[421,426,427],{},"package Kernel::GenericInterface::Operation::TicketAICatalog::QueueList;\n",[421,429,431],{"class":423,"line":430},2,[421,432,434],{"emptyLinePlaceholder":433},true,"\n",[421,436,438],{"class":423,"line":437},3,[421,439,440],{},"use parent qw(Kernel::GenericInterface::Operation::TicketAICatalog::Base);\n",[421,442,444],{"class":423,"line":443},4,[421,445,434],{"emptyLinePlaceholder":433},[421,447,449],{"class":423,"line":448},5,[421,450,451],{},"sub Run {\n",[421,453,455],{"class":423,"line":454},6,[421,456,457],{},"    my ( $Self, %Param ) = @_;\n",[421,459,461],{"class":423,"line":460},7,[421,462,434],{"emptyLinePlaceholder":433},[421,464,466],{"class":423,"line":465},8,[421,467,468],{},"    my ( $UserID, $Error ) = $Self->_AuthOrError(%Param);\n",[421,470,472],{"class":423,"line":471},9,[421,473,474],{},"    return $Error if $Error;\n",[421,476,478],{"class":423,"line":477},10,[421,479,434],{"emptyLinePlaceholder":433},[421,481,483],{"class":423,"line":482},11,[421,484,485],{},"    my $QueueObject = $Kernel::OM->Get('Kernel::System::Queue');\n",[421,487,489],{"class":423,"line":488},12,[421,490,491],{},"    my %Queues      = $QueueObject->QueueList( Valid => 0 );\n",[421,493,495],{"class":423,"line":494},13,[421,496,434],{"emptyLinePlaceholder":433},[421,498,500],{"class":423,"line":499},14,[421,501,502],{},"    my @Items;\n",[421,504,506],{"class":423,"line":505},15,[421,507,508],{},"    for my $QueueID ( sort { $a \u003C=> $b } keys %Queues ) {\n",[421,510,512],{"class":423,"line":511},16,[421,513,514],{},"        my %Queue = $QueueObject->QueueGet( ID => $QueueID );\n",[421,516,518],{"class":423,"line":517},17,[421,519,520],{},"        next if !%Queue;\n",[421,522,524],{"class":423,"line":523},18,[421,525,526],{},"        push @Items, {\n",[421,528,530],{"class":423,"line":529},19,[421,531,532],{},"            ID      => $QueueID + 0,\n",[421,534,536],{"class":423,"line":535},20,[421,537,538],{},"            Name    => $Queue{Name} // $Queues{$QueueID},\n",[421,540,542],{"class":423,"line":541},21,[421,543,544],{},"            Comment => $Queue{Comment} // '',\n",[421,546,548],{"class":423,"line":547},22,[421,549,550],{},"            Valid   => ( ( $Queue{ValidID} // 1 ) == 1 ) ? 1 : 0,\n",[421,552,554],{"class":423,"line":553},23,[421,555,556],{},"        };\n",[421,558,560],{"class":423,"line":559},24,[421,561,562],{},"    }\n",[421,564,566],{"class":423,"line":565},25,[421,567,434],{"emptyLinePlaceholder":433},[421,569,571],{"class":423,"line":570},26,[421,572,573],{},"    return {\n",[421,575,577],{"class":423,"line":576},27,[421,578,579],{},"        Success => 1,\n",[421,581,583],{"class":423,"line":582},28,[421,584,585],{},"        Data    => { Item => \\@Items },\n",[421,587,589],{"class":423,"line":588},29,[421,590,591],{},"    };\n",[421,593,595],{"class":423,"line":594},30,[421,596,597],{},"}\n",[171,599,600,601,604,605,607],{},"Dasselbe Muster gilt für Status, Prioritäten, Services, Typen und Dynamische Felder. ",[175,602,603],{},"DynamicFieldCreate"," legt ein Ticket-Dropdown an oder aktualisiert es und schaltet es auf den üblichen Agenten-Masken frei. ",[175,606,374],{}," sucht kundenrelevante FAQ-Artikel und bricht weich ab, wenn das FAQ-Paket fehlt.",[171,609,610,611,208,614,617],{},"Die Operationen sind in der Systemkonfiguration als Generic-Interface-Module registriert, etwa ",[191,612,613],{},"TicketAICatalog::QueueList",[191,615,616],{},"TicketAICatalog::FAQSearch",".",[214,619,621],{"id":620},"warum-das-für-ki-am-helpdesk-zählt","Warum das für KI am Helpdesk zählt",[171,623,624,625,628],{},"Ohne Katalog-Endpunkte kann eine externe Engine Queue-Namen nur aus dem Tickettext raten. Mit dem Connector synchronisieren Studio und Runtime den ",[175,626,627],{},"lebenden Katalog",", mappen Vorhersagen auf echte IDs und schreiben über TicketUpdate zurück — inklusive Dynamischer Felder.",[171,630,631],{},"Verwandte Pakete auf demselben Stack:",[633,634,635,641],"ul",{},[225,636,637,640],{},[175,638,639],{},"OTAIStudio"," — SSO aus der Agentenoberfläche ins Open Ticket AI Studio (benötigt diesen Connector).",[225,642,643],{},"Optionale Agenten-Ansichten für Attribute und menschliche Prüfung von KI-Vorschlägen.",[214,645,647],{"id":646},"otobo-und-znuny","OTOBO und Znuny",[273,649,650,663],{},[276,651,652],{},[279,653,654,657,660],{},[282,655,656],{},"System",[282,658,659],{},"Paket",[282,661,662],{},"Typisches API-Login",[292,664,665,677],{},[279,666,667,670,673],{},[297,668,669],{},"OTOBO 11.0.x",[297,671,672],{},"Open Ticket AI (OTOBO)",[297,674,675],{},[191,676,234],{},[279,678,679,682,685],{},[297,680,681],{},"Znuny 7.x / LTS 6.5",[297,683,684],{},"Open Ticket AI (Znuny)",[297,686,687],{},[191,688,238],{},[171,690,691,692,695,696,239],{},"Die Generic-Interface-Operationsnamen sind auf beiden Systemen gleich. OTOBO liest das API-Passwort aus der Prozessumgebung (",[191,693,694],{},"OTAI_TICKETSYSTEM_PASSWORD","); Znuny erwartet vor der Installation SysConfig (",[191,697,698],{},"OpenTicketAIConnector::AgentPassword",[214,700,702],{"id":701},"nächster-schritt","Nächster Schritt",[171,704,705],{},"Wenn Sie OTOBO oder Znuny betreiben und On-Prem-Ticket-KI mit einer sauberen API wollen — nicht mit einem fragilen UI-Scraping —, ist dieser Connector die Integrationsschicht, die wir in Produktion nutzen.",[171,707,708,709,713,714,617],{},"Mehr zum Produkt auf ",[199,710,712],{"href":201,"rel":711},[203],"openticketai.com"," oder ",[199,715,717],{"href":716},"/contact/","Kontakt aufnehmen",[719,720,721],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":136,"searchDepth":430,"depth":430,"links":723},[724,725,726,727,728,729],{"id":216,"depth":430,"text":217},{"id":263,"depth":430,"text":264},{"id":407,"depth":430,"text":408},{"id":620,"depth":430,"text":621},{"id":646,"depth":430,"text":647},{"id":701,"depth":430,"text":702},"https://openticketai.com/de/docs/otai-runtime/otobo-znuny-plugin-setup","Softoft liefert ein Open-Ticket-AI-Connector-Paket, das das Generic Interface von OTOBO und Znuny um Katalog-, FAQ- und Dynamische-Felder-Operationen erweitert — eine eigene REST-API für On-Prem-Ticket-KI.","md",null,"/images/blog/open-source-ticket-systems-ai.webp",{},[737,740],{"title":738,"url":739},"Open Ticket AI im Hub-Katalog","https://openitsmhub.com/packages/open-ticket-ai-runtime",{"title":741,"url":742},"Helpdesk-KI, APIs und Datenschutz","https://openitsmhub.com/blog/opensource-helpdesk-ki-apis-automation-datenschutz",1204,"/de/blog/otobo-openticketai-connector","2026-08-27",{"title":160,"description":731},"de/blog/otobo-openticketai-connector",[749,750,751,752,753,754],"otobo","znuny","openticketai","api","generic-interface","ticket-system","8LqSlENYLE0ohmtiHvffgXOr0CYZpums_sVP9SEgBWI",1789462343794]