[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

BotTalk




Hi,

I've been a lurker for awhile, but I'd like to share some ideas tonight.
Creating smart infobot networks is a really fun problem, and yakking
about design is the best part of problem solving.

Anyway, I think there's a very elegant solution to this, lets see if I can 
think it thru here. 

Bot networks should be grouped into an AS(autonomus system).
Auth info may or may not be required.
Each bot holds a status table, consisting of the name of the each member
in the AS, ID#, Ping time, and LastSpoken time.
This Status. Table serves as the routing table for the AS.

The first issue, is the glue that makes up the AS. How the entities
exchange status infomation in a sane way. I prefer learning most 
info passively, and when circumstance require actively.

When a bot connects, it's gets a copy of a status table, then says hello
to everybody. When it says hello to everyone, and everyone says hi back.
It remembers how long it took. Now, everyone has a clear picture of the
AS. Now lets Chat!

One to one message types are obviously one to one.

General queries should broadcast, because it saves time, and it
saves bandwidth. If you go with a token model, you need to have ACKS to
ensure continuity.  

Token messages should be used for HELLO type messages, and other status
messages. The protocol goes like so, the originator sends out the token 
to it's speediest friend. He looks at it, adds his name, and sends it to
his speediest friend. If his friend doesn't answer he drops his friends
name from his table and sends a CHECK{FRIEND} token out. He sends the
original token on it's merry way, minus his sleeping friend. If somebody
notices a name that they don't have, he requests this unknown guy to
re-authenticate to everyone using his table. This uses the same method
used when a new bot connects. When it gets to the last friend, he 
realizes this because the token has everyone else in it, he adds himself
and sends it to the originator. This one token has threaded out to other
tokens and synchronized the
status table. Tokens require ack and should be used sparingly.



Thats basically what I think, any suggestions?