Ticket #75 (new enhancement)

Opened 1 year ago

IM status targets

Reported by: warner Assigned to: warner
Priority: major Milestone: 0.8.0
Component: statusplugins Version: 0.7.5
Keywords: words Cc:

Description

The buildbot should be able to send status information over instant messaging protocols just like it does with IRC. AIM and Jabber are both (theoretically) implemented in Twisted.

I have a branch in which the IRC bot command/response code is factored out into a separate mixin class. The goal is to use the same code for IM status clients (starting with AIM/toc, since that protocol appears to be implemented within Twisted, not that I've actually been able to make it work..). The design calls for a number of "channels", each of which keeps separate state. In the IRC context, there is one channel for the IRC channel as a whole (which receives messages whenever someone uses the "buildbot: command" convention, and broadcasts messages to the whole channel), and another channel for each person who exchanges private messages with the buildbot (i.e. /msg buildbot command). In the IM context, there is a separate channel for each person who interacts with the buildbot account.

Each of these channels will have a flag to say how noisy they are: when turn on, the IM status plugin will internally subscribe to hear about new builds and then emit status messages whenever those events occur. There will be commands to control this flag, like 'buildbot: noisy' and 'buildbot: quiet'. The IM user can send an introductory message to the buildbot to ask it to start announcing events. For some protocols, we could probably figure out some sort of presence-triggered subscriptions, so the buildbot would watch for you to log in, and start sending you messages as soon as it sees you.