Benutzer-Werkzeuge

Webseiten-Werkzeuge


otrs-soap-python

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
otrs-soap-python [2011/09/22 14:54] – angelegt jenadotrs-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 /usr/lib/perl5/XML/Parser.pm 
 +  line 187 
 + 
 +das ist dieser Bug: http://bugs.otrs.org/show_bug.cgi?id=5467 
 + 
 +und wird mit diesem Patch behoben: 
 + 
 +http://users.otrs.com/~mb/SOAP-Lite-0.713_01.tar.gz 
 + 
 +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://forums.otrs.org/viewtopic.php?f=20&t=1257) mit den nötigen Änderungen für unser OTRS: 
 + 
 +http://194.94.30.115/otrs.wsdl 
 + 
 +== erste Tests - endlich Code == 
 + 
 +<code python> 
 +#!/usr/local/bin/python 
 + 
 +from SOAPpy import WSDL 
 +wsdlfile='http://194.94.30.115/otrs.wsdl' 
 +server=WSDL.Proxy(wsdlfile) 
 +print server.methods.keys() 
 + 
 +# dieses Ticket habe ich vorher in OTRS angelegt und mir die Ticketnummer kopiert: 
 +TicketNr='2011030404000012' 
 + 
 +tickets=server.Dispatch('soapusername', 
 +                        'soapstrenggeheimespasswort', 
 +                        'TicketObject', 
 +                        'TicketSearch', 
 +                        'TicketNumber', 
 +                        TicketNr, 
 +                        'UserID', 
 +                        1) 
 + 
 + 
 +print tickets 
 +</code> 
 + 
 +Als Ergebnis erhalte ich dieses Array: 
 + 
 +  <SOAPpy.Types.structType DispatchResponse at -1210679540>: {'s-gensym15': 2011030404000012L, 's-gensym13': 5} 
 + 
 +das scheint ein Struct mit Typ DispatchResponse zu sein, es wird die TicketNr und die TicketID zurückgegeben, die suche nach dem Ticket war also erfolgreich. 
 + 
 +soweit erstmal, SOAP funzt prinzipiell, jetzt gehts in die Details 
 + 
 + 
 +== ein neues Ticket anlegen == 
 + 
 +<code python> 
 +title    = "My Test Ticket 2 via SOAP and Python" 
 +myfrom     = "me@fh-schmalkalden.de" 
 + 
 +ticketID=server.Dispatch('soapuser', 
 +                        'soappasswd', 
 +"TicketObject", "TicketCreate",  
 +"Title",        title,  
 +"Queue",        "Postmaster",  
 +"Lock",         "Unlock",  
 +"PriorityID",   2,  
 +"State",        "new",  
 +"CustomerUser", myfrom,  
 +"OwnerID",      1,  
 +"UserID",       1, 
 +"LockID",
 +
 + 
 +print ticketID 
 +</code> 
 + 
 +== einen Artikel zu diesem Ticket anlegen == 
 + 
 +<code python> 
 +body="Bitte helfen sie mir, mei internet gäht nimmer".decode('utf-8'
 + 
 +artID=server.Dispatch('soapuser', 
 +                        'soappasswd', 
 +"TicketObject",   "ArticleCreate", 
 +"TicketID",       ticketID, 
 +"ArticleType",    "webrequest", 
 +"SenderType",     "customer", 
 +"HistoryType",    "WebRequestCustomer", 
 +"HistoryComment", "created from Python", 
 +"From",           myfrom, 
 +"Subject",        title, 
 +"ContentType",    "text/plain; charset=utf-8", 
 +"Body",           body, 
 +"UserID",         1, 
 +"Loop",           0, 
 +"AutoResponseType", 'auto reply', 
 +"OrigHeader",
 +        'From',myfrom, 
 +        'To','Postmaster', 
 +        'Subject',title, 
 +        ), 
 + 
 +
 + 
 +print artID 
 +</code> 
 + 
 +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://wiki.otrs.org/index.php?title=Create_a_ticket_in_OTRS_from_PHP_via_RPC 
otrs-soap-python.1316696092.txt.gz · Zuletzt geändert: 2024/08/07 13:34 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki