Zoom Rooms and Workspaces
cancel
Showing results for 
Search instead for 
Did you mean: 
Weekly Leaderboard

What are Zoom Rooms and Workspaces?

Zoom Rooms are modern workspaces that enable in-person and remote participants to interact in real-time in a hybrid setting. Explore the Zoom Community's Recent Activity below to join the Rooms and Workspaces conversation and connect with other members. If you're still looking for support, browse our Zoom Rooms and Workspaces support articles or start a new discussion below!

Recent Activity

Providing a community space on line, creating co-hosts and enabling all participants to screenshare

I have set up a recurring meeting for a community of mine to meet regularly weeklyI have set it so the participants can join whether or not the host has started the meetingThe system will not let me set up co hosts in the set up - why not?I also can'... Show more

I have set up a recurring meeting for a community of mine to meet regularly weekly
I have set it so the participants can join whether or not the host has started the meeting
The system will not let me set up co hosts in the set up - why not?
I also can't seem to be able to allow screen sharing for all participants except when I join the meeting as well
I don't join every meeting - I have co-hosts which as I said - I can't set up ...

What can I do - I can't make myself available every week ...


Show less

reply-icon Latest Reply - 

Video recording on last meeting

There was a recording downloading and I save to my desktop as I always to but today the recording was about a second long and did not record the whole two hour meeting. I need that recording. 

reply-icon Latest Reply - 

About open lecture setting

I am conducting a lecture training through ZOOM irregularly, and I want to allow only designated attendees to log in (I cannot collect ZOOM ID). I want to use the ZOOM survey function in the training to create a test paper and have it administered. #... Show more

I am conducting a lecture training through ZOOM irregularly, and I want to allow only designated attendees to log in (I cannot collect ZOOM ID). I want to use the ZOOM survey function in the training to create a test paper and have it administered.

 

# Is it possible to restrict users when logging into Zoom?
Ex) After entering a password, only the people set below can enter by accurately entering their number and name.
241024SJN
241025SIH
241026SIE
241027SIR

 

Let's take an example with a detailed process.

1. When 30 people who applied for the course are accepted,
2. A zoom room with a limit of 30 people is opened,

3. The administrator registers 30 test numbers (or names, specific data),

4. When entering, if you are not the number,

Where can I find a way to set it so that entry is not possible?


Show less

reply-icon Latest Reply - 

Video Not Displaying for Self-Participant in Safari and Firefox with Zoom Video SDK

I am experiencing an issue with the Zoom Video SDK in my React.js project. The problem occurs specifically in Safari (MacOS) and Firefox browsers. While the video for other participants renders correctly, the self-participant's video is not displayed... Show more

 

I am experiencing an issue with the Zoom Video SDK in my React.js project. The problem occurs specifically in Safari (MacOS) and Firefox browsers. While the video for other participants renders correctly, the self-participant's video is not displayed in these browsers.

 

Here are some key details about the issue:

Browsers Affected: Safari (MacOS) and Firefox.
Behavior:
a. In Chrome, the self-participant's video works perfectly.
b. In Safari, the video element for the self-participant remains blank whereas the other person can see my video.
c. In Firefox, the same issue occurs, and no errors appear in the console.
In Chrome and Safari (iOS) everything works fine but in Safari (MacOS) and Firefox I am having this issue. The other person can see my video completely fine but in my screen my video is not being displayed. In the console it is giving below error:

 

Error:
Uncaught Error: The video-player must have a video-player-container as its ancestor element.

Even though this error is also coming in Chrome still it is working fine there. I have attached the code below. Help me solve this issue.

 

 

 

const connectVideo = async (token) => {
if (isJoining) return; // Prevent multiple join attempts
setIsJoining(true);

try {
// await zoomClient.init("en-US", "Global");
await zoomClient.init("en-US", "Global", { patchJsMedia: true, enforceMultipleVideos:true });
await zoomClient.join(roomId, token || videoToken, userName);
zoomSession = zoomClient.getMediaStream();
setRoom(zoomSession);
} catch (error) {
setIsJoining(false); // Reset joining status on error
}
};

 

 

 

