otrs-soap-python
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
otrs-soap-python [2011/09/22 14:54] – angelegt jenad | otrs-soap-python [2024/08/07 13:34] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | e | + | === Zugriff auf die OTRS-Klassen via SOAP und - natürlich Python, was sonst === |
+ | |||
+ | == Motivation == | ||
+ | |||
+ | Ich möchte gerne Tickets in OTRS mit python anlegen und auslesen. Damit kann ich einfache Support-Schnittstellen in User-Portale einbauen. | ||
+ | |||
+ | == Installation OTRS mit SOAP== | ||
+ | |||
+ | 1. OTRS ist Perl (uaaarg), bitte zunächst die Installationsanweisungen für OTRS befolgen und OTRS soweit testen. | ||
+ | |||
+ | * Perl Module installieren | ||
+ | *Perl SOAP installieren | ||
+ | * siehe unten, Bug in Soap-lite!! | ||
+ | * einige Perl-Module müssen installiert werden (Abhängigkeiten SoapLite) | ||
+ | *SOAP in OTRS freischalten (Username und Passwort in Sysconfig setzen) | ||
+ | |||
+ | 2. Ich habe OTRS-3.0.6 unter CentOS-5.6-x64 im Einsatz. Erste Versuche mit SOAPpy scheitern an dieser Fehlermeldung: | ||
+ | |||
+ | no element found at line 1, column 0, byte -1 at / | ||
+ | line 187 | ||
+ | |||
+ | das ist dieser Bug: http:// | ||
+ | |||
+ | und wird mit diesem Patch behoben: | ||
+ | |||
+ | http:// | ||
+ | |||
+ | mittlerweile habe ich auf OTRS-3.1.4 geupgraded, alle nachfolgenden Codes funktionieren mit dieser Version | ||
+ | |||
+ | == Weiter auf Client-Seite mit Python == | ||
+ | |||
+ | wir gehen davon aus, das otrs mit SOAP funktioniert | ||
+ | |||
+ | 1. OTRS kann KEIN WSDL!! Dh wir können keine Python-WSDL-Module verwenden (zB. suds), sondern brauchen die kompliziertere SOAPpy | ||
+ | |||
+ | 2. Ich habe ein WSDL-File auf dem OTRS-Server abgelegt. Darin definiere ich die Services, dann können wir in SOAPpy auf WSDL umschalten. Das WSDL-File kann hier eingesehen werden und ist eine Kopie vom OTRS User Forum (http:// | ||
+ | |||
+ | http:// | ||
+ | |||
+ | == erste Tests - endlich Code == | ||
+ | |||
+ | <code python> | ||
+ | # | ||
+ | |||
+ | from SOAPpy import WSDL | ||
+ | wsdlfile=' | ||
+ | server=WSDL.Proxy(wsdlfile) | ||
+ | print server.methods.keys() | ||
+ | |||
+ | # dieses Ticket habe ich vorher in OTRS angelegt und mir die Ticketnummer kopiert: | ||
+ | TicketNr=' | ||
+ | |||
+ | tickets=server.Dispatch(' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | TicketNr, | ||
+ | ' | ||
+ | 1) | ||
+ | |||
+ | |||
+ | print tickets | ||
+ | </ | ||
+ | |||
+ | Als Ergebnis erhalte ich dieses Array: | ||
+ | |||
+ | < | ||
+ | |||
+ | das scheint ein Struct mit Typ DispatchResponse zu sein, es wird die TicketNr und die TicketID zurückgegeben, | ||
+ | |||
+ | soweit erstmal, SOAP funzt prinzipiell, | ||
+ | |||
+ | |||
+ | == ein neues Ticket anlegen == | ||
+ | |||
+ | <code python> | ||
+ | title = "My Test Ticket 2 via SOAP and Python" | ||
+ | myfrom | ||
+ | |||
+ | ticketID=server.Dispatch(' | ||
+ | ' | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | ) | ||
+ | |||
+ | print ticketID | ||
+ | </ | ||
+ | |||
+ | == einen Artikel zu diesem Ticket anlegen == | ||
+ | |||
+ | <code python> | ||
+ | body=" | ||
+ | |||
+ | artID=server.Dispatch(' | ||
+ | ' | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ), | ||
+ | |||
+ | ) | ||
+ | |||
+ | print artID | ||
+ | </ | ||
+ | |||
+ | die artID war aber None, keine Ahnung warum, jedenfalls habe ich jetzt ein neues Ticket im OTRS mit einem zugehörigen Record. | ||
+ | |||
+ | == nützliche Links == | ||
+ | |||
+ | http:// |
otrs-soap-python.1316696092.txt.gz · Zuletzt geändert: 2024/08/07 13:34 (Externe Bearbeitung)