# &kopete; Guía de implementación de complementos Pipes

Comenzando con &kopete; 1.0, &kopete; se maneja con un complemento denominado Pipes. Pipes le permite filtrar mensajes entrantes o salientes hacia ejecutables antes de que esto salga de su ventana de charla, mientras los mensajes salientes serán movidos a la pila antes de que ellos sean enviados por internet. Pipes puede recibir testo en una de las siguientes formas:

Cuerpo de texto plano

  El cuerpo del mensaje, en texto plano &ascii;

Cuerpo de texto &html;

  El cuerpo del mensaje, en &html;, tal y como en una charla se te ha enviado texto en HTML, será dibujado en la ventana de charla

Mensaje completo en &xml;

  Un documento &xml; documento que describe todas las características del mensaje, incluyendo el cuerpo en &html;.

Este documento describe las especificidades del formato &xml;, y como escribir un programa que pueda manejarlo.

## &xml; Salida

Aquí se muestra un ejemplo de como la aplicación recibirá una cadena entrante:

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

Este &xml; está fuertemente basado en el XSD usado para estilos de charlas encontrado en el sitio de Kopete. Éste código representa un mensaje. Hay unos cuantos detalles a remarcar:

- El atributo «timestamp» en el elemento "message" está en el formato estandarizado ISO 8601.

- El atributo «protocolIcon» se encuentra en el elemento «contact» que parecido a:this:

  1. Si el objeto contacto tiene la foto configurada, la ruta es usada.

  2. Si no, los metacontactos son demandados por una ruta para la foto, y lq respuesta suele ser nula o no.

- Los atrinutos «color» y «bgcolor» en el elemento «body» son cadenas vacías si no han sido configuradas en Kopete. Ellos están en el color del formato web.

- El contenido dentro del elemento «body» tiene «<» diferente, es decir, esto no es confundido con la estructura actual XML. Obviamente, para interpretar correctamente el cuerpo como HTML, se debería de convertir a sus «&lt;» para sus «<».

## &xml; Entrada

Su programa recibirá &xml; en esta cadena estándar de entrada, tendrá la oportunidad de modificar esto, y entonces esto devolverá a &kopete; una cadena de salida estándar. Si su aplicación modifica los elementos siguientes, el conocimiento interno que &kopete; tiene de los mensajes modificados cambiará para reflejar sus cambios.

- Atributo «message» y «timestamp» pero ninguno de los otros atributos de tiempo

- atributo «message» «subject»

- atributo «message» «type»

- atributo «message» «importance»

- atributo «body» «color». Normalmente se configura para un número de color web, pero puede ser también un nombre. Los nombres definidos por SVG son aceptados por QColor en Qt 4, por tanto son los únicos nombres que pueden ser usados.

- atributo «body» «bgcolor» — parecido con «color»

- contenido del elemento«body»

Si modifica elementos o sus atributos no mentionados antes, los cambios de estos elementos no tendrán efecto.

## Valores aceptables

Algunos atributos tienen ciertos valores aceptables. La salida del complemento Pipes tendrá siempre valores legales. Si su aplicación elige cambiar esos atributos, ellos deberán ser legales. Si no, el fondo de &kopete; estará indefinido.

Atributo «route» en elemento «message»

  Debe ser «inbound», «outbound», o «internal»

Atributo «type» en elemento «message»

  Debe ser «action» o «normal»

Atributo «importance» en elemento «message»

  Debe ser «0» para bajo, «1» para normal y «2» para alto

Atributo «dir» dentro de muchos elementos

  Debe ser «ltr» para de izquierda a derecha o «rtl» para de derecha a izquierda