const Room = ({ roomName, room, handleLogout, userId, roomId }) => {

const zoomClient = ZoomVideo.createClient();

const getBookingDetails = async () => {
try {
const res = await ApiCall({
route: `booking/get_booking_detail/${roomName}`,
token: token,
verb: "get",
params: data,
});
if (res?.status == "200") {
return setBookingDetail(res?.response?.booking_detail);
} else {
console.log("your error is there", res?.response);
}
} catch (e) {
console.log("your error is there", e);
}
};

const { isLoading, data } = useQuery("bookingDetails", getBookingDetails);

useEffect(() => {
const handleUserAdded = (payload) => {
setParticipants((prevParticipants) => [payload]);
setJoin(true);
};

const handleUserRemoved = (payload) => {
setParticipants([]);
};

const handleZoomPeer = (payload) => {
if (payload.action === "Start") {
// a user turned on their video, render it
room.attachVideo(payload.userId, 3).then((userVideo) => {
document
.querySelector("video-player-container")
.appendChild(userVideo);
});
handleUserAdded(payload);
} else if (payload.action === "Stop") {
// a user turned off their video, stop rendering it
room.detachVideo(payload.userId).then((userVideo) => {
document.querySelector("video-player-container").innerHTML = "";
});
handleUserRemoved(payload);
}
};

zoomClient.on("peer-video-state-change", handleZoomPeer);

return () => {
zoomClient.off("peer-video-state-change", handleZoomPeer);
};
}, [room, participants]);

useEffect(() => {
const userRemoved = (payload) => {
if (join) {
setJoin(false);
}
console.log("user removed", payload);
};
const newUserJoin = (payload) => {
setJoin(true);
getBookingDetails();
console.log("User Joined Called", payload);
};

zoomClient.on("user-added", newUserJoin);
zoomClient.on("user-removed", userRemoved);
}, [join]);

async function askPermission() {
// Checking initial permission state for microphone and camera
const MicroPermission = await navigator.permissions.query({
name: "microphone",
});
const VideoPermission = await navigator.permissions.query({
name: "camera",
});

console.log("Micro Permission At Start", MicroPermission);
console.log("Video Permission At Start", VideoPermission);

try {
if (MicroPermission.state === "prompt") {
Swal.fire({
title: "Microphone access!",
text: "Please allow microphone access to communicate.",
showConfirmButton: false,
icon: "info",
allowOutsideClick: false,
});

// Request microphone access
await navigator.mediaDevices.getUserMedia({ audio: true });

const againMicroPermission = await navigator.permissions.query({
name: "microphone",
});
if (againMicroPermission.state == "granted") {
room.startAudio();
setIsAudio(againMicroPermission.state);
setIsMute(true);

} else if (againMicroPermission.state == "denied") {
setIsAudio(againMicroPermission.state);
setIsMute(false);

// Handle the case when permission is denied
Swal.fire({
title: "Microphone Access Denied",
text: "You have denied microphone access. Some features may not work properly.",
icon: "error",
confirmButtonText: "Ok",
});
}
Swal.close();

} else {
setIsAudio(MicroPermission.state);
}
} catch (error) {
// Handle any errors (e.g., if the user denies access)
console.log("Error requesting microphone permission:", error);
if (
error.name === "NotAllowedError" ||
error.name === "PermissionDeniedError"
) {
Swal.fire({
title: "Microphone Access Denied",
text: "You have denied microphone access. Some features may not work properly.",
icon: "error",
confirmButtonText: "Ok",
});
}
}

try {
// If video permission state is "prompt", ask the user for permission
if (VideoPermission.state === "prompt") {
Swal.fire({
title: "Camera access!",
text: "Please allow camera access to communicate.",
showConfirmButton: false,
icon: "info",
allowOutsideClick: false,
});

// Request microphone access
await navigator.mediaDevices.getUserMedia({ video: true });

const againVideoPermission = await navigator.permissions.query({
name: "camera",
});
if (againVideoPermission.state == "granted") {
setIsCamera(againVideoPermission.state);
setIsVideo(true);
console.log(
"Camera permission granted:",
againVideoPermission.state,
isCamera
);

room.startVideo().then(() => {
room
.attachVideo(zoomClient.getCurrentUserInfo().userId, 3)
.then((userVideo) => {
document
.querySelector("video-local-player-container")
.appendChild(userVideo);
});
});
} else if (againVideoPermission.state == "denied") {
setIsCamera(againVideoPermission.state);
setIsVideo(false);
console.log(
"Camera permission denied:",
againVideoPermission.state,
isCamera
);
// Handle the case when permission is denied
Swal.fire({
title: "Camera Access Denied",
text: "You have denied microphone access. Some features may not work properly.",
icon: "warning",
confirmButtonText: "Ok",
});
}
Swal.close();
console.log(
"Again Camera Permission Check",
againVideoPermission,
isCamera
);
} else {
setIsCamera(VideoPermission.state);
}
} catch (error) {
// Handle any errors (e.g., if the user denies access)
console.log("Error requesting camera permission:", error);
if (
error.name === "NotAllowedError" ||
error.name === "PermissionDeniedError"
) {
Swal.fire({
title: "Camera Access Denied",
text: "You have denied camera access. Some features may not work properly.",
icon: "warning",
confirmButtonText: "Ok",
});
}
}
}

useEffect(() => {
askPermission();
}, []);

useEffect(() => {
socketConnection.on("doctorCompleted", (data) => {
console.log("doctor left the video");
console.log(data?.booking_id, roomId, data?.booking_id == roomId);
if (data?.booking_id == roomId) setDoctorCompleted(true);
});
}, []);

// on metting leave
const onMeetingLeave = (id) => {
if (bookingDetail?.doctor_id?.user_id) {
Swal.fire({
title: "Are you sure?",
text: "Do you want to end consultation?",
icon: "warning",
showCancelButton: true,
cancelButtonText: "No",
confirmButtonText: "Yes",
confirmButtonColor: "#c82333",
}).then(async (result) => {
if (result.isConfirmed) {
handleLogout(true);
}
});
} else {
if (!bookingDetail?.doctor_id?.user_id) {
Swal.fire({
title: "Are you sure?",
text: "Do you want report delay from doctor and reschedule?",
icon: "warning",
showCancelButton: true,
cancelButtonText: "No",
confirmButtonText: "Yes",
confirmButtonColor: "#c82333",
}).then(async (result) => {
if (result.isConfirmed) {
setShowReportModal(true);
}
});
}
}
};
// main return

const sendNotificationHandler = async () => {
try {
const res = await ApiCall({
route: `receiptionist/add_notifications_for_receptionists`,
token: token,
verb: "post",
params: {
bookingId: bookingDetail?._id,
},
});
console.log(res?.response, "response");
if (res?.status == "200") {
console.log("res", res?.response);
Swal.fire(
"Your request for urgent attention has been notified.",
"Staff will be in contact with you soon.",
"success"
);
setTimePassed(new Date());
} else {
console.log("your error is there", res?.response);
}
} catch (err) {
console.log("Coudln't send", err);
}
};

const reportAndRescheduleHandler = async () => {
setShowReportModal(true);
};

const closeReportModal = () => {
setShowReportModal(false);
};

let items = [];

if (
participants?.length <= 0 &&
!bookingDetail?.doctor_id?.user_id &&
(new Date() - timePassedForDelay) / (1000 * 60) > 20
) {
items.push({
id: "1",
label: (
<PrimaryButton
className="report-button "
onClick={reportAndRescheduleHandler}
>
Report Delay & Reschedule
</PrimaryButton>
),
});
}

if (
participants?.length <= 0 &&
!bookingDetail?.doctor_id?.user_id &&
(new Date() - timePassed) / (1000 * 60) > 4
) {
items.push({
id: "2",
label: (
<PrimaryButton
className="notify-receptionist"
onClick={sendNotificationHandler}
icon={
<i
style={{ transform: `rotate(0deg)` }}
class="fa-solid fa-phone"
></i>
}
>
Ring again
</PrimaryButton>
),
});
}

const toggleVideo = async () => {
console.log("Valuevale", isVideo);
if (isCamera === "granted") {
if (isVideo) {
console.log("video is allowed", isVideo);
room.stopVideo().then(() => {
room
.detachVideo(zoomClient.getCurrentUserInfo().userId)
.then((userVideo) => {
document.querySelector("video-local-player-container").innerHTML =
"";
});
});
setIsVideo(false);
} else {
room.startVideo().then(() => {
room
.attachVideo(zoomClient.getCurrentUserInfo().userId, 3)
.then((userVideo) => {
console.log("userVideo", userVideo);
document
.querySelector("video-local-player-container")
.appendChild(userVideo);
});
});
setIsVideo(true);
}
} else {
Swal.fire({
title: "Camera Permission",
text: "You have denied camera access. Please allow from the setting.",
icon: "warning",
confirmButtonText: "Ok",
});
}
};

useEffect(() => {
if (zoomClient && room) {
zoomClient
.getAllUser()
.filter((user) => user.userIdentity !== userId)
.forEach(async (user) => {
if (user.userIdentity !== userId) {
console.log(user, "user already joined");
if (user.bVideoOn) {
room
.detachVideo(user.userId)
.then((userVideo) => {
document.querySelector("video-player-container").innerHTML =
"";
})
.then(() => {
room.attachVideo(user.userId, 3).then((userVideo) => {
document
.querySelector("video-player-container")
.appendChild(userVideo);
});
});

setParticipants([user]);
}
setJoin(true);
setUsers(user);
}
});
}
}, [zoomClient, room]);

const toggleAudio = async () => {
try {
console.log("ismute value is", isMute);
if (isAudio === "granted") {
await room.startAudio();
if (isMute) {
await room.muteAudio();
setIsMute(false);
} else {
await room.unmuteAudio();
setIsMute(true);
}
} else {
Swal.fire({
title: "Microphone Access Denied",
text: "You have denied microphone access. Please allow from the setting.",
icon: "warning",
confirmButtonText: "Ok",
});
}
} catch (error) {
console.error("Error toggling audio:", error);
}
};

console.log(participants);

return (
<>
<div className="main-container-video-chat">
<div className="video-chat-container-header">
{!isMobile && (
<DrawerApp
getBookingDetails={getBookingDetails}
bookingDetail={bookingDetail}
/>
)}
<img
onClick={() => navigate("/my-consultation")}
src={logo1}
alt="logo"
className="video-chat-header-logo"
/>

<button
className="custom-button-video-call mobile-end-consultation end-consultation"
onClick={() => onMeetingLeave(bookingDetail?._id)}
>
End
</button>
</div>
<div className="video-chat-section-container-main">
<div className="video-chat-inner-contianer">
<div className="videoDiv-main">
<div
className="remote-video"
style={{ display: participants.length == 0 ? "none" : "" }}
>
<video-player-container></video-player-container>
</div>

{join ? (
participants.length == 0 ? (
<div class="video-call-ended-text-in-box">
<p>Doctor has turned off their camera!</p>
</div>
) : (
""
)
) : (
<div class="video-call-ended-text-in-box">
<h4 class="h4">Consultation Paused!</h4>
<p>
{bookingDetail?.doctor_id?.user_id
? " We've notified the doctor. "
: " "}
Doctor will be in the session soon, please don't hesitate to
ask any questions in chat.
</p>
</div>
)}

<div className="local-user-video">
{isCamera === "granted" ? (
isVideo ? (
<div className="local-video">
<video-local-player-container></video-local-player-container>
</div>
) : (
<div className="local-user-off-cam">
<i class={`fa-solid fa-video-slash text-7`}></i>
<p>Camera turned off.</p>
</div>
)
) : (
""
)}
<video-local-player-container></video-local-player-container>
</div>

{isMobile && (
<div className="mobile-long-buttons-on-top">
{items?.length == 2
? items?.find((el) => el?.id == "1")?.label
: items?.find((el) => el?.id == "2")?.label}
</div>
)}
<div className="video-chat-controls">
{isMobile && (
<DrawerApp
getBookingDetails={getBookingDetails}
bookingDetail={bookingDetail}
/>
)}
{isMobile && (
<ChatDrawer
selectedChat={{
_id: bookingDetail?.chat_id,
booking: bookingDetail,
}}
/>
)}

<button
className={
isCamera === "granted"
? "chat-control-button video-active"
: "chat-control-button"
}
onClick={() => toggleVideo()}
style={{
backgroundColor:
isCamera === "granted"
? isVideo
? "blue"
: "red"
: "orange",
}}
title={
isCamera == "granted"
? "Video Management"
: "Please provide video permissions"
}
>
<i
class={`fa-solid fa-video${isVideo ? "" : "-slash"} text-7`}
></i>
</button>

<button
className={
isAudio === "granted"
? "chat-control-button video-active"
: "chat-control-button"
}
onClick={() => toggleAudio()}
style={{
backgroundColor:
isAudio === "granted"
? isMute
? "blue"
: "red"
: "orange",
}}
title={
isMute
? "Audio Management"
: "Please provide audio permissions"
}
>
<i
class={`fa-solid fa-microphone${
isMute ? "" : "-slash"
} text-3`}
></i>
</button>
</div>
<div className="video-chat-main-buttons">
<PrimaryButton
className="end-consultation"
onClick={() => onMeetingLeave(bookingDetail?._id)}
>
End Consultation
</PrimaryButton>
{items?.length == 2
? items?.find((el) => el?.id == "1")?.label
: items?.find((el) => el?.id == "2")?.label}
</div>
</div>
</div>

{bookingDetail && !isMobile && (
<ChatBox
selectedChat={{
_id: bookingDetail?.chat_id,
booking: bookingDetail,
}}
/>
)}
</div>
</div>
<ReportModal
open={showReportModal}
close={closeReportModal}
bookingId={bookingDetail?._id}
handleLogout={handleLogout}
/>
</>
);
};

