calcom / cal.com

Scheduling infrastructure for absolutely everyone.
https://cal.com
Other
32.23k stars 7.92k forks source link

[CAL-3943] Zoom integration doesn't follow the zoom app settings for auto-record #15474

Closed milospuac closed 2 months ago

milospuac commented 4 months ago

Screenshot 2024-06-18 at 10.05.46.png

From SyncLinear.com | CAL-3943

dosubot[bot] commented 4 months ago

To ensure that meetings scheduled via Cal.com follow the Zoom app settings for auto-recording, you need to modify the translateEvent function in the VideoApiAdapter to set the auto_recording setting according to your preference.

Here is the relevant part of the code with the modification:

const translateEvent = (event: CalendarEvent) => {
  const getRecurrence = ({
    recurringEvent,
    startTime,
    attendees,
  }: CalendarEvent): { recurrence: ZoomRecurrence; type: 8 } | undefined => {
    if (!recurringEvent) {
      return;
    }

    let recurrence: ZoomRecurrence;

    switch (recurringEvent.freq) {
      case Frequency.DAILY:
        recurrence = {
          type: 1,
        };
        break;
      case Frequency.WEEKLY:
        recurrence = {
          type: 2,
          weekly_days: dayjs(startTime).tz(attendees[0].timeZone).day() + 1,
        };
        break;
      case Frequency.MONTHLY:
        recurrence = {
          type: 3,
          monthly_day: dayjs(startTime).tz(attendees[0].timeZone).date(),
        };
        break;
      default:
        return;
    }

    recurrence.repeat_interval = recurringEvent.interval;
    if (recurringEvent.until) {
      recurrence.end_date_time = recurringEvent.until.toISOString();
    } else {
      recurrence.end_times = recurringEvent.count;
    }

    return {
      recurrence: {
        ...recurrence,
      },
      type: 8,
    };
  };

  const recurrence = getRecurrence(event);
  return {
    topic: event.title,
    type: 2,
    start_time: dayjs(event.startTime).utc().format(),
    duration: (new Date(event.endTime).getTime() - new Date(event.startTime).getTime()) / 60000,
    timezone: event.organizer.timeZone,
    agenda: event.description,
    settings: {
      host_video: true,
      participant_video: true,
      cn_meeting: false,
      in_meeting: false,
      join_before_host: true,
      mute_upon_entry: false,
      watermark: false,
      use_pmi: false,
      approval_type: 2,
      audio: "both",
      auto_recording: "cloud", // Change this to "local" or "cloud" as per your Zoom settings
      enforce_login: false,
      registrants_email_notification: true,
    },
    ...recurrence,
  };
};

By setting auto_recording to "cloud" or "local", you ensure that the meetings scheduled via Cal.com will follow the Zoom app settings for auto-recording [1].

To continue talking to Dosu, mention @dosu.

vijayraghav-io commented 4 months ago

/attempt

@milospuac This issue can be assigned to me, i am working on this -

sean-brydon commented 4 months ago

/attempt

@milospuac This issue can be assigned to me, i am working on this -

  • creating zoom api interface to fetch user settings ..users/me/settings
  • retrieve recording settings from above api call
  • call POST user/me/meetings with above setting

Hey bud - we don't assign issues but please feel free to work on it and submit a PR

vijayraghav-io commented 4 months ago

sure @sean-brydon Thankyou!

milospuac commented 4 months ago

@sgriff96-brydon I think it also doesn't follow the password settings set in zoom. Link generated through Cal.com booking doesn't respect the password settings for the meeting. Can you include it into this one as well?

vijayraghav-io commented 4 months ago

@sean-brydon , this is generic implementation any future zoom user setting required can be easily updated. https://github.com/calcom/cal.com/pull/15489

achalliburton commented 1 month ago

This item is not completed as reported here: https://github.com/calcom/cal.com/pull/15489