# Implementatiegids voor de Pipes-plugin van &kopete;

Beginnend met &kopete; 1.0, wordt &kopete; geleverd met een plugin genaamd Pipes. Pipes stelt u in staat om via een pipe in- of uitgaande berichten te transporteren door een extern script of programma. Een inkomend bericht zal via de pipe door het programma gaan alvorens het uw chat-venster bereikt, terwijl uitgaande berichten via de pipe door het programma gaan alvorens ze verzonden worden over het internet. Pipes kunnen tekst ontvangen in drie vormen:

Platte tekst gedeelte

- Het hoofdgedeelte van het bericht in platte &ascii; tekst

&html; tekst gedeelte

- Het hoofdgedeelte van het bericht in &html;, alsof uw chat-peer HTML naar u gezonden heeft, die zal worden weergegeven in het chat-venster

volledig &xml; bericht

- Een &xml;-document dat alle karakteristieken van het bericht beschrijft, inclusief het &html; hoofdgedeelte.

Dit document beschrijft de specifieke zaken van het &xml;-formaat en hoe een programma te schrijven dat dit kan behandelen.

## &xml;-uitvoer

Hier is een voorbeeld van wat een programma zal ontvangen in zijn standaard invoer stream:

    <?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>

Deze &xml; is losjes gebaseerd op de XSD die gebruikt wordt voor chat-stijlen gevonden op de Kopete website. Deze code stelt één bericht voor. Er zijn een paar dingen op te merken:

- Het attribuut "timestamp" in het "message"-element is in ISO 8601 standaard formaat.

- Het attribuut "protocolIcon" in het "contact"-element is als volgt gekozen:

  1. Als in het Contact-object de foto-eigenschap is ingesteld, dan wordt dat pad gebruikt.

  2. Zo niet, dan wordt het MetaContact van Contact gevraagd naar een afbeeldingspad en dat wordt gebruikt onafhankelijk van of het nul is of niet.

- De attributen "color" en "bgcolor" in het "body"-element zijn lege tekenreeksen als zij niet in Kopete zijn ingesteld. Zij zijn in "web color format".

- De inhoud in het "body"-element heeft "<" escaped, zodat het niet verwart wordt met de actuele &xml;-structuur. Het is duidelijk dat het juist interpreteren van de body als HTML, dat de "&lt;"'s geconverteerd moeten worden naar "<"'s.

## &xml;-invoer

Uw programma ontvangt &xml; in zijn standaard invoerstroom, waarbij het de mogelijkheid heeft het te wijzigen en het dan teruggeven aan &kopete; door middel van zijn standaard uitvoerstroom. Als uw programma de volgende elementen wijzigt, dan zal de interne kennis die &kopete; heeft van het bericht gewijzigd zijn om uw wijzigingen weer te geven.

- "message"-attribuut "timestamp" maar geen andere tijdattributen

- "message" attribuut "subject"

- "message" attribuut "type"

- "message" attribuut "importance"

- "body" attribuut "color". Dit wordt gewoonlijk ingesteld op een webkleurnummer, maar kan op een naam worden ingesteld. De namen gedefinieerd door SVG worden geaccepteerd door QColor in Qt 4, zodat zij de enige namen zijn die kunnen worden gebruikt.

- "body" attribuut "bgcolor" — zelfde gedrag als "color"

- inhoud van element "body"

Als u elementen wijzigt of hun niet hierboven genoemde attributen, dan zullen de wijzigingen van die elementen geen effect hebben.

## Acceptabele waarden

Sommige attributen hebben bepaalde acceptabele waarden. De uitvoer van de Pipes-plugin zal altijd juiste waarden hebben. Als uw programma er voor kiest deze attributen te wijzigen, dan moeten ze juist zijn. Zo niet, dan is het gedrag van &kopete; ongedefinieerd.

Attribuut "route" in element "message"

- Moet zijn "inbound", "outbound" of "internal"

Attribuut "type" in element "message"

- Moet "action" zijn of "normal"

Attribuut "importance" in element "message"

- Moet "0" zijn voor laag, "1" voor normaal en "2" for hoog

Attribuut "dir" in veel elementen

- Moet "ltr" zijn voor links-naar-rechts of "rtl" voor rechts-naar-links