[IRC-DEV] Protocolo bots externos <-> Olimpo

Jesus Cea Avion jcea at argo.es
Wed Nov 14 19:21:58 CET 2001


Como todos sabeis, una de mis viejas ideas es abrir el API de Olimpo
(http://www.argo.es/~jcea/irc/modulos/api.htm) para que sea posible que
programadores externos escriban bots que puedan "pincharse" a Olimpo a
través de Internet, y entrar en IRC-Hispano.

Tras dar mil vueltas al asunto y concluir que utilizar protocolos
estándares (y con librerías para infinidad de lenguajes y plataformas)
como XML-RPC o SOAP suponen una carga brutal a nivel de ancho de banda,
no queda otra opción que desarrollar un protocolo "propio", con lo que
ello supone: diseño, implementación de librerías en varios lenguajes,
soporte de varias plataformas, etc.

En una primera fase quiero hacer una "micro API" con las siguientes
características:

- Cualquier programador, de forma gratuita y cumpliendo unos requisitos
mínimos, deberá poder enlazar sus bots utilizando Olimpo, de forma
sencilla y rápida.

- La comunicación entre Olimpo y los bots externos se realizarán
mediante una conexión TCP/IP. Los comandos fluirán en ambas direcciones
de forma asíncrona, como el protocolo IRC normal.

- En esta primera fase, la única capacidad permitida para los bots será:

  - Recibir privados de usuarios +r.

  - Enviar privados a usuarios que, previamente, hayan enviado un
privado al bot.

Las etapas de la comunicación bot<->Olimpo serán dos:

a) Autentificación
b) Servicio

El procedimiento, a grosso modo, sería:

1. El bot se conecta a Olimpo.
2. Olimpo envía un "reto" al bot.
3. El bot envía una "respuesta" a Olimpo, indicando también su
identidad.
4. Si todo es correcto, Olimpo "injecta" el bot en IRC-Hispano.
5. Cuando un usuario envía un privado al bot:
   a) Si es la primera vez que el usuario envía el privado, Olimpo
      envía al bot un alta de usuario nuevo, asignándole un Id.
   b) Seguidamente envía el mensaje del usuario, con el Id que le
      corresponda.
6. Cuando el bot desea enviar algo a un usuario, lo debe enviar al
   Id de ese usuario que le haya dado Olimpo en su primera comunicación.
7. En cualquier momento, Olimpo puede enviar al bot una baja de Id. A
partir de ese momento, cualquier intento del bot para enviar un mensaje
al usuario al que corresponda ese Id será ignorado.
8. Ping/Pong reto/respuesta cada 30 segundos entre Olimpo y el bot, para
verificar la integridad de la conexión.

Con este esquema bastaría con implementar media docena de comandos.

¿Comentarios?.

-- 
Jesus Cea Avion                         _/_/      _/_/_/        _/_/_/
jcea at argo.es http://www.argo.es/~jcea/ _/_/    _/_/  _/_/    _/_/  _/_/
                                      _/_/    _/_/          _/_/_/_/_/
PGP Key Available at KeyServ   _/_/  _/_/    _/_/          _/_/  _/_/
"Things are not so easy"      _/_/  _/_/    _/_/  _/_/    _/_/  _/_/
"My name is Dump, Core Dump"   _/_/_/        _/_/_/      _/_/  _/_/
"El amor es poner tu felicidad en la felicidad de otro" - Leibniz



More information about the IRC-Dev mailing list