export default Room;

 


Show less

reply-icon Latest Reply - 

Zoom Room Updates not Publishing (newcloud.media)

Hello, We are using a Newcloud.Media account to post when visitors show up to our location. This integrates with our Zoom Room via showing a website which updates every 10 minutes. The issue we have is that sometimes this update takes HOURS to happen... Show more

Hello,

 

 

We are using a Newcloud.Media account to post when visitors show up to our location.  This integrates with our Zoom Room via showing a website which updates every 10 minutes.  The issue we have is that sometimes this update takes HOURS to happen.  Typically more than 2-4 hours to display an update to this site that shows when a visitor is coming.  We have tried adding the website in twice to force it to update every 10 minutes- but when you publish the change, it still does not occur at a reasonable time.  We want to be able to add when a visitor is coming with it updating at a much faster rate - especially if we want to welcome a visitor and it is less than a 2-4 hour notice.

 

Does anyone have this issue and know what may be blocking this digital signage room to update at a reasonable time?  Any help would be appreciated.  Again, it is a site that is being updated via newcloud.media

 

Thank You!


Show less

reply-icon Latest Reply - 

Tap Controller to Start Display

Does anyone know how to change the background image of the screen that says "Tap Controller to Start?" The default is a shot of the Golden Gate bridge in the clouds. We've manage to change the display for Digital Signage but when there's a call start... Show more

