Freshdesk-KI-Integration mit Open Ticket AI
Open Ticket AI (OTAI) ist ein lokales, on-premise Ticket-Klassifizierungssystem (auch als ATC Community Edition bezeichnet), das die Kategorisierung und das Routing von Support-Tickets automatisiert. Freshdesk ist eine beliebte cloudbasierte Kundensupport-Plattform mit eigenen KI-Tools, die Ticketing, Workflows und Reporting bietet. Durch das Schreiben eines benutzerdefinierten TicketSystemAdapter können Sie OTAI in Freshdesk integrieren und Freshdesk-Tickets automatisch über dessen REST API aktualisieren. Dies ermöglicht eine KI-gesteuerte Ticket-Triage innerhalb der Freshdesk-Umgebung. In der Pipeline von Open Ticket AI ist die letzte Stufe ein TicketSystemAdapter, der KI-Vorhersagen über REST-Aufrufe auf das Ticketsystem anwendet. Um OTAI für Freshdesk zu erweitern, implementieren Sie einen FreshdeskAdapter
, der von TicketSystemAdapter
erbt und Methoden zum Abfragen und Aktualisieren von Tickets in Freshdesk implementiert.
Abbildung: UML-Klassendiagramm der Open Ticket AI-Architektur. Die abstrakte TicketSystemAdapter
-Klasse bildet die Basis für systemspezifische Adapter (z. B. einen OTOBOAdapter), die sich mit externen Ticketsystemen verbinden. Die OTAI-Architektur ist modular aufgebaut: Eingehende Tickets durchlaufen NLP-Klassifikatoren, und ein TicketSystemAdapter schreibt die Ergebnisse anschließend zurück in das Ticketsystem. Die Dokumentation erklärt, dass TicketSystemAdapter
eine abstrakte Basisklasse ist, „die alle konkreten Ticketsystem-Adapter implementieren müssen“, um mit verschiedenen Ticket-Plattformen zu interagieren. Unterklassen müssen drei zentrale async
-Methoden implementieren: update_ticket(ticket_id, data)
, find_tickets(query)
und find_first_ticket(query)
. In der Praxis würden Sie eine neue Python-class
erstellen, z. B. class FreshdeskAdapter(TicketSystemAdapter)
, und diese Methoden überschreiben. Zum Beispiel:
import aiohttp
from open_ticket_ai.src.ce.ticket_system_integration.ticket_system_adapter import TicketSystemAdapter
class FreshdeskAdapter(TicketSystemAdapter):
async def update_ticket(self, ticket_id: str, data: dict) -> dict:
# Construct Freshdesk API URL for updating a ticket
base = f"https://{self.config.freshdesk_domain}.freshdesk.com"
url = f"{base}/api/v2/tickets/{ticket_id}"
auth = aiohttp.BasicAuth(self.config.freshdesk_api_key, password="X")
async with aiohttp.ClientSession(auth=auth) as session:
async with session.put(url, json=data) as resp:
return await resp.json()
async def find_tickets(self, query: dict) -> list[dict]:
# Use Freshdesk List Tickets or Search API to retrieve tickets matching query
base = f"https://{self.config.freshdesk_domain}.freshdesk.com"
params = {k: v for k, v in query.items()}
url = f"{base}/api/v2/tickets"
async with aiohttp.ClientSession(
auth=aiohttp.BasicAuth(self.config.freshdesk_api_key, password="X"),
) as session:
async with session.get(url, params=params) as resp:
data = await resp.json()
return data.get('tickets', [])
async def find_first_ticket(self, query: dict) -> dict:
tickets = await self.find_tickets(query)
return tickets[0] if tickets else None
Der obige Code zeigt einen einfachen FreshdeskAdapter. Er bezieht die Freshdesk-Domain (den Firmennamen) und den API-Schlüssel aus der OTAI-Konfiguration (self.config
), die zur Laufzeit injiziert wird. Anschließend verwendet er aiohttp
von Python für asynchrone HTTP-Aufrufe. Die update_ticket
-Methode sendet eine PUT-Anfrage an https://<domain>.freshdesk.com/api/v2/tickets/<id>
mit dem JSON-Payload der zu ändernden Felder. Die find_tickets
-Methode verwendet GET auf /api/v2/tickets
mit Query-Parametern (alternativ könnten Sie /api/v2/search/tickets
für komplexere Suchen aufrufen). Die Freshdesk API erfordert Basic Auth: Ihr API-Schlüssel (aus Ihrem Freshdesk-Profil) wird als Benutzername und ein beliebiges Passwort (oft nur „X“) als Passwort verwendet.
Wichtige Schritte zur Integration von Freshdesk:
- API-Zugriff konfigurieren: Melden Sie sich bei Freshdesk an und holen Sie sich Ihren API-Schlüssel aus dem Profil (dieser Schlüssel wird zur Authentifizierung von API-Anfragen verwendet). Notieren Sie sich auch Ihre Freshdesk-Domain (die Subdomain in Ihrer Freshdesk-URL).
- Adapter implementieren: Erstellen Sie eine
class
FreshdeskAdapter
, dieTicketSystemAdapter
erweitert, und implementieren Sieupdate_ticket
,find_tickets
undfind_first_ticket
. Verwenden Sie in diesen Methoden die REST-API-Endpunkte von Freshdesk (z. B.GET /api/v2/tickets
undPUT /api/v2/tickets/{id}
). - OTAI konfigurieren: Aktualisieren Sie die
config.yml
von OTAI, um denFreshdeskAdapter
und seine Einstellungen (wiefreshdesk_domain
undfreshdesk_api_key
) aufzunehmen. Dank des Dependency-Injection-Setups von OTAI wird der neue Adapter zur Laufzeit geladen. - Klassifizierung ausführen: Starten Sie Open Ticket AI (z. B. über
python -m open_ticket_ai.src.ce.main start
). Sobald neue Tickets abgerufen werden, klassifiziert die Pipeline diese und ruft dann IhreFreshdeskAdapter.update_ticket(...)
-Methode auf, um die vorhergesagte Warteschlange oder Priorität zurück in Freshdesk zu schreiben.
Mit diesem benutzerdefinierten Adapter durchlaufen Freshdesk-Tickets die OTAI-Pipeline genau wie bei jedem anderen Ticketsystem. Sobald OTAI eine Warteschlangen-ID oder Priorität zuweist, überträgt der update_ticket
-Aufruf diese Information über die API zurück an Freshdesk. Dies ermöglicht es Freshdesk-Benutzern, die KI-Modelle von OTAI für die automatisierte Ticket-Klassifizierung zu nutzen, während sie weiterhin innerhalb der Freshdesk-Plattform arbeiten. Die flexible REST API von Freshdesk (die das Suchen, Auflisten, Erstellen und Aktualisieren von Tickets unterstützt) macht diese Integration unkompliziert. Indem Entwickler dem OTAI-Adapter-Muster und den Freshdesk-API-Konventionen folgen, können sie eine KI-gesteuerte Ticket-Triage nahtlos in Freshdesk einbetten, ohne auf proprietäre Cloud-KI angewiesen zu sein – und dabei auf Wunsch alle Daten lokal halten.
Referenzen: Die Dokumentation von Open Ticket AI erläutert die Adapter-Architektur und die TicketSystemAdapter
-Schnittstelle. Die OTAI-Architekturübersicht zeigt den Adapter-Schritt in der Pipeline. Der API-Leitfaden und die Entwickler-Blogs von Freshdesk dokumentieren, wie man sich authentifiziert (mit einem API-Schlüssel) und Ticket-Endpunkte aufruft. Zusammen skizzieren diese Quellen die Schritte zum Erstellen einer benutzerdefinierten Freshdesk-Integration.