# Handbuch zur Implementierung für das Modul Umleitung

Ab Version 1.0 enthält &kopete; ein Modul namens Umleitung. Mit diesem Modul können ein- oder ausgehende Nachrichten durch ein externes Skript oder Programm geleitet werden. Durch das Programm geleitet werden alle eingehen Nachrichten, ehe sie das Chatfenster erreichen und alle ausgehenden Nachrichten, ehe sie ins Internet geschickt werden. Für Umleitungen gibt es drei verschiedene Format für den Text:

Unformatierter Text

  Die eigentliche Nachricht im &ascii;-Textformat

&HTML;-Text

  Die eigentliche Nachricht im &HTML;-Format, die für die Anzeige im Chatfenster gerendert wird

Vollständige &XML;-Nachricht

  Ein &XML;-Dokument mit einer vollständigen Beschreibung der Nachricht einschließlich des &HTML;-Textteils

Dieses Dokument beschreibt die Besonderheiten des &XML;-Formats und gibt Hinweise, wie ein Programm zur Bearbeitung dieses Formats zu schreiben ist.

## &XML;-Ausgabe

Ein Beispiel für den Datenstrom, den ein Programm auf der Standardeingabe empfängt:

    <?xml version=1.0 encoding=ISO-8859-1?>
    <message subject=""
            route=outbound
            importance=1
            formattedTimestamp=11:06:46 am
            timestamp=Sat Dec 1 11:06:46 2007
            type=normal
            mainContactId=spacemonkey1234
            time=11:06 am >
            <from>
                    <contact contactId=tdurden
                            protocolIcon=aim_protocol
                            userPhoto=/home/kde-devel/.kde4/share/apps/kopete/oscarpictures/tdurden.jpg >
                            <contactDisplayName dir=ltr text=tdurden />
                            <metaContactDisplayName dir=ltr
                                    text=Tyler />
                    </contact>
            </from>
            <to>
                    <contact contactId=spacemonkey1234
                            protocolIcon=aim_protocol
                            userPhoto=/home/kde-devel/.kde4/share/apps/kopete/avatars/User/7e542903e0ac7519a7496e85f5a5b99d.png >
                            <contactDisplayName dir=ltr text=spacemonkey1234 />
                            <metaContactDisplayName dir=ltr text=Robert Paulson />
                    </contact>
                    </to>
            <body dir=ltr
                    bgcolor=#000000
                    color=#000000 >
                    &lt;span style= color:#000000;
    >hey&lt;/span
    ></body>
    </message>

Diese Daten im &XML;-Format basieren mehr oder weniger auf der XSD für Chatstile von der Kopete Webseite. Dieser Quelltext stellt eine Nachricht dar. Es gibt einige Dinge zu beachten:

- Das Attribut timestamp im Element message hat das Standardformat der ISO 8601.

- Das Attribut protocolIcon im Element contact wird folgendermaßen bestimmt:

  1. Ist für das Kontaktobjekt das Attribut userPhoto gesetzt, wird dieses verwendet.

  2. Fehlt das Attribut, wird der Pfad zu einem Bild des Metakontakts für diesen Kontakt verwendet, unabhängig davon, ob dieser Pfad existiert.

- Die Attribute „color“ und „bgcolor“ im Element „body“ sind leere Zeichenfolgen, sofern in Kopete kein Wert eingesetzt wurde. Dieser Wert hat das Format für Webfarben.

- Im Text innerhalb des Elements „body“ ist das Zeichen „<“ maskiert, da das unmaskierte Zeichen für die &XML;-Struktur verwendet wird. Um den Text korrekt als HTML zu interpretieren, muss „&lt;“ in „<“ umgewandelt werden.

## &XML;-Eingabe

Ihr Programm empfängt &XML;-Daten auf der Standardeingabe, kann sie bearbeiten und die Daten wieder auf der Standardausgabe an &kopete; übergeben. Wenn Ihr Programm folgende Elemente verändert, wird das von &kopete; verarbeitet:

- Attribut „timestamp“ im Element „message“, aber keine anderen Attribute für Datum

- Attribut „subject“ im Element „message“

- Attribut „type“ im Element „message“

- Attribut „importance“ im Element „message“

- Attribut „color“ im Element „body“. Dieses Attribut enthält normalerweise die Nummer einer Webfarbe, es können aber auch Namen für Farben benutzt werden. SVG-Namen werden von der Funktion QColor in Qt 4 korrekt verarbeitet, daher sollten nur diese Bezeichnungen verwendet werden.

- „body“ Attribut „bgcolor“ im Element „body“ — hier gelten die gleichen Regeln wie für das Attribut „color“

- Inhalt des Elements „body“

Die Veränderung von hier nicht genannten Elementen und ihrer Attribute werden von Kopete nicht berücksichtigt und verworfen.

## Zulässige Werte

Für einige Attribute sind nur bestimmte Werte erlaubt. In der Ausgabe des Moduls „Umleitung“ sind nur zulässige Werte enthalten. Wenn diese Werte im Programm geändert werden, müssen sie immer noch gültig bleiben. Anderfalls ist das Verhalten von &kopete; nicht definiert.

Attribut route im Element message

  Zulässige Werte: inbound, outbound, oder internal

Attribute type im Element message

  Zulässige Werte: action oder normal

Attribut importance im Element message

  Zulässige Werte: 0 für niedrig, 1 für normal und 2 für hoch

Attribut dir in vielen Elementen

  Zulässige Werte: ltr für Schriften, die von links nach rechts geschrieben werden und rtl für Schriften, die von rechts nach links geschrieben werden