Export von Attachments

Hilfe zu Znuny Problemen aller Art
Locked
ProfHastig
Znuny newbie
Posts: 16
Joined: 21 Jan 2009, 15:44

Export von Attachments

Post by ProfHastig »

Hallo OTRS-Gemeinde,

wir arbeiten derzeit mit einem eigenen Export-Tool das uns die OTRS-Tickets in ein Servicecentersystem übermittelt und entsprechende Lösungen wieder einstellt.
Leider ist uns noch nicht gelungen evtl. angehängte Attachments auszugeben.
Deshalb die Frage an das Forum, hat dies schon jemand mit der API und dem StdAttachmentLookup Befehl versucht?

Ist es möglich diese Attachments als Datei auszugeben?

Vielen Dank für Eure Hilfe.
W2K3 R2 x64 Edition/ Apache 2.2 / OTRS 2.3.2 / MySQL / DB2
jojo
Znuny guru
Posts: 15020
Joined: 26 Jan 2007, 14:50
Znuny Version: Git Master
Contact:

Export von Attachments

Post by jojo »

Probiers mal mit:

Code: Select all

ArticleAttachmentIndex()
    get article attachment index as hash (ID => hashref (Filename, Filesize, ContentID (if exists), ContentAlternative(if exists) ))

        my %Index = $TicketObject->ArticleAttachmentIndex(
            ArticleID => 123,
            UserID    => 123,
        );
und

Code: Select all

ArticleAttachment()
    get article attachment (Content, ContentType, Filename and optional ContentID, ContentAlternative)

        my %Attachment = $TicketObject->ArticleAttachment(
            ArticleID => 123,
            FileID    => 1,
            UserID    => 123,
        );
Weitere Infos: http://dev.otrs.org/cvs/Kernel/System/T ... ticle.html
"Production": OTRS™ 8, OTRS™ 7, STORM powered by OTRS
"Testing": ((OTRS Community Edition)) and git Master

Never change Defaults.pm! :: Blog
Professional Services:: http://www.otrs.com :: enjoy@otrs.com
ProfHastig
Znuny newbie
Posts: 16
Joined: 21 Jan 2009, 15:44

Export von Attachments

Post by ProfHastig »

Hallo JoJo,
vielen Dank für Deine schnelle Antwort, mußte dass jetzt erst mal ausprobieren.

Leider klappt das nicht so ganz. da das Attachment zwar eingelesen wird, aber danach irgendwie nicht ansprechbar ist.
Habe dann aber noch eine Routine aus der Ticket-Library gefunden: ArticleStorageFS.pm
Dort wird eigentlich genau das gemacht was ich brauche, leider habe ich auch hier Probleme mit dem Ansprechen der Übergabevariablen, hier die originale Version:

Code: Select all

   # write attachment content to fs
    if (
        !$Self->{MainObject}->FileWrite(
            Directory  => $Param{Path},
            Filename   => $Param{Filename},
            Mode       => 'binmode',
            Content    => \$Param{Content},
            Permission => '664',
        )
meine Abwandlung davon sieht jetzt so aus:

Code: Select all

# START write attachment content type to fs
			my $exportcontent = '';
			if ($Row[9]) {		$exportcontent = $Row[9];			
				my $Path =$tmpDir ;
				my $Filename = '';
				if ($Row[20]) {		
					$Filename = $Row[20];
					print " Filename: $Path $Filename \n";
				}

            if ($Row[9]){
				my ( $Self, %Param ) = @_;
				    # define path
				   $Param{Path} = $Path;
				   $Param{Filename} = $Filename;
				   $Param{Content} = $exportcontent;

				!$Self->{MainObject}->FileWrite(
		            Directory  => $Param{Path},
				    Filename   => $Param{Filename},
		            Mode       => 'binmode',
				    Content    => \$Param{Content},
		            Permission => '664',
				)
				}
Leider bricht mehr das ganze mit der folgenden Fehlermeldung ab:

Code: Select all

Can't call method "FileWrite" on an undefined value at export_tickets_01.pl
line 179.
Wobei Line 179 = dem Aufruf für das Filewrite ist.
Ich weiss das ganze ist etwas hanebüchen, aber leider bin ich nicht mit OOP großgeworden.
W2K3 R2 x64 Edition/ Apache 2.2 / OTRS 2.3.2 / MySQL / DB2
Andre Bauer
Znuny guru
Posts: 2189
Joined: 08 Dec 2005, 17:01
Znuny Version: 5.0.x
Real Name: André Bauer
Company: Magix Software GmbH
Location: Dresden
Contact:

Export von Attachments

Post by Andre Bauer »

Speichert ihr die Anhänge denn derzeit in der DB?

Wenn ja, warum stellt ihr nicht einfach auf ArticleStoreageFS um?

Dann werden die Anhänge vonn allein im Filesystem gespeichert.

Dann anhand der der TicketID darauf zuzugreifen, sollte nicht so schwer sein...
Prod: Ubuntu Server 16.04 / Zammad 1.2

DO NOT PM ME WITH OTRS RELATED QUESTIONS! ASK IN THE FORUMS!

OtterHub.org
ProfHastig
Znuny newbie
Posts: 16
Joined: 21 Jan 2009, 15:44

Export von Attachments

Post by ProfHastig »

Hallo monotek,

ja die Anlagen liegen alle in der DB2, diese wird per TSM gesichert und deshalb sollte das auch so bleiben.
Es sei denn, der obige Befehl kann nicht verwendet werden. Das wäre dann ein guter Grund umzustellen.
W2K3 R2 x64 Edition/ Apache 2.2 / OTRS 2.3.2 / MySQL / DB2
ProfHastig
Znuny newbie
Posts: 16
Joined: 21 Jan 2009, 15:44

Export von Attachments

Post by ProfHastig »

Jetzt hab ichs, das hilfreiche Skript des Kollegen Dennis (http://www.otrs-forum.de/viewtopic.php?f=18&t=993) hat mich auf die Idee gebracht, einfach eine eigene Routine für die Ausgabe zu machen:

Code: Select all

				   $Param{Path} = $Path;
				   $Param{Filename} = $Filename;
				   $Param{Content} = $exportcontent;
   				   $Param{ContentType} = $Row[10];
   				   $Param{ArticleID} = $Row[21];
					if (open (DATA, "> $Param{Path}/$Param{Filename}")) {
						binmode(DATA);
						print DATA $Param{Content};
						close (DATA);
					}
Die Variablen sind zwar doppelt deklariert, aber mithilfe des binmode Befehls, klappt es jetzt wunderbar.
Locked