Meetings (Calendar Events)

This Document has been moved over to Google Drive

Minerva’s primary functionality is to remind users of upcoming meetings and events through its integration with the Waterloo Rocketry Google Calendar. The Slackbot utilizes the Google Calendar event’s description to store metadata about the meeting which allows for a high level of configuration on how it manages these events.

Presently, Minerva sends two reminders for all meetings: one six hours and another five minutes before meeting start. These reminders can optionally include a list of agenda items to provide an overview of the event. In addition, the six-hour reminder automatically includes message reactions that can be used gauge event turnout. This can be seen below:

A six-hour reminder for the Weekly General Meeting

The five-minute reminder can include event location info and links for online meetings:

A five-minute reminder for the Weekly General Meeting

The alerts for the event reminders can be configured in a variety of ways, including their intrusiveness (e.g. an @channel versus a DM being sent) and the channels for which their members should be notified.

Creating Calendar Events for use With Minerva

Important: Do not attempt to modify the descriptions of Google Calendar events that have been initialized for use with Minerva unless you know what you are doing.

Initializing a Google Calendar event for use with Minerva requires the event’s description to be populated with the necessary JSON metadata. Since JSON is annoying to type up and a single missed quote can result in disaster, Minerva provides a command to go through the initialization process through a modal in Slack.

1. Create an event on Google Calendar

If it has not already been done, start off by creating an event that you would like to get notifications from Minerva for on the Waterloo Rocketry Google Calendar. If this is a reoccurring meeting, it is recommended that you create a single meeting, initialize it through Minerva, and then modify it to be reoccurring so the meeting metadata is duplicated between calendar events.

2. Invite Minerva to the channels that you would like it to notify in

In order for Minerva to be able to send reminder to a channel, it must be added to that channel. This can most easily be done by mentioning Minerva in the channel (i.e. sending a message to the channel with @minerva in it) and then selecting the option to invite it to the channel when prompted.

3. Initialize the calendar event using the /initialize command

To initialize a Google Calendar event for use with Minerva, execute the /initialize command from any text channel that Minerva is in. You will then receive a message notifying you that initialization messages, messages that contain a button which you can click to initialize and configure the meeting, have been sent:

These initialization messages can be found in the #minerva-log channel, and look something like what’s shown below:

Note that an initialization message for an event will only be posted if it is one of the next 10 events and the event’s start date is the next calendar day. Once these messages are posted, you can click on the “Initialize” button for the event you want to configure and a modal will pop up to display your configuration options:

Meeting Location: The location of the meeting that will be displayed in the reminder. Defaults to “E5 2001”

Meeting URL: The URL for the meeting, e.g. if it is a video call, that will be displayed in the reminder. Defaults to Waterloo Rocketry’s “bay_area” Jitsi room

Main Channel: The channel that the meeting reminder will be posted in.

Additional Channels: Channels other than the main channels that users that are part of should be notified of the meeting.

Agenda Items: Agenda items for the meeting that will be displayed in the reminder.

Notes: A short note for the meeting that will be displayed in the reminder.

Alert Type: Select how the meeting reminder will alert users:

  • Alert single channel: This will post the meeting reminder to the main channel with an @channel prepended to it and direct message all single-channel guests that are in the specified additional channels. This is the default option.

  • Alert: This will repost the message to all the selected channels with an @channel prepended so that all users in the channels are notified. The most disruptive option as it pings all users in the selected channels, pinging them multiple times if they are in more than one of them. Use with care.

  • Copy: This will post the reminder to all the selected channels.

Once you have configured the meeting as needed, you can click on the “Submit” button to save your changes and initialize the calendar event. You can confirm this by checking the description of the event in Google Calendar, which should look like this:

If this is a reoccurring meeting and you have opted to initially create a single event to initialize with, you can now edit the calendar event and configure it to repeat.

Editing Events After Creation

If you would like to edit a meeting’s details after it has been initialized, you can do so by using the /meeting edit command.

To edit a meeting, ensure that it is the next upcoming meeting for the channel it has configured as the Main Channel and execute the /meeting edit command in that main channel. The Meeting Editor modal will then pop up. This is the same modal that appears when the /initialize command is executed, and thus the instructions from that section can be applied here.

Note that the /meeting edit command can only edit the next meeting for the channel it has configured as the Main Channel. To edit meetings that are further in the future, you can delete the meeting’s description from the Google Calendar event and reinitialize it, or attempt to change the meeting description text manually.

Troubleshooting

In general, if any unexpected behavior occurs with Minerva, check if there’s any messages posted in #minerva-log that indicate an error.

Minerva is no longer notifying me of an upcoming event

Minerva no longer detecting an upcoming event usually means that the associated Google Calendar event has broken metadata in its description. The best way to resolve this is to simply delete the description and re-generate the event description by using the /initialize command.

The /initialize or /meeting edit commands aren’t working

If the /initialize or /meeting edit commands are not working and a meeting needs to be created/updated before a fix is made to the commands, the Google Calendar event’s description can be created/edited manually. For a quick template for a meeting that notifies members of a single channel, the following can be copy/pasted into the event description:

{ "link": "https://meet.jit.si/bay_area", "mainChannel": "CHANNEL_NAME_HERE", "additionalChannels": [], "agendaItems": [], "notes": "", "alertType": "alert-single-channel", "eventType": "meeting" }

Be sure to replace CHANNEL_NAME_HERE with the name of the channel you want to be notified.

For further editing, the event metadata is in the form of a JSON object so be sure to run any manually edited descriptions through a JSON Validator to ensure that it is in the correct format. In addition, avoid adding any additional whitespace to the description as the parser that Minerva uses to read these descriptions is particularly sensitive to them. Below are the fields that can be within the JSON object:

  • mainChannel is the designated channel responsible for this event*

  • eventType can be: meeting (for a general or subteam meeting), test (for a cold flow, static fire), other, or none (for nothing)*

  • additionalChannels can be a space separated list of channels (prepended with a #) or 'default' for the default set of channels

    • default is currently set as: software, recovery, propulsion, payload, general, electrical, airframe, liquid_engine, business and mechanical

  • alertType*

    • alert will @channel all channels listed (main and additional)

    • alert-single-channel will @channel the main channel, and direct message single-channel guests in the additional channels

    • alert-main-channel will @channel the main channel, and post the message (sans-@channel) to additional channels

    • copy will post the message to all channels listed.

  • notes are notes appended to the end of the message if they exist

  • link link to the meeting

  • agendaItems agenda items for the event
    * denotes required item