mattermost / mattermost-plugin-zoom

Zoom plugin for Mattermost :electric_plug:
Apache License 2.0
106 stars 68 forks source link

Schedule meetings #82

Open Jacq opened 4 years ago

Jacq commented 4 years ago

Is it possible or in the roadmap to schedule meetings using the registered zoom account? Cheers

hanzei commented 4 years ago

@aaronrothschild :point_up:

levb commented 4 years ago

Excellent feature proposal, we need to spec out the UX and the turn it into a Help Wanted

aaronrothschild commented 4 years ago

@Jacq The ability to create a scheduled meeting is not in the roadmap for the zoom plugin yet. We have a project (Slash Command Auto complete) that will be adding a date picker component which is needed for us to schedule meetings. Once we have that functionality, we can consider allowing users to schedule a zoom meeting from MM.

larkox commented 4 years ago

@aaronrothschild Maybe not the best usecase, but maybe a flow could work here. Something like: User: /zoom schedule Bot: Select Topic User: My new meeting Bot: Select Date (dd/mm/aaaa) User: May 3rd Bot: Cannot recognize format. Please write in dd/mm/aaaa format. User: 03/05/2020 Bot: Select time (02:30PM) User: 08:30AM Bot: We have scheduled the meeting "My new meeting" for 03/05/2020 at 08:30AM. Here is the link. Would you like to post the meeting on channel X? (Yes/No)

Jacq commented 4 years ago

A good starting point could be the reminder plugin that follows a similar workflow but also includes a dialog and the possibility to cancel previous reminds: https://github.com/scottleedavis/mattermost-plugin-remind

larkox commented 4 years ago

As a first approach we would like to:

Bonus: Add a reminder when the meeting is about to start.

raghavaggarwal2308 commented 9 months ago

@larkox @mickmister I am working on this issue currently. I have a few clarifications to ask:

  1. Do we need to add the support for using PMI while scheduling the meeting? I don't see an option to do that while scheduling a meeting from Zoom.
  2. Do we need to add a reminder for the meeting?

If we do the above two things, I think we should do them as separate issues as this will make the PR very big and hard to review. Please let me know your opinions on this.

  1. Which fields should we include in the modal for scheduling the meeting? Currently, I have added the topic, time, and date fields.

These are some screenshots of what we have till now: image

image

image

larkox commented 9 months ago

@raghavaggarwal2308 I think that you cannot schedule a meeting with your PMI in Zoom, but I am not sure neither. Would be nice to double check with the Zoom API (or even their user interface). We should give the same options. That being said, it is something we can iterate around.

The reminder is a nice to have. It can be considered for a future iteration.

The fields LGTM. Again, it would be nice to verify with the Zoom user interface, to make sure we are not missing anything obvious.

Another bonus point (can be done in future iterations) is that the scheduled meeting message doesn't show the "Join meeting" button until it is near the meeting (10 minutes before the meeting?) and it shows some kind of countdown to the meeting (e.g. "This meeting will start in 2 days", "This meeting will start in 30 minutes", etc...). This is something we would have to flesh out better, but again, can be handled in a future different PR.

mickmister commented 9 months ago

@matthewbirtch @asaadmahmood Is this something we want to support in the Zoom plugin? Curious what flow/outcome on how we expect this feature to work if so.

@raghavaggarwal2308 I'm thinking if we have to implement the scheduling logic ourselves then we shouldn't implement this for the Zoom plugin. The plugin is essentially meant to be a "portal" into Zoom, and not manage the lifecycle of future Zoom meetings. That puts Mattermost in the position of "missed" meetings if there is an issue with scheduling the meeting.

More specifically, if we have to "wait" until the time of the meeting to create the meeting, then we shouldn't implement this. But if Zoom's API supports scheduling in advance, then this sounds fine to me. Definitely want to get the UX down before we implement the feature though.

Do we need to add a reminder for the meeting?

Unless Zoom has a webhook event for this, then 3/5 we shouldn't include that in this feature

matthewbirtch commented 9 months ago

@mickmister Zoom definitely allows for scheduling meetings, and I think this could be a valuable addition.

This is what fields are available in Zoom when scheduling an event:

image

I think the fields that are most relevant for scheduling a meeting in MM are:

I think we could leave out the recurring meeting part to start. And attendees are sort of assumed based on the channel it's being scheduled for, so we may not need that to start either.

Do we need to add the support for using PMI while scheduling the meeting? I don't see an option to do that while scheduling a meeting from Zoom.

As per the screenshot above, it looks like you can choose between an automatically generated ID or your PMI when scheduling a meeting in Zoom.

Do we need to add a reminder for the meeting?

A reminder would be great (5 minutes before meeting starts). I suppose that could be a follow-up PR to this, but it definitely seems important - especially if you're scheduling a meeting far in advance. Otherwise, it will be forgotten and no one will remember that the meeting is happening in the channel.

Another bonus point (can be done in future iterations) is that the scheduled meeting message doesn't show the "Join meeting" button until it is near the meeting (10 minutes before the meeting?) and it shows some kind of countdown to the meeting

I think we could start simple here and only show 'join meeting' if it's 5 minutes or less before the meeting starts. Otherwise hide the button.

