Mensajes

Estructura de mensajes

Los agentes intercambian mensajes mediante el bus de mensajes del servidor. Estos mensajes tienen una estructura clave-valor de la forma:

key1=val1&key2=val2&key3=val3...

Por ejemplo, el agente broadcast puede enviar un mensaje a un usuario específico. La cadena para hacerlo sería algo parecido a esto:

dst=broadcast&tag=send&msg=Hello World!&to=john

Analizando el mensaje:

  • dst: Agente al que va destinado el mensaje.

  • tag: Acción a realizar. Puede haber varios tag en el mensaje.

  • msg: Mensaje que mandar al usuario.

  • to: Usuario al que mandar el mensaje. El nombre se comprueba con la lista de usuarios para ver cuál es la dirección de John y su método de contacto preferido.

La cadena puede variar dependiendo de cada agente, pero la mayoría tendrán partes comunes como dst y tag.

Enviando mensajes al servidor

Aparte del intercambio de mensajes de los agentes, también se puede enviar un mensaje al servidor manualmente para que un agente ejecute alguna acción. Tomando el anterior ejemplo del agente broadcast, el mensaje se podría enviar como:

$ echo -n "dst=broadcast&tag=send&msg=Hello World!&to=john" | nc ZOE_HOST ZOE_PORT

Ahora, el archivo logs/broadcast.log tendría una entrada con el mensaje recibido y la acción realizada (o cualquier error mientras se llevaba a cabo).