# Implemeteringsguide för &kopete;s insticksprogram Skicka genom

Med början i &kopete; 1.0, levereras &kopete; med ett insticksprogram som kallas Skicka genom. Skicka genom låter dig skicka inkommande eller utgående meddelanden genom ett externt skript eller program. Ett inkommande meddelande skickas via programmet innan det når ditt chattfönster, medan utgående meddelanden skickas via programmet innan de går vidare till Internet. Skicka genom kan ta emot text på en av tre former:

Enkel meddelandetext

  Meddelandets text, som enkel &ascii;-text

&HTML;-meddelandetext

  Meddelandets text med &HTML;, som det skulle se ut om din chattpartner hade skickat HTML till dig, som återges i chattfönstret.

Fullständigt &XML;-meddelande

  Ett &XML;-dokument som beskriver meddelandets hela karaktäristik, inklusive &HTML;-meddelandetext

Det här dokumentet beskriver det speciella med &XML;-formatet, och hur man skriver ett program som kan hantera det.

## &XML;-utdata

Här är ett exempel på vad ett program kan ta emot via standardinmatningen:

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

Denna &XML; är fritt baserad på den XSD som används för chattstilar från Kopetes hemsida. Koden representerar ett meddelande. Det finns ett antal saker att notera:

- Egenskapen "timestamp" i elementet "message" har standardformatet ISO 8601.

- Egenskapen "protocolIcon" i elementet "contact" väljes på följande sätt:

  1. Om kontaktobjektet har en fotoegenskap inställd, används den sökvägen.

  2. Om inte, efterfrågas en bildsökväg i kontaktens metakontakt, och den används oberoende om den är tom eller inte.

- Egenskaperna "color" och "bgcolor" i elementet "body" är tomma strängar om de inte är inställda i Kopete. De har webbfärgformat.

- Innehållet i elementet "body" har "<" skyddat, så att det inte blandas ihop med själva &XML;-strukturren. Uppenbarligen måste man konvertera "&lt;" till "<" för att tolka texten som HTML.

## &XML;-indata

Ditt program tar emot &XML; via standardinmatningen, har möjlighet att ändra den, och måste därefter skicka tillbaka den till &kopete; via standardutmatningen. Om programmet ändrar följande element, kommer den interna kunskapen som &kopete; har om meddelandet ändras för att motsvara dina ändringar.

- Egenskapen "timestamp" i "message" men inte andra tidegenskaper

- Egenskapen "subject" i "message"

- Egenskapen "type" i "message"

- Egenskapen "importance" i "message"

- Egenskapen "color" i "body". Den anges oftast som ett webbfärgnummer, men kan anges som ett namn. Namn definierade av SVG accepteras av QColor i Qt 4, så de är de enda namn som kan användas.

- Egenskapen "bgcolor" i "body": samma beteende som "color"

- Innehållet i elementet "body"

Om du ändrar element som inte nämns ovan eller deras egenskaper, får ändringarna av dessa element ingen effekt.

## Tillåtna värden

Några egenskaper har vissa tillåtna värden. Utdata från insticksprogrammet Skicka genom kommer alltid att ha giltiga värden. Om ditt program väljer att ändra dessa egenskaper, måste de förbli giltiga. Om inte, är &kopete;s beteende odefinierat.

Egenskapen "route" i elementet "message"

  Måste vara "inbound", "outbound", or "internal"

Egenskapen "type" i elementet "message"

  Måste vara "action" eller "normal"

Egenskapen "importance" i elementet "message"

  Måste vara "0" för låg, "1" för normal, och "2" för hög

Egenskapen "dir" i många element

  Måste vara "ltr" för vänster-till-höger eller "rtl" för höger-till-vänster