[IRC-DEV] Mensajeria instantanea sobre IRC, planteamiento y boceto previo

Victor Roman victor.roman at sionhq.com
Mon Dec 1 16:19:55 CET 2003


Envio el mensaje en el cuerpo del mensaje tal como solicito jcea:
-

Planteamiento
-------------

Las redes de IRC hispanas cada vez poseen menos usuarios debido a la migracion
de los mismos a la mensajeria instantanea como MSN Messenger, AIM, Yahoo! Messenger
y similares.

Las funciones que realizan dichos clientes de IM pueden ser suplidas perfectamente
con el protocolo IRC de una manera sencilla: Realizando un cliente de IRC con
aspecto similar a MSN que opere bajo el protocolo IRC.


Posibilidades de la mensajeria instantanea
------------------------------------------

Solo tus contactos pueden hablarte: No has de entrar en canales ni recibir mensajes
de ninguna indole a no ser que el origen del mismo haya sido previamente aceptado
por el usuario.

Bloquear contactos: Un contacto puede llegar a ser molesto, o simplemente no queremos
que sepa que estamos online. Podemos bloquearlo y no se enterara de que estamos conectados
al otro lado del monitor, ya que nuestro estado en su cliente sera "sin conexion".

Localizacion rapida de contactos: En una lista aparece todas las personas que hemos
aceptado previamente, mostrandose como "online" cuando se conectan.

Simplicidad de uso: El usuario no sabe como funciona, ni como se conecta. Simplemente
sabe que pinchando en "Log In" va a poder usarlo, desentendiendose de redes, servidores,
netsplits y derivados.

Nombre que queramos: La IM se basa en direcciones de email para manipular la lista de
contactos, debido a esto se nos permite asociar un nombre al email y cambiarlo cuando
se nos antoje. El nombre asociado al email es el que se mostrara en los clientes del
resto de usuarios. Si no hay nombre, se muestra la direccion de email.

Avatar: En las ultimas versiones de los clientes mas famosos podemos elegir una imagen
que vera el resto de usuarios al hablar con nosotros.

Conversacion de audio: Es posible iniciar una conversacion de audio con otro usuario. Un
usuario inicia la conversacion de audio y antes de establecerse la comunicacion, el usuario
destino ha de aceptar o rechazar la invitacion.

Uso de WebCam: Podemos hablar mientras otro usuario nos esta viendo a traves de nuestra
webcam.  Un usuario inicia la conversacion con webcam y antes de establecerse la comunicacion, 
el usuario destino ha de aceptar o rechazar la invitacion.

Estados personalizados: Contamos con varios estados:
  - En linea: Aparecemos conectados y visibles al resto de usuarios.
  - Desconectado: Sin iniciar sesion en el servidor.
  - Sin Conexion: Estamos conectados y vemos a nuestros contactos, pero ellos a nosotros no nos
                  veran online (Aparecemos como "descotectados" en su cliente).
  - No disponible, Vuelvo enseguida, Al telefono, Sali a comer: El usuario realiza alguna de estas acciones.
  - Ausente: El usuario no se encuentra delante del PC.


Inicio de sesion en la IM
-------------------------

El inicio de sesion en la IM esta basada en una cuenta de email validada previamente por el servidor
y generalmente posee un desafio basado en MD5. Un ejemplo de como lleva esto a cabo MSN Messenger
puede ser obtenido en http://www.hypothetic.org/docs/msn/notification/authentication.php

Una vez que hemos conectado al servidor, recibimos la lista de nuestros contactos (Si, la guarda el
servidor) y marca sus estados actuales.

Tras finalizar este proceso podemos empezar a hablar con nuestros conctactos.


Añadiendo usuarios
------------------

Los usuarios se añaden mediante su email previamente validado por el servidor. Una vez que hayamos
añadido la direccion, el usuario destino es preguntado sobre si:
 - Aceptar el contacto: Lo cual lo agrega a nuestra lista, y a nosotros a la suya
 - No aceptar contacto: No añade el contacto a nuestra lista, pero a nosotros SI a la suya.
 - No aceptar y no permitir ver mi estado: Lo denega por completo. No nos ve, ni lo vemos en la lista de contactos.

Una vez que haya sido aceptado el contacto si esta online, se nos mostrara el mensaje de notificacion de que
se ha conectado.


Bloqueando usuarios
-------------------

Todo usuario de nuestra lista puede ser bloqueado. Esto le impide ver nuestro estado online mientras dure el bloqueo,
es decir, siempre apareceremos en su lista como "sin conexion". Aunque desconectemos del servidor, nuestro bloqueo
sigue permaneciendo hasta que nosotros asi lo decidamos.


Borrando usuarios
-----------------

Cualquier de nuestros contactos puede ser borrado con las siguientes opciones:
 - Solo borrar: No aparecera mas en nuestra lista, ni se nos notificara cuando se conecte; Pero nosotros 
   en la suya si apareceremos.
 - Borrar y bloquear: Borramos el contacto de nuestra lista, no se nos notifica cuando se conecta; A el usuario
   borrado y bloqueado le apareceremos SIEMPRE con el estado "sin conexion".


Implementando IM sobre el protocolo IRC
---------------------------------------

El protocolo IRC nos brinda muchas posibilidades, entre ellas podemos destacar varias que facilmente pueden
suplir la mensajeria instantanea.

 - Notificacion de usuarios: WATCH
 - Comunicacion entre usuarios: PRIVMSG
 - Bloqueo de mensajes: SILENCE
 - Cambio de nombre: NICK
 - Estados No-Online: AWAY
 - Desconectado: QUIT

Sin embargo no puede llevarse a cabo la identificacion mediante email ni el desafio MD5 si no es a traves de un
robot que lo gestione, asi como debe mantener la lista de contactos de cada usuario. En el IRCD de IRC-Hispano
puede suplirse totalmente el robot mediante la base de datos.

Esto hace factible plantearse la realizacion de un cliente de IRC similar en aspecto a cualquiera basado en IM
que permita a los usuarios conectar al IRC con la simplicidad que buscan.

Dicho cliente ha de cumplir las funciones anteriormente especificadas de la mensajeria instantane, y asi mismo,
ser totalmente transparente cara al usuario en el sentido que no sepa, o no quiera saber, que el fondo del mismo
es el protocolo IRC en lugar de otros tipo MSN, AIM, Trillian,...

En caso de utilizar un bot de servicios, la forma de iniciar sesion sera:

 cliente  >>>   usuario at emailcom contraseña Nombre a mostrar a mis contactos
 bot      <<<   DIGEST usuario.email123456789.12345
 cliente  >>>   usuario at email.com DIGEST 7ddeebb22e8b3ca9782a06235ae8db1e
 bot      <<<   LOGGED usuario.email
 bot      <<<   USER fulanito at mail.com offline Su nombre aqui
 bot      <<<   USER pepe at terra.es away mas nombres
 bot      <<<   USER josefa at lycos.com online su nombre

Explicando lo anterior:
 
 1. El cliente envia su email, contraseña y nombre que ha elegido (o su email si no existiera dicho nombre)
 2. El robot le envia un desafio basandose en su email, y concatenando un numero de dos partes, la primera de 9
    digitos y la segunda de 5, separado con un '.' (punto) para separarlo.
 3. El cliente le responde enviando lo que el bot solicito, cifrado con MD5
 4. El robot finalmente le concede acceso y le envia su lista de usuarios con el formato:
          direccion at email.tld estado_del_usuario nombre_del_usuario

----------------------------------
Victor Roman <victor.roman at sionhq.com>
Sion LTD - http://www.sionhq.com





More information about the IRC-Dev mailing list