Objective
Improve the utility of Mattermost in a collaborative environment by letting other MM users know someone is in a meeting or currently unavailable
Demonstrate that Mattermost “works with Microsoft” by embracing Microsoft business users too
Opportunities with this Project:
Understand the Microsoft development environment and challenges with On-prem deployment, etc. for future microsoft projects.
Leverage the slash command auto-complete functionality to help users with slash command usage
Explore what needs to be improved in the “Mattermost Status” area….customers often request the ability to set a custom status message. We may need to revisit the code architecture as part of this project.
Primary Use Cases
When someone is OOO, they want to have their status in MM listed as something like “Out of Office” or “In a Meeting” if there is a calendar event/OOO flag on their exchange server account so other team members know of their status and when they can reach out to them again.
Allow users to Accept/Decline meeting invites from within a chat window/Bot Conversation so they don’t need to leave Mattermost for common tasks.
Notify users of their upcoming workday and upcoming appointments so they can remain on time for meetings during the day
Success metrics
Goal | Metric |
---|---|
Demonstrate that Mattermost has over 20 customers using Microsoft with MM | Track over 20+ MS Calendar plugin activations in first 2 months of release |
MS Calendar Adoption rate average >25% of active MM users on a server | Track the number of authenticated users (MS) vs current number of MM users on that server |
Increase usage of slash commands and completion rate | Track how many events are created via slash command |
Assumptions
This integration is designed for companies using Office 365 Calendar. MS Exchange is out of scope
Assume that there will relatively high adoption of this plugin within an organization because…everybody has calendars. Not everyone uses Jira.
Not all users will be familiar with command line/slash commands for common tasks
Requirements
Requirement | User Story | Importance | Jira Issue | Notes | |
---|---|---|---|---|---|
1 | Update the status of a MM user when they are in a meeting | HIGH | |||
2 | Update the status of a user when they are scheduled to be OOO |
|
|
|
|
3 | Allow a user to create a simple calendar event from MM | LOW | |||
4 | Display the user’s “day at a glance” in a bot channel | ||||
5 | Allow users to Accept/Decline incoming invitations | ||||
6 |
User interaction and design
Welcome to CalendarBot
Consideration: When a user first is made aware of the plugin.
How can we help the integration capability “spread” across users within MM so more of them are aware of the benefits and also that it’s available to them to use. They just need to connect their account.
First bot Conversation that is presented to a user - (perhaps the admin needs to “launch” the welcome message for their users as part of deployment?):
Microsoft Permissions Landing Page
After clicking “click here” they are brought tothe Authentication screen (which we have little control over - provided by MS)
(insert approval screen here)
After initial connection to Calendar:
Location: CalendarBot channel
We need to inform the user what we are going to be doing with their statuses…
Updating the User’s Status
We can let them be notified whenever we change the status, OR just do it!
When we are about to go to modify their status, we can notify them with a message that looks like this:
The options “don’t update status this time” allows the user to remain “available” as a status if they aren’t planning to actually attend the meeting for example.
Dynamic Text: The status text could be “In a Meeting until 10am” which is automatically generated by the end time of their meeting. This would obviously be timezone specific to the user.
When a new Invitation arrives - Accept/Decline
When a new invitation comes in, we should show the user how that new invite relates to the rest of their currently scheduled day so they can decide if it makes sense to accept the request. We should provide them the options Yes/No/Maybe, but is there a way we could also let them send a note or a message asking for a slightly different time, etc. ?
Important: Present the user with the calendar events surrounding the new event.
My Daily Calendar View
Similar to how Github bot knows when you start using MM, the Calendarbot should “wake up” and do a check every morning for the user and produce a “daily agenda” for the user. If there are any meetings they haven’t accepted yet, make it easy for them to accept/decline and plan out the rest of their day. A link to their native calendar makes it easy for them to get to extra functionality only available in the MS Calendar (find other people’s times, invite others, etc.).
Notification of an upcoming meeting
When a calendar meeting is about to happen, notify the user that it is upcoming.
(QUESTION: How can a user set their notification preferences? This could get annoying BUT we have had users request it!)
User Options/Settings
We should present the user with some ways to set their preferences for the behavior of the bot. Currently this may need to be set by a slash command.
Creating a new Calendar Event
A user can create a new calendar event witht he following slash command /office cal new
Possible Slash Commands
Authentication - /office connect
/office cal help
/ocal connect
/ocal status (synchronization)
/ocal today
/ocal notifications (may be big project)
Subscriptions: Accept/Decline (options for / command needed?)
UI Considerations:
How do we expose the user’s status in the app better?
Asaad had this idea:
Open Questions
Question | Answer | Date Answered |
---|---|---|
Where will we let the user store their preferences? | Tabs in the UI? Slash command? Modal window? |
Out of Scope
A visual view of a user’s calendar in Mattermost
Connecting with Exchange servers
Allowing a user to manually update their status (Custom Status) within the MM UI.
Add Comment