agendabot

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.

Use from IRC

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 agendabot

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,’.

Load agenda

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

Search for an agenda

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.

Propose an agenda

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.

Accept a proposed agenda

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.

Associate a mailing list archive or calendar

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.

Remove a mailing list or calendar

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

Display the mailing list and calendar

To ask agendabot what mailing list(s) and calendar(s) it has associated with this channel, say:

agendabot, status?
agendabot, info?

Dismiss agendabot

If you want agendabot to leave the channel, dismiss it:

agendabot, bye

Built-in manual

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

Slow?

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…

Agenda formats

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.

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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>

Notes

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.

Author

Bert Bos <bert@w3.org>

Source

The source code is on GitHub.

See also

Zakim, RRSAgent, scribe.perl

Zakim can read (and write) agendas in RDF.

Last modified $Date: Mon Feb 21 19:26:01 2022 UTC $
by $Author: Bert Bos $