Guía de Integración de OTOBO, Znuny y OTRS
Para la integración con OTOBO, Znuny u OTRS, estamos utilizando nuestra biblioteca de cliente python otobo.
Biblioteca de Cliente Python para OTOBO
Un cliente Python asíncrono para interactuar con la API REST de OTOBO. Construido con httpx
y pydantic
para seguridad de tipos y facilidad de uso.
Características
Peticiones HTTP asíncronas usando
httpx.AsyncClient
Modelos Pydantic para la validación de datos de petición y respuesta
Operaciones CRUD completas para tickets:
TicketCreate
TicketSearch
TicketGet
TicketUpdate
TicketHistoryGet
Manejo de errores a través de
OTOBOError
para errores de la APIMétodo de utilidad
search_and_get
para combinar resultados de búsqueda con una recuperación detallada
Instalación
Instalar desde PyPI:
pip install otobo
Inicio Rápido
Configurar los Webservices de OTOBO:
Crea un nuevo servicio web en OTOBO con la siguiente configuración: Consulta la Guía de Instalación.
Crear un nuevo Agente
Crea un nuevo Agente de Otobo con una contraseña segura y otórgale los permisos necesarios para la tarea que deseas realizar.
1. Configurar el cliente
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. Inicializar el cliente
import logging
from otobo import OTOBOClient
logging.basicConfig(level=logging.INFO)
client = OTOBOClient(config)
3. Crear 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. Buscar y recuperar 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. Actualizar un ticket
from otobo import TicketUpdateParams
update_params = TicketUpdateParams(
TicketID=response.TicketID,
Ticket={"State": "closed"}
)
await client.update_ticket(update_params)
6. Obtener el historial de 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. Búsqueda y obtención combinadas
from otobo import FullTicketSearchResponse
full_res: FullTicketSearchResponse = await client.search_and_get(search_params)