Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Schedule meetings inside Talk #6516

Open
ChristophWurst opened this issue Nov 21, 2024 · 7 comments · Fixed by nextcloud/server#49731
Open

Schedule meetings inside Talk #6516

ChristophWurst opened this issue Nov 21, 2024 · 7 comments · Fixed by nextcloud/server#49731
Assignees
Labels
2. developing Work in progress enhancement New feature request

Comments

@ChristophWurst
Copy link
Member

Is your feature request related to a problem? Please describe.

As a Nextcloud user I want to be able to schedule meetings right from Talk, to avoid switching app and having to add participants as attendees manually.

Describe the solution you'd like

Find a way to integrate with Talk and show an action to Schedule meeting. E.g. next to the call button, so that there is a way to have an instant meeting and a scheduled one. Take the participants and add everyone with an email address as attendee.

Follow-up:

  • Allow participant selection, e.g. if you only want to have a meeting with a sub group

Describe alternatives you've considered

N/a

Additional context

N/a

@ChristophWurst ChristophWurst added 1. to develop Accepted and waiting to be taken care of enhancement New feature request labels Nov 21, 2024
@ChristophWurst
Copy link
Member Author

Talked with @nickvergessen and @st3iny about the implementation.

There are three options:

  1. Implement OCS API
    a. List user's calendars
    b. Create event/meeting. Passes (Talk) user UIDs as data.
    c. Optional: free/busy abstraction for a given list of (Talk) user UIDs. Requires the Talk UI (and clients) to implement their own free/busy or a shared component lib provided by groupware.
  2. Just jump into Calendar, pass the participants somehow to prefill event attendees. This won't work with any clients, only with web.
  3. Implement an OCP API, Talk implements an OCS endpoint for it.
    a. List user's calendars
    b. Create event/meeting. Talk converts participants to email addresses. Passes emails as attendee data.
    c. Optional: free/busy abstraction for a given list of email addresses. Requires the Talk UI (and clients) to implement their own free/busy or a shared component lib provided by groupware.

Option 3 sounds most promising because Talk can do the translation from participants to email addresses and there is the option to offer the feature in clients too.

Other notes:

  • Be cautious with the wording of "Instant meeting" because this will also be a feature in the future
  • The Talk frontend has all information about the participants
  • Soon Talk will generate individual links for guest attendees. This has to be reflected in the invite ICS so external users still have the correct link when they click on the link in the ICS.

@ChristophWurst
Copy link
Member Author

Possible dup of nextcloud/spreed#6292

@nickvergessen
Copy link
Member

To start/continue with the work, we will follow Option 3 now?

3.a should be solvable with OCP\Calendar\IManager::getCalendarsForPrincipal()

But for 3.b the ICalendar needs a method to create an event with name, description, location, and a list of email addresses

@nickvergessen
Copy link
Member

There seems to be a bug with the permissions.
the ICalendar::getPermissions object seems to return 7, no matter how the calendar is shared:

Permission Sharing
7 Image
7 Image

@nickvergessen
Copy link
Member

Fixed in nextcloud/server#49731

@st3iny
Copy link
Member

st3iny commented Dec 30, 2024

I did some digging into the free busy code in Sabre and our code base: Creating a OCP abstraction for the free busy logic is very hacky as the code in Sabre is currently only working in a HTTP request/response context called by the Server base class.

It would be possible to create a reusable service from the inner code. However, the code block requires access to a Sabre Server instance to query additional plugins. Thus, we would need to somehow inject the server instance into our container which would be very hacky.

The easiest solution would be to simply use the existing CalDAV API (send a FREEBUSY ics and parse the response xml). This requires either copy-pasting some code to serialize ICS and parse XML responses into the Talk frontend or creating a reusable (js) library.

@ChristophWurst ChristophWurst moved this from 📄 To do to 🏗️ In progress in 💌 📅 👥 Groupware team Jan 7, 2025
@ChristophWurst ChristophWurst added 2. developing Work in progress and removed 1. to develop Accepted and waiting to be taken care of labels Jan 7, 2025
@st3iny
Copy link
Member

st3iny commented Jan 13, 2025

APIs in server are done and merged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
2. developing Work in progress enhancement New feature request
Projects
Status: 🏗️ In progress
Development

Successfully merging a pull request may close this issue.

3 participants