SOAP Dynamic Field füllen mittels rpc.pl

Hilfe zu OTRS Problemen aller Art
Post Reply
arktik
Znuny newbie
Posts: 54
Joined: 29 Jul 2010, 11:24
Znuny Version: 3.3.4

SOAP Dynamic Field füllen mittels rpc.pl

Post by arktik »

Hallo zusammen,

ich bin gerade Dabei unser aktuelles Ticketsystem auf OTRS umzustellen. Hierbei nutze ich die SOAP Schnittstelle von OTRS.

Leider habe ich keine Möglichkeit gefunden, die Dynamischen Felder automatisch zu befüllen. Mein Code mittels PHP zum testen sieht aktuell so aus.

Code: Select all

#Soap verbindung aufbauen
$client = new SoapClient(null, array('location' => $url,
'uri'		=> "Core",
'trace'	=> 1,
'login'	=> $user,
'password'	=> $pwd,
'style'	=> SOAP_RPC,
'use'		=> SOAP_ENCODED));


$TicketID = $client->__soapCall("Dispatch", array($user, $pwd,
"TicketObject", "TicketCreate",
"ID", "74",
"TN", "9901",
"Title", "Testticketid",
"Queue", "Postmaster",
"Lock", "unlock",
"PriorityID", 2,
"State", "new",
"CustomerUser", "root@localhost",
"OwnerID",	1,
"UserID",	1,
));
echo "TicketID: $TicketID \n";
echo "<br>\n";

#Ticketnummer Rückgeben lassen
$ticketnr = $client->__soapCall("Dispatch", array($user, $pwd,
"TicketObject", "TicketNumberLookup",
"TicketID",	$TicketID,
));


#Artikel einfügen funktioniert in dieser art

$from = "l.pollok@test.local";
$to = "l.pollok@test.local";
$message = "Dies ist ein Test Artikel Test text";
$subject = "Test Betreff 2";
$articleid = $client->__soapCall("Dispatch", array($user, $pwd,
					"TicketObject", "ArticleSend",
				    "TicketID"         , $TicketID,
			        "ArticleType"      , "email-external",
			        "SenderType"      , "agent",
			        "From"             , $from,
			        "To"               , $to,
			        "ReplyTo"          , "",
			        "Subject"          , "[ Ticket#: ".$ticketnr." ] ".$subject,
			        "Body"             , $message,
			        "ContentType"      , "text/html; charset=utf-8",
			        "Charset"          , "utf-8",
			        "HistoryType"      , "EmailCustomer",
			        "HistoryComment"   , "generated by OTRSInterface-Class",
			        "UserID"           , 1,
			        "NoAgentNotify"    , 1,
			        "MimeType"         , "text/plain",
			        "Loop"             , 0,
			    	));


#Dynamic Field befüllen
$dynamicfield = $client->__soapCall("Dispatch", array($user, $pwd,
					"TicketObject", "DynamicFields",
					"TicketID"  , $TicketID,
					"Name", "Termin",
					"Value", "01.07.2012",
					));
So sieht die Fehler ausgabe im Apache error log aus:

Code: Select all

[Thu Jan 10 10:49:03 2013] [error] [client 192.168.4.112] PHP Fatal error:  Uncaught SoapFault exception: [soap:Server] Can't locate object method "DynamicFields" via package "Kernel::System::Ticket" at /opt/otrs/bin/cgi-bin/rpc.pl line 123.\n in /var/www/import/soap_art.php:85\nStack trace:\n#0 /var/www/import/soap_art.php(85): SoapClient->__soapCall('Dispatch', Array)\n#1 {main}\n  thrown in /var/www/import/soap_art.php on line 85
Ich habe mich hierbei an die API Dokumentation gehalten.

Menüpunkt: Kernel::GenericInterface::Operation::Ticket::TicketCreate

DynamicField => [ # optional
{
Name => 'some name',
Value => $Value, # value type depends on the dynamic field
},


Was genau läuft hier falsch.

OTRS Version 3.1.12
OTRS 3.3.4 Produktiv
OTRS 3.3.4 Dev und Test
reneeb
Znuny guru
Posts: 5018
Joined: 13 Mar 2011, 09:54
Znuny Version: 6.0.x
Real Name: Renée Bäcker
Company: Perl-Services.de
Contact:

Re: SOAP Dynamic Field füllen mittels rpc.pl

Post by reneeb »

DynamicFields ist keine erlaubte Operation des Ticket-Objekts (die Methode gibt es einfach nicht). Dein Interface muss den Zugriff auf weitere Objekte erlauben. Wie das genau aussehen müsste, weiß ich auf Anhieb auch nicht. Müsste ich mir näher anschauen (habe ich aber im Moment keine Zeit für, sorry).
Perl / Znuny development: http://perl-services.de
Free Znuny add ons from the community: http://opar.perl-services.de
Commercial add ons: http://feature-addons.de
Post Reply