Guide d'intégration OTOBO Znuny OTRS
Pour l'intégration dans OTOBO, Znuny ou OTRS, nous utilisons notre bibliothèque client python otobo.
Bibliothèque Client Python OTOBO
Un client Python asynchrone pour interagir avec l'API REST d'OTOBO. Conçu avec httpx
et pydantic
pour la sécurité des types et la facilité d'utilisation.
Fonctionnalités
Requêtes HTTP asynchrones utilisant
httpx.AsyncClient
Modèles Pydantic pour la validation des données de requête et de réponse
Opérations CRUD complètes pour les tickets :
TicketCreate
TicketSearch
TicketGet
TicketUpdate
TicketHistoryGet
Gestion des erreurs via
OTOBOError
pour les erreurs d'APIMéthode utilitaire
search_and_get
pour combiner les résultats de recherche avec une récupération détaillée
Installation
Installer depuis PyPI :
pip install otobo
Démarrage rapide
Configuration des Webservices OTOBO :
Créez un nouveau service web dans OTOBO avec la configuration suivante : Voir le Guide d'installation.
Créer un nouvel Agent
Créez un nouvel Agent Otobo avec un mot de passe sécurisé et donnez-lui les permissions nécessaires pour ce que vous voulez accomplir.
1. Configurer le client
from otobo import TicketOperation, OTOBOClientConfig
from otobo import AuthData
config = OTOBOClientConfig(
base_url="https://your-otobo-server/nph-genericinterface.pl",
service="OTOBO",
auth=AuthData(UserLogin="user1", Password="SecurePassword"),
operations={
TicketOperation.CREATE.value: "ticket",
TicketOperation.SEARCH.value: "ticket/search",
TicketOperation.GET.value: "ticket/get",
TicketOperation.UPDATE.value: "ticket",
TicketOperation.HISTORY_GET.value: "ticket/history",
}
)
2. Initialiser le client
import logging
from otobo import OTOBOClient
logging.basicConfig(level=logging.INFO)
client = OTOBOClient(config)
3. Créer un ticket
from otobo import (TicketOperation, OTOBOClientConfig, AuthData, TicketSearchParams, TicketCreateParams,
TicketHistoryParams, TicketUpdateParams, \
TicketGetParams, OTOBOClient, OTOBOTicketCreateResponse)
payload = TicketCreateParams(
Ticket={
"Title": "New Order",
"Queue": "Sales",
"State": "new",
"Priority": "3 normal",
"CustomerUser": "customer@example.com"
},
Article={
"Subject": "Product Inquiry",
"Body": "Please send pricing details...",
"MimeType": "text/plain"
}
)
response: OTOBOTicketCreateResponse = await client.create_ticket(payload)
print(response.TicketID, response.TicketNumber)
4. Rechercher et récupérer des tickets
from otobo import TicketSearchParams, TicketGetParams
search_params = TicketSearchParams(Title="%Order%")
search_res = await client.search_tickets(search_params)
ids = search_res.TicketID
for ticket_id in ids:
get_params = TicketGetParams(TicketID=ticket_id, AllArticles=1)
details = await client.get_ticket(get_params)
print(details.Ticket[0])
5. Mettre à jour un ticket
from otobo import TicketUpdateParams
update_params = TicketUpdateParams(
TicketID=response.TicketID,
Ticket={"State": "closed"}
)
await client.update_ticket(update_params)
6. Obtenir l'historique d'un ticket
from otobo import TicketHistoryParams
history_params = TicketHistoryParams(TicketID=str(response.TicketID))
history_res = await client.get_ticket_history(history_params)
print(history_res.History)
7. Recherche et récupération combinées
from otobo import FullTicketSearchResponse
full_res: FullTicketSearchResponse = await client.search_and_get(search_params)