The Zakim IRC "bot" is a Semantic Web agent ("swagent") that helps facilitate meetings using IRC in conjunction with the W3C's Zakim audio teleconference bridge.
It is generally available on W3C's IRC server, under the "Zakim" nickname. It gives information about teleconferences available on the bridge, such as the names of the conferences available at that time, the attendance list, and the possibility to associate telephone numbers with people. When someone joins a conference, she/he will be announced to the channel using the +xxx convention, where xxx can be a name, an anonymized phone number or a generated ID for numbers that do not have callerID information. When someone leaves, -xxx will be used, following the same convention.
In the following command descriptions, optional words in commands are indicated in square brackets. "please" can be abbreviated to "pls" if you wish to be polite yet still save keystrokes. ("please" is also accepted at the end of all commands.)
/invite Zakim <channel>
will bring Zakim on to your IRC channel.
/invite zakim &test [16:41] *** Zakim (~email@example.com) has joined &test
Some irc clients let you omit the channel name and will fill in the name of current channel. This is a feature of the irc client, not of Zakim.
You might also want RRSAgent in your meeting channel to keep a record of the meeting in W3C Web space. To start logging the channel, invite the RRSAgent bot as follows:
/invite rrsagent <channel>
You can find the URL for the log being written by RRSAgent by typing the command:
Once Zakim is on your IRC channel, all commands to Zakim begin with
Zakim's commands are not case sensitive, but, in general, must be grammatically correct.
Zakim will respond to normal irc lines and to ACTION lines (typically entered with the '/me' command in many irc clients). The '/me' form is especially recommended for avoiding clutter in RRSAgent logs; interactions that serve no useful purpose in the permanent irc record can be prefixed with '/me'. This typically includes 'q+' and 'ack' commands; e.g. 'q+' will be logged by RRSAgent whereas '/me q+' will not [see RRSAgent log recording]. Zakim will generally mimic the same usage in the reply. For the commands such as 'agenda?' to which Zakim will respond without being directly addressed, Zakim responds directly if he is addressed and in third-person ('/me') form if he was not addressed.
In order to have Zakim report relevant events, you must inform him which teleconference is yours. Helpful commands include:
Conferences that are in the schedule for the present time but not yet active are also listed.
[16:42] <Alan-MIT> zakim, list conferences [16:42] <Zakim> I see Longfellow II
Once you have identified your conference name, Zakim will announce new participants and departing participants. The name you enter must match the name or conference code of a conference that is already in progress. You need not enter the entire conference name; any part of the name that uniquely identifies it is sufficient. The first form works only when the conference is not already associated with an IRC channel. The last two forms will move a conference away from another IRC channel if necessary, informing the previous channel of the move.
[16:43] <Alan-MIT> zakim, this is longfello [16:43] <Zakim> ok, Alan-MIT
this [conference] will be <conf name>
If your conference has not yet started use this command to inform Zakim of a soon-to-start conference. Zakim will announce the start of the conference as well as the new participants. The first conference, including any already in progress, whose name contains the specified <conf name> will be taken as the intended conference. If <conf name> does not match any named conference a match will be attempted to the conference code of a scheduled conference.
what conference is this?
The word 'still' may also be included, as in 'who is still here?'
[17:06] <Alan-MIT> zakim, who's here? [17:06] <Zakim> On the phone I see ??P1, Alan [17:06] <Zakim> On IRC I see Alan-MIT, gerald
Note that Zakim reports both phone participants and irc participants.
Zakim will report only the phone participants.
The word 'still' may also be included, as in 'who is still on the phone?'
The report will show participants who are currently in your conference or who had been in the conference earlier and have since departed.
Informs Zakim that the participant identified as <name> is a group of people whose name(s) are <n1>, <n2>, etc. This is useful in the case of a conference room phone around which many people might be sitting. Zakim will include these names in the list of attendees that he reports when the conference terminates and in response to the 'list attendees' command.
Like the commands above, this informs Zakim that the participant identified as <name> is a group of people whose names are <name> and <n1>. This is normally used when a pair of people are using a conference room. Zakim will include both names in the list of attendees that it reports when the conference terminates.
Informs Zakim that another participant should be added to the group identified by <name2>.
Informs Zakim that the group identified by <name2> no longer contains the participant <name>.
Informs Zakim that the group identified by <name> no longer contains the participant(s) <n1>, etc.
Reports the parties thought to be present in the group identified by <name>.
Once you have informed Zakim of your teleconference, he will report the comings and goings of participants. New arrivals are announced to the channel using the +xxx convention, and departures as -xxx. There are several ways in which conferees are identified:
You can help Zakim identify callers by name using the following commands:
Supplants <old identifier> with <name>, adding the maybe flag. This means that this association is not certain and will not be saved for future references. Such callers are identified in lists with a "?". Future rejoin from the same number will show "+xxx is perhaps yyy".
[17:07] <Alan-MIT> zakim, ??P1 may be Foo [17:07] <Zakim> +Foo?; got it [17:09] <Alan-MIT> zakim, who's here? [17:09] <Zakim> I see Foo?, Alan
Supplants <old identifier> with <name>.
[17:13] <Alan-MIT> zakim, ??P0 is AlanK [17:13] <Zakim> +AlanK; got it
This command reassigns names, and removes any maybe flag if one was present.
[17:10] <Alan-MIT> zakim, foo is really Bob [17:10] <Zakim> +Bob; got it
Supplants <old identifier> with <name> for this call only. After the caller disconnects the name associated with the phone number will revert to <old identifier>.
Supplants <old identifier> with your IRC nick.
Supplants <old identifier> with your IRC nick if it was a telephone number or other unknown party identifier, otherwise simply associate your IRC nick with the named party. In the latter case (associating your IRC nick with the named party), you may then use "me" instead of entering your full name in commands such as "mute me", "unmute me", "disconnect me", and "queue+ me".
Associates an IRC nick with the named party, as in the case above. This command is available for someone else to make the association other than the person owning the nick. When the association is known, Zakim will more often recognize when to unmute the caller.
When referring to a participant you need only use enough characters of the participant's name to be unambiguous; e.g. a participant named 'TimBL' can be referred to as just 'Tim'. The anonymized version of the telephone number for a participant whose name is unknown ends in four characters. If an abbreviated name does not match the left-most part of a known participant's name and does match the last four characters of an anonymized telephone number, Zakim will understand that the reference is to the participant at that telephone number.
The Zakim bridge has the capability to mute conferees. (Muting blocks sound on a conferee's line from being heard on the conference.) Conferees can mute themselves by dialing 61#. In that case, unmute is 60#.
The participant can unmute using 60#.
[17:14] <Alan-MIT> zakim, mute AlanK [17:14] <Zakim> AlanK should now be muted [17:15] <Alan-MIT> zakim, mute AlanK [17:15] <Zakim> AlanK was already muted, Alan-MIT
This command will undo BOTH mute commands and 61#.
[17:17] <Alan-MIT> zakim, unmute AlanK [17:17] <Zakim> AlanK should no longer be muted [17:17] <Alan-MIT> zakim, unmute AlanK [17:17] <Zakim> AlanK was not muted, Alan-MIT
These requests are intended to facilitate the identification of callers who are causing noise or echos.
Zakim does not distinguish how the particpant became muted.
[17:18] <Alan-MIT> zakim, who's muted? [17:18] <Zakim> I see no one muted
Requests that Zakim-bot listen for 10 to 20 seconds then report the names of any participants who were heard during that interval. This request is intended to be an aid to determine which participants might need to be muted. If a line is generating sound at a very low level, it may be reported here but not actually heard in the conference; this is not uncommon for some phone lines that introduce echo. Occasionally a port that is generating continuous sound might not be reported; this is a bug. In place of the word 'talking' the words 'speaking', 'noisy' and 'making noise' may also be used.
If a participant is unable to hangup, the line can be disconnected on request.
Forceably disconnects the named participant.
All disconnect the Zakim bot from your IRC channel. This has no effect on the conference bridge itself.
[17:19] <Alan-MIT> zakim, excuse us [17:19] *** Zakim (~firstname.lastname@example.org) has left &test (Zakim)
Displays an abbreviated list of some major commands. Due to "flood control" in IRC, this may be slow.
Looks up a telephone number prefix in a North American area code directory or in an international country code directory. The '+' may be omitted only if the dialing code is exactly 3 digits; this will be interpreted as a request to lookup a North American area code. Hyphens and periods may be used in the dialing code and will be ignored.
Zakim will help track a queue of participants wishing to speak. The commands in this set need not be directly addressed to Zakim; they will be recognized when addressed to no one in particular and also when received as third person ('/me') messages.
If <name> is omitted or specified as 'me', the irc nick issuing the request is used. The last three forms are intended particularly for /me messages. A phone participant who does not have irc access can dial 41# to raise his or her hand. The mnemonic is 4=Hand, 1=up, #='enter'. It is not necessary that the participant be unmuted to dial this request. There is no audible feedback for a dialed request so the chairperson is encouraged to verbally confirm the queue request at an appropriate pause.
If <name> is omitted or specified as 'me', the irc nick issuing the request is used. The <note> is a comment to indicate why that person wishes to speak; the word 'to' may also be written as ':'. If the same name is added to the queue multiple times there may be multiple notes. The word 'also' can be given in such cases however it is not necessary.
If <name> is omitted or specified as 'me', the irc nick issuing the request is used. If a <name> is given explicitly and if it matches the start of exactly one entry in the queue then it is interpreted as if that full entry were entered; that is, unambiguous abbreviations are recognized. Abbreviations are not recognized if the name is omitted or 'me' is used; i.e. when the irc nick issuing the request is assumed. The last three forms are intended particularly for /me messages. A phone participant who does not have irc access can dial 40# to lower his or her hand. The mnemonic is 4=Hand, 0=down, #='enter'. It is not necessary that the participant be unmuted to dial this request.
Moves the irc nick issuing the request to the end of the speaker queue.
Use this command if you wish to speak more than once rather than presenting all your comments at one time.
or replacing any names already on the queue. If "queue" is spelled out and no names are specified then the queue is cleared.
'queue' can also be abbreviated to just 'q' in the first two forms.
If <name> corresponds to a known participant and that participant is muted, Zakim will unmute the participant. If <name> matches the start of exactly one name on the queue of individuals wishing to speak (see 'queue+' above) then the corresponding name is removed from the queue. However, <name> need not be on the speaker queue, nor is the chair obligated to acknowledge speakers in any particular order.
The name will be displayed along with the remaining speaker queue. If the queued name corresponds to a known participant and that participant is muted, Zakim will unmute the participant.
Causes subsequent queue+ and 41# requests to leave the speaker queue unchanged.
Causes subsequent queue+ and 41# requests to be added to the speaker queue. This is the default state when Zakim is invited to a channel. The speaker queue will also be reopened whenever a new agendum is taken up.
Grants <name> permission to speak, clears the remainder of the speaker queue, and closes the speaker queue. Subsequent queue+ and 41# requests will leave the speaker queue unchanged.
Causes the ack command to start a timer. Zakim will issue reminders as the speaker approaches the end of the alloted speaking time. The keywords 'minutes' and 'seconds' can be abbreviated to 'min', 'm', 'sec', or 's' respectively. 'give' may be used as a synonym for 'allow'.
Causes Zakim to cease issuing reminders as speaker are acknowledged and approach the end of a previously established speaking time.
Requests that the Zakim bot stop tracking speaker queue changes. This request must be addressed specifically to Zakim. This is not the same as closing the queue; after Zakim has been told to ignore the queue, it will give no feedback to queue+, queue-, and recognize requests. If the queue is closed Zakim will continue to give feedback unless it has also been told to ignore the queue.
Requests that the Zakim bot begin tracking speaker queue changes. This is the default state when Zakim is invited to a channel. This request must be addressed specifically to Zakim. Note that the speaker queue may be opened or closed independently of whether Zakim is tracking the queue.
The speaker queue will be cleared at the end of the conference assigned to the irc channel.
Zakim will help track agenda items requested while a meeting is in progress. Like floor control, the commands in this set need not be directly addressed to Zakim; they will be recognized when addressed to no one in particular and also when received as third person ('/me') messages.
Adds an item described by <text> to the agenda, assigning it the next sequential number. The irc nick of the person who entered the request is recorded. In the second form, the brackets '[ ]' are part of the command (the quotes are not) and indicate that the proposer is someone other than the person who entered the request. The word 'agenda' may also be entered as 'agendum'.
[12:10] <RalphS> agenda+ minute-taker [12:10] * Zakim notes agendum 1 added [12:11] <RalphS> agenda+ chair for next meeting [Alan] [12:11] * Zakim notes agendum 2 added [12:11] <RalphS> zakim, agenda? [12:11] <Zakim> I see 2 items remaining on the agenda: [12:11] <Zakim> 1. minute-taker [from RalphS] [12:11] <Zakim> 2. chair for next meeting [from Alan via RalphS]
Displays the agenda.
Replaces the text of item <number> with <newtext>.
Removes item <number> from the agenda. Note the '-' (hyphen) between the word 'agenda' and the number. In the second form the word 'agendum' may also be mis-written as 'agenda'.
Indicates that agenda item <number> is open for discussion. This gives Zakim the information needed to respond to subsequent commands. The word 'agendum' may be mis-written as 'agenda' or as 'item'. A text pattern (regular expression) may be given instead of a number if the pattern matches exactly one agendum.
Indicates that the next non-closed agenda item in the list specified by 'agenda order' or the lowest-numbered non-closed agenda item is open for discussion. If an agendum is currently open it will be closed unless it has been open for less than a minute. (This reduces confusion if several people simultaneously instruct Zakim-bot to move to the next agendum.) The word 'agendum' may be mis-written as 'agenda' or as 'item'. The third form, 'move to ...', causes Zakim bot to display the next agendum for the record, whether or not you addressed the bot directly. If the current agendum has been open for less than a minute use close this agendum explicitly to permit moving to the next agendum.
[15:57] <RalphS> zakim, what is on the agenda? [15:57] <Zakim> I see 3 items remaining on the agenda: [15:57] <Zakim> 1. pick scribe [from RalphS] [15:57] <Zakim> 2. review previous meeting minutes [from RalphS] [15:57] <Zakim> 3. schedule next meeting [from RalphS] [15:57] <RalphS> zakim, take up next agendum [15:57] <Zakim> agendum 1. "pick scribe" taken up [from RalphS] [15:57] <RalphS> next agendum [15:57] * Zakim thinks agendum 1 was just opened [15:57] <RalphS> close this agendum [15:57] * Zakim notes agendum 1 closed [15:57] * Zakim sees 2 items remaining on the agenda; the next one is [15:57] * Zakim 2. review previous meeting minutes [from RalphS] [15:57] <RalphS> next agendum [15:57] * Zakim thinks agendum 2. "review previous meeting minutes" taken up [from RalphS] [16:10] <RalphS> move to next agendum [16:10] <Zakim> agendum 3. "schedule next meeting" taken up [from RalphS] [16:11] <RalphS> zakim, what is on the agenda? [16:11] <Zakim> I see 1 item remaining on the agenda: [16:11] <Zakim> 3. schedule next meeting [from RalphS]
Schedules a reminder for n minutes in the future. The reminder will be canceled if the current agendum has been closed or a new agendum has been taken up.
Indicates the expected order in which the agenda items will be taken up for discussion. Agenda items are specified by number. A list of numbers separated by spaces or commas indicates individual agenda items. Two numbers separated by hyphen indicates a range of items. A single number followed by a hyphen followed by a space or comma indicates a range of items starting with the first number and running through the end of the list. Any items not included in the list will be assumed to be added to the end of the list in numerical order. The items need not actually be discussed in the indicated order.
[23:19] <RalphS> agenda+ first item [23:19] * Zakim notes agendum 1 added [23:19] <RalphS> agenda+ second item [23:19] * Zakim notes agendum 2 added [23:19] <RalphS> agenda+ third item [23:19] * Zakim notes agendum 3 added [23:19] <RalphS> what's on the agenda? [23:19] * Zakim sees 3 items remaining on the agenda: [23:19] * Zakim 1. first item [from RalphS] [23:19] * Zakim 2. second item [from RalphS] [23:19] * Zakim 3. third item [from RalphS] [23:19] <RalphS> agenda order is 3,2 [23:19] * Zakim notes agenda order [23:19] <RalphS> Zakim, agenda? [23:19] <Zakim> I see 3 items remaining on the agenda: [23:19] <Zakim> 3. third item [from RalphS] [23:19] <Zakim> 2. second item [from RalphS] [23:19] <Zakim> 1. first item [from RalphS] [23:20] <RalphS> zakim, next agendum [23:20] <Zakim> agendum 3. "third item" taken up [from RalphS]
Requests feedback about the current open agenda item. The word 'agendum' may be mis-written as 'agenda' or as 'item'. The word 'which' may be used in place of 'what'.
Marks item <number> as needing no further discussion. The next remaining item (if any) will be displayed. The word 'agendum' may be mis-written as 'agenda' or as 'item'.
Marks the current agenda item as needing no further discussion. The next remaining item (if any) will be displayed. The word 'agendum' may be mis-written as 'agenda' or as 'item'.
[23:28] <RalphS> zakim, close this agendum [23:28] <Zakim> agendum 3 closed [23:28] <Zakim> I see 2 items remaining on the agenda; the next one is [23:28] <Zakim> 2. second item [from RalphS]
If the specified agendum is currently open for discussion and the speaker queue is not empty Zakim will report this fact and decline to close the item. If the meeting facilitator wishes to move on despite this (e.g. perhaps knowing that a speaker is really queued to speak to a later topic), prefix the request with the word 'really':
Marks item <number> or the currently open item as "skipped" and lists it at the end of the agenda after any non-closed items. Items may be skipped even after they have been taken up; e.g. by 'open next agendum'.
Removes all items from the agenda.
Takes uri as a file of RDF/XML and queries it for agenda items. Any agenda items found will be added to the current agenda. See description of agenda format for details on the RDF graph that is expected. Paul Downey wrote a tool for extracting RDF/XML agendas from text messages; you can append the URI of your text message to Paul's RDFAgenda URI to construct a URI for the RDF/XML form of a suitably-formatted text agenda.
Writes the current agenda to the Web in RDF/XML form as http://www.w3.org/yyyy/mm/dd-<channel>-agenda where 'yyyy' is the current year, 'mm' is the current month, and 'dd' is the current day. If an access option is specified, the URI will be given the corresponding visibility. The suffix -access may also be written as -visible or may be omitted entirely.
Schedules a notice for <interval> minutes or hours in the future. <text> will be displayed at that time if it is specified. This request must be addressed specifically to Zakim. The word 'minutes' may be abbreviated to 'minute', 'mins', 'min', 'm', or may be omitted. The word 'hours' may be abbreviated to 'hour' or 'h'. There is no significant difference between 'ping' and 'remind', between 'me' and 'us', or between 'about', 'to', and 'that'.
Requests that the Zakim bot stop tracking agenda changes. This request must be addressed specifically to Zakim.
Requests that the Zakim bot begin tracking agenda changes. This request must be addressed specifically to Zakim. This is the default state when Zakim is invited to a channel.
The agenda will be cleared at the end of the conference assigned to the irc channel.
Zakim will help choose a scribe (minute-taker) from the current participants in the meeting.
Randomly selects a minute-taker from the current participants. The word 'victim' may also be used in place of 'scribe'.
'Skip agendum <n>' and 'skip this agendum' added. 'Delete' and 'forget' added as synonyms for 'drop' in 'drop agendum <n>'.
Decline to close an agendum unless the speaker queue is empty or 'really' is part of the close request.
'Take up item <pattern>' had been case sensitive and no longer is.
Zakim bot leaves a channel after a long period of inactivity (nothing for Zakim to do). Previously only a queued reminder would keep Zakim from departing. Non-closed, non-skipped agenda items will now also keep Zakim on the channel indefinitely.
Other improvements and bug fixes that may only be noticed by a few.
The first draft of this tutorial page was written in December 2001 by Alan Kotok with help from Ralph Swick. Yves Lafon gave it a good start with a Unix-style man page. Karl Dubost restyled it to match the W3C participants Guidebook style in July 2006.
The Zakim IRC bot was written by Ralph Swick.
The development of the Zakim IRC bot was supported in part by funding from US Defense Advanced Research Projects Agency (DARPA) and Air Force Research Laboratory, Air Force Materiel Command, USAF, under agreement number F30602-00-2-0593, "Semantic Web Development".
The Zakim teleconference bridge is a customized Compunetix Contex Conferencing system. Thanks to Compunetix for providing technical details that enabled the development of W3C's Zakim tools.
Why is this called 'Zakim'?
The World Wide Web Consortium (W3C) conducts a lot of its technical design discussions using the Web, e-mail, and teleconferences. We use so much teleconferencing that we have our own in-house teleconference bridges, housed at MIT. When we were choosing names for the systems someone proposed that we adopt the names of the vehicle bridges across the nearby Charles River. So in 1998 we had our own 'Longfellow' and 'Tobin' conference bridges. When we made a major upgrade of our teleconference systems in 2001 to a new generation of all-digital bridge of course we were immediately attracted to the name 'Zakim', in honor both of human rights advocate Lenny Zakim who gave voice to the people and the Zakim bridge across the Charles.