That's where the reminder could come in as well. The reminder could essentially be the same post repeated in the channel at the 5 minutes mark before the meeting begins and it would have the button now active/visible to join the meeting.

asaadmahmood commented 9 months ago

I agree with the points mentioned above.

mickmister commented 9 months ago

@matthewbirtch Thanks for the deep analysis :+1:

There is a lot of overlap between this form and the Google Calendar form, so we probably want to converge or avoid duplicating efforts, trying to keep the solutions as conformant as possible. cc @fmartingr @raghavaggarwal2308 https://github.com/mattermost/mattermost-plugin-google-calendar/blob/master/webapp/src/components/modals/create_event_form.tsx

I think we could leave out the recurring meeting part to start

I agree with this. Creating the UI for this is the main challenge/effort, since Zoom would handle the scheduling etc. Implementing the flow for all of the recurring meeting options would be a large effort to develop and validate/test.

And attendees are sort of assumed based on the channel it's being scheduled for, so we may not need that to start either.

The main drawback I can think of if there are no attendees selected is that it won't show on everyone's Zoom calendar. Maybe that's not worth implementing just for that reason.

A reminder would be great (5 minutes before meeting starts). I suppose that could be a follow-up PR to this, but it definitely seems important - especially if you're scheduling a meeting far in advance. Otherwise, it will be forgotten and no one will remember that the meeting is happening in the channel.

Adding a "5 minute reminder" will indeed increase the scope of this quite a bit (introducing time management in general to the plugin). A more straightforward version of this would be to use the Zoom "meeting started" event to ping the channel that the meeting has started. When the event is initially created in Mattermost, we can subscribe to that (potentially recurring) meeting id, to create posts whenever the meeting is started in the future. It's not perfect, but it would be a very small change to make this work.

I think we could start simple here and only show 'join meeting' if it's 5 minutes or less before the meeting starts. Otherwise hide the button.

I like this idea. We definitely don't want to convey "join meeting" if the meeting time is far in the future.

It would also be interesting to subscribe an existing meeting id to a channel, so you could get benefits of reminding for an existing recurring meeting.

raghavaggarwal2308 commented 9 months ago

There is a lot of overlap between this form and the Google Calendar form, so we probably want to converge or avoid duplicating efforts, trying to keep the solutions as conformant as possible. cc @fmartingr @raghavaggarwal2308

@mickmister Currently we are using the Mattermost interactive dialog for creating the form. Should we use a custom component instead?

Just to summarize:

Please correct me if I missed something.

mickmister commented 9 months ago

Currently we are using the Mattermost interactive dialog for creating the form. Should we use a custom component instead?

@raghavaggarwal2308 The date picker is one of the main reasons why we chose to use a custom component. I'm not sure if manually entering the date is good enough UX for this feature. I'll ask @matthewbirtch for his opinion on this.

We'll also need to take into account timezones either way

(Checkbox) Post meeting link to channel (default checked) (The join meeting button will not be present in this post)

I think this is referring to the "post that happens at the time of the meeting", which should have the join meeting button as you mentioned

raghavaggarwal2308 commented 9 months ago

I think this is referring to the "post that happens at the time of the meeting", which should have the join meeting button as you mentioned

@mickmister According to the previous flow I think this checkbox is to post in the channel just after submitting the dialog.

Something like the screenshot below but without the join meeting button. We need to change the name of the checkbox to something like "Post meeting details in the channel". image

We can also use it as you suggest (That should we post the meeting link in the channel if the meeting is about to start.)

Please let me know your thoughts on this.

mickmister commented 9 months ago

@raghavaggarwal2308 Maybe we can have two checkboxes. Something like:

Also, a workaround for the user having a 5 minute reminder is to schedule the meeting 5 minutes before the time they specify. We would tell them that we're doing this so it's not a surprise, or they could do that manually instead. A little hacky but it allows them to have a reminder ahead of time

raghavaggarwal2308 commented 9 months ago

Maybe we can have two checkboxes. Something like:

@mickmister Sounds good to me.

Also, a workaround for the user having a 5 minute reminder is to schedule the meeting 5 minutes before the time they specify. We would tell them that we're doing this so it's not a surprise, or they could do that manually instead. A little hacky but it allows them to have a reminder ahead of time

2/5 I am a little dicey about this. We will be showing the correct time on the MM post but on Zoom it will be showing a time 5 min earlier. Although we already told the user that we are doing so, it still does not sound very user-friendly. I think the user can do it manually if he wants. Please let me know your opinions.

raghavaggarwal2308 commented 8 months ago

2/5 I am a little dicey about this. We will be showing the correct time on the MM post but on Zoom it will be showing a time 5 min earlier. Although we already told the user that we are doing so, it still does not sound very user-friendly. I think the user can do it manually if he wants. Please let me know your opinions.

@mickmister Can you please let us know your opinions on this?

mickmister commented 8 months ago

@raghavaggarwal2308 Yeah let's not do the 5 minute before thing

matthewbirtch commented 8 months ago

@raghavaggarwal2308 The date picker is one of the main reasons why we chose to use a custom component. I'm not sure if manually entering the date is good enough UX for this feature. I'll ask @matthewbirtch for his opinion on this.

Apologies for the late reply on this. Manual text entry for a date definitely would not work well and would be very error-proned for users. A date picker is pretty important/expected here.