Does anyone know how to change the background image of the screen that says "Tap Controller to Start?" The default is a shot of the Golden Gate bridge in the clouds. We've manage to change the display for Digital Signage but when there's a call starting, it changes to this image, which we'd like to change. Can't figure it out!

 

here is an image: https://postimg.cc/TKzXmcxn  

 

Thanks in advance!


Show less

reply-icon Latest Reply - 

Zoom não dá depois de mudar de local

gravei um vídeo com zoom e ficou como uma arquivo em vídeo na pasta gerada para tal. Abri e o arquivo estava a funcionar. Copiei para outro local para zupar e deixou de funcionar. Alguém me pode ajudar. Obrigada 

'zoom rooms is not configured for this account' message appearing despite rooms working fine.

Hi All, hope someone has an idea how to fix this. We have several zoom rooms, two of which keep displaying the following message:Zoom rooms is not configured for this account. you can switch account or exit to configure These rooms are run via Mac Mi... Show more

Hi All, hope someone has an idea how to fix this.

 

We have several zoom rooms, two of which keep displaying the following message:

Zoom rooms is not configured for this account. you can switch account or exit to configure

 

These rooms are run via Mac Minis. This message is overlayed over the actual zoom room screen, which still works perfectly fine. If i do click exit, and restart zoom rooms, it logs in automatically and everything is fine. Then within the next few days however, the message pops up again. I've tried reinstalling zoom rooms but not sure what else to try

 

