agendabot is an IRC 'bot that gets a meeting agenda from a URL. It is especially useful as a complement to the Zakim meeting 'bot, but does not require it.
agendabot is currently an experimental service.
Assuming agendabot is connected to an IRC server (see the documentation in the program for how to run it), you can control it via commands that typically look like this:
agendabot, command… agendabot, please, command… /me agendabot, command…
The commands are:
Invite the 'bot to the channel you are meeting on:
/invite agendabot
Note that this is a command to the IRC server, not to agendabot (which presumably isn't on the channel yet) and thus does not start with ‘agendabot,’.
Tell the 'bot where the agenda of your meeting is:
agenda: http://example.org/agendas/2018/13
If agendabot succeeds in downloading and parsing the linked document, it will print the agenda to the IRC channel, with the syntax that the Zakim 'bot understands. That could look like, e.g.:
clear agenda agenda+ Welcome agenda+ Winter topics agenda+ AOB
‘Agenda:’ is in fact a command for the RRSAgent 'bot (which uses it to copy the URL into meeting minutes). That is why it does not start with ‘agendabot,’. To let agendabot look up the agenda while hiding the URL from RRSAgent, you can use a /me instruction or address agendabot directly:
/me agenda: http://example.org/agendas/2018/13 agendabot, agenda: http://example.org/agendas/2018/13
Instead of pointing agendabot to a specific URL, you can also ask it go search for the URL by itself in the mailing list archives or the group calendars. The command is one of these, or similar:
agendabot, find agenda agendabot, search for the agenda agendabot, please, find the agenda.
Agendabot will search the calendar and the mail archive in the background (this may take several seconds) and then output something like this:
agenda: http://example.org/archive/foo/2109.html clear agenda agenda+ Welcome agenda+ Winter topics agenda+ AOB
unless it fails to find an agenda, in which case it will say so.
Agendabot normally searches back one week, but you can give an explicit number of days or weeks:
agendabot, find agenda since 3 weeks agendabot, find agenda since 21 days agendabot, find agenda in the last 21 days
This assumes agendabot already knows which mailing list archive to search in. See ‘Associate a mailing list archive or calendar’ below.
Agendabot can also look for agenda topics that people suggested on the mailing list and propose an agenda. It looks for mail messages with a subject of ‘agenda+ …some topic…’. To ask agendabot to suggest an agenda, say:
agendabot, suggest agenda agendabot, propose an agenda.
The result might be like this:
I found 2 topics: 1) ftf agenda 2) discuss issue 27
Agendabot will report the topics it found, but not make an agenda in Zakim's format yet. To do that, see the next command, ‘accept’.
Agendabot will search for topics in messages on the mailing list in the last seven days. To search back over a different period, add a number of days or weeks:
agendabot, please suggest an agenda since 2 weeks. agendabot, suggest an agenda since 14 days agendabot, suggest an agenda last 14 days
or just:
agendabot, since 14 days
Like for the ‘find’ command, this assumes agendabot knows in which mailing list to search. See ‘Associate a mailing list archive or calendar’ below.
To accept the agenda topics that agendabot suggested after a ‘suggest’ command and turn them into an agenda in the format that Zakim accepts, say:
agendabot, accept agendabot, confirm agenda agendabot, make this agenda
You must accept an agenda within one hour after agendabot suggested it.
To tell agendabot in which mailing list archive or calendar to search, use a command like the following. Agendabot will remember the mailing list and calendar, even when it leaves the channel. More than one mailing list and calendar is also possible: Separate them with commas or the word ‘and’. (But the current version 0.4 of agendabot isn't smart and may give up even before reaching the second list.)
agendabot, this is abcd agendabot, this is https://lists.w3.org/Archives/Public/public-abcd/ agendabot, this is https://www.w3.org/groups/wg/abcd/calendar agendabot, this abcd, efgh and ijkl
The short form makes agendabot try the following calendars and archives:
Agendabot will skip any that do not exist and will only search password-protected archives if the current channel is a team-only channel or if agendabot's configuration contains an exception for the current channel.
If you want agendabot to forget the mailing list(s) associated with this channel, say something like:
agendabot, forget mailing list agendabot, please, forget the mailing list agendabot, forget the list
Plural ‘lists’ works, too.
To tell agendabot to forget the calendar(s), say something like
agendabot, forget calendar agendabot, please, forget the calendar
Plural ‘calendars’ works, too.
To forget calendars and lists in one go, use ‘all’, e.g.:
agendabot, forget all agendabot, please, forget all
To ask agendabot what mailing list(s) and calendar(s) it has associated with this channel, say:
agendabot, status? agendabot, info?
If you want agendabot to leave the channel, dismiss it:
agendabot, bye
Agendabot also knows a help command and replies to it with some info about itself:
agendabot, help
Or you can get information about a specific command:
agendabot, help find agendabot, help suggest agendabot, help bye
Agendabot may appear to be slow. Occasionally that may be because the Web server is slow to deliver the requested agenda, but most likely you are seeing the so-called flood protection. The 'bot pauses before every line, to avoid being kicked off the channel for sending too much text in too short a time.
Just be patient…
When given a URL, agendabot tries to retrieve the document at that URL and scan it for text that looks like an agenda. Agendabot currently recognizes agendas in one of the following forms. The document may be plain text, XHTML, HTML or HTML5, or any text format that is close to plain text.
In this format, agenda topics are lines that start with a number and a period (or some other character) and are followed by a line starting with at least four dashes. E.g.:
1. Welcome ---------- 2. The apple tree ---------- 3. AOB ------
Any text before, after or in between these lines is ignored. The above results in the following agenda:
clear agenda agenda+ Welcome agenda+ The apple tree agenda+ AOB
This format requires the text ‘=== AGENDA ===’ (upper- or lowercase and possibly with more ‘=’ signs) to occur in the document. All agenda topics are lines that start with ‘Topic:’;. E.g.:
==== AGENDA ==== Topic: AOB? Topic: Radar
Instead of ‘agenda’ between ‘=’ signs, an occurrence of ‘agenda items’, ‘agenda topics’, ‘agendabot agenda’ or the word ‘agenda’ underlined with dashes is also enough:
Agenda ------ Topic: AOB? Topic: Radar
or, if the agenda is in an HTML file, it may be an <h3> element:
<h3>Agenda</h3> <p>Topic: AOB? <p>Topic: Radar
Any text before, after or in between these lines is ignored. The above results in the following agenda:
clear agenda agenda+ AOB? agenda+ Radar
This format already uses Zakim's format, i.e., topics are lines that start with "agenda+". E.g.:
agenda+ Roundtable agenda+ TPAC registration agenda+ Next meeting
Any text before, after or in between these lines is ignored. The above results in the following agenda:
clear agenda agenda+ Roundtable agenda+ TPAC registration agenda+ Next meeting
This format has the word "Agenda" somewhere in the text and topics are numbered lines or lines that start with "*", "•", "◦" or "⁃". If there are multiple levels of lists, only the outer list (the least indented one) is used.
Agenda telcon 20 July 0. Extra agenda items and other digressions 1. [css-display] Blockifications * Positioning * Syntax 2. [cssom-1] Replace steps of set a CSS declaration
Any text before, after or in between these lines is ignored. The above results in the following agenda:
clear agenda agenda+ Extra agenda items and other digressions agenda+ [css-display] Blockifications agenda+ [cssom-1] Replace steps of set a CSS declaration
If the agenda is in an HTML page, agendabot also looks for a list
(<ol>
or <ul>
) that occurs after
the word ‘agenda’ . E.g.:
<h2>Agenda</h2> <ol> <li>Action items<li> <li>Publication schedule<li> <li>AOB<li> <;/ol>
This was a 2018 Geek Week project. The idea for agendabot is due to Richard Ishida.
During Geek Week 2020, agendabot was extended to search for agendas or agenda topics on its own in mailing lists.
In November 2021, Richard Ishida suggested to also search in W3C group calendars, since the calendar system had just been extended with an editor to include agendas in events.
Bert Bos <bert@w3.org>
The source code is on GitHub.
Zakim can read (and write) agendas in RDF.
Last modified $Date: Mon Feb 21 19:26:01 2022 UTC $