# Guide d'implémentation du module « Transmissions » de &kopete;

À partir de la version 1.0, &kopete; fournit un module appelé « Transmissions ». Les tubes (pipes) vous permettent de rediriger des messages entrant et sortant vers un script ou un exécutable. Un message entrant sera redirigé à travers un exécutable avant qu'il atteigne votre fenêtre de discussion, tandis que les messages sortant seront redirigés vers l'exécutable avant qu'ils ne soient envoyés sur internet. Les tubes peuvent recevoir du texte dans l'une des trois formes :

Corps de texte brut

- Le corps du message, en texte &ascii; brut

Corps de texte en &html;

- Le corps du message, en &html;, comme il apparaîtrait si votre correspondant vous avait envoyé du &html;, qui sera rendu dans la fenêtre de conversation

Message complet en &xml;

- Un document &xml; qui décrit toutes les caractéristiques du message, y compris le corps du message en &html;

La plupart du temps, vous utiliserez probablement les options corps en texte brut ou en &html; Ils peuvent être utilisés par des programmes comme des traducteurs ou des « summarizers ». Le format &xml; n'est approprié que pour une utilisation avec un programme ou un script écrit spécifiquement pour fonctionner avec ce module. Si vous souhaitez écrire un programme ou un script qui fonctionne avec ce module, consultez la documentation plus détaillée.

## Sortie &xml;

Voici un exemple de ce que recevra un programme sur son entrée standard :

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

Cet &xml; est fondé sur XSD, utilisé pour les styles de discussion que l'on trouve sur le site web de Kopete. Ce code représente un message. Il y a quelques points à noter :

- l'attribut « timestamp » dans l'élément « message » est au format standard ISO 8601 ;

- l'attribut « protocolIcon » dans l'élément « contact » est choisi comme suit :

  1. si l'objet contact possède une propriété photo, cet emplacement sera utilisé.

  2. sinon, le MetaContact du contact est demandé en tant qu'emplacement vers l'image, et sera utilisé, qu'il soit vide ou non.

- les attributs « color » et « bgcolor » dans l'élément « body » sont des chaînes vides s'ils ne sont pas configurés dans Kopete. Ils sont au format des couleurs web ;

- les « < » sont échappé dans le contenu qui se trouve à l'intérieur de l'élément « body ». Il n'y aura donc pas confusion avec la véritable structure &xml;. Évidemment, pour interpréter correctement le corps en HTML, on devra convertir les « &lt; » en « < ».

## Entrée &xml;

Votre programme recevra du &xml; sur son entrée standard. Il aura l'opportunité de le modifier, et ensuite le renvoyer à &kopete; par le biais de sa sortie standard. Si votre programme modifie les éléments suivants, la connaissance interne qu'à &kopete; du message sera modifiée pour refléter vos modifications.

- attribut de message « timestamp » mais pas d'autres attributs temporels ;

- attribut de message « sujet » ;

- attribut de message « type » ;

- attribut de message « importance » ;

- attribut de body « color ». Ceci est habituellement égal à un numéro de couleur web, mais peut aussi être un nom. Les noms définis par SVG sont acceptés par QColor dans Qt4, donc ce sont les seuls noms qui peuvent être utilisés ;

- attribut de body « bgcolor » — même comportement que « color » ;

- contenu de l'élément body.

Si vous modifiez des éléments ou leurs attributs non mentionnés ci-dessus, vos modifications sur ces éléments n'auront aucun effet.

## Valeurs acceptées

Des attributs on certaines valeurs acceptées. La sortie du module « Transmission » aura toujours des valeurs autorisées. Si votre programme choisit de modifier ces attributs, ils doivent rester autorisés. Si ce n'est pas le cas, le comportement de &kopete; est indéfini.

Attribut « route » dans l'élément « message »

- doit être « inbound », « outbound » ou « internal »

Attribut « type » dans l'élément « message »

- Doit être « action » ou « normal »

Attribut « importance » dans l'élément « message »

- Doit être « 0 » pour basse, « 1 » pour normale et « 2 » pour élevée.

Attribut « dir » dans de nombreux éléments

- Doit être « ltr » pour gauche à droite, ou « rtl » pour droite à gauche.