Adam

 


Show less

Poly Studio X30 built-in MIC

I have a Poly Studio X30 that was working fine a couple of weeks back. Now my iPad controller does not detect a mic. There is no microphone option. If i change the Studio X30 to device mode, I can connect a laptop use studio x30 mic and speakert then... Show more

I have a Poly Studio X30 that was working fine a couple of weeks back. Now my iPad controller does not detect a mic. There is no microphone option. If i change the Studio X30 to device mode, I can connect a laptop use studio x30 mic and speakert then i open zoom workspace and it works fine. What could be causing the problem? 


Show less

reply-icon Latest Reply - 

Zoom Rooms Installer x64 5.15.7.3094 MSI setup hangs

When installing or upgrading Zoom Rooms Installer x64 5.15.7.3094 MSI (zoomrooms-5.15.7.3094-x64.msi) on Windows 10 22H2 PCs, the setup/install hangs and never completes. I've eliminated several security agents as the cause by uninstalling the agents... Show more

When installing or upgrading Zoom Rooms Installer x64 5.15.7.3094 MSI (zoomrooms-5.15.7.3094-x64.msi) on Windows 10 22H2 PCs, the setup/install hangs and never completes. I've eliminated several security agents as the cause by uninstalling the agents before attempting to install Zoom Rooms Installer. We use an enterprise deployment tool called Tanium, and all installs/upgrades run as the NT AUTHORITY\SYSTEM account.

 

The installation command line is:

C:\WINDOWS\System32\msiexec.exe /i "C:\Program Files (x86)\Tanium\Tanium Client\Tools\SoftwareManagement\data\temp\tasks\Deployment_89_task_141\zoomrooms-5.15.7.3094-x64.msi" /qn /norestart ALLUSERS=1 ACCEPTGDPR=true SILENT=true /lvx* "C:\<proprietary folder>\logs\Zoom-Rooms-Installer-5.15.7-20230923150010-install-silent-Setup.log"

 

The install hang does not occur on every PC and about 50% of them succeed. I'm stuck at trying to figure out why the setup is hanging. Please help!

 

The entire MSI log is attached as "Zoom Rooms Installer x64 5.15.7.3094 MSI Setup Hang Log.pdf". The last line in the "Hang" log is where the hang occurs and there is no further logging after that. The C:\jenkins\ folder does not exist on any of our PCs, even those where the installation succeeds.  I've also attached an example log file (Zoom Rooms Installer x64 5.15.7.3094 MSI Setup Success Log.pdf) where the install was successful, for comparison.

 

All assistance will be much appreciated!

Scott

 


Show less

reply-icon Latest Reply -