{"id":4148,"date":"2021-11-09T17:31:03","date_gmt":"2021-11-09T09:31:03","guid":{"rendered":"https:\/\/www.enablex.io\/developer\/?page_id=4148"},"modified":"2022-04-11T13:15:57","modified_gmt":"2022-04-11T05:15:57","slug":"floor-access-control","status":"publish","type":"page","link":"https:\/\/doc.smartflomeet.ttns.in\/developer\/video-api\/client-api\/web-toolkit\/floor-access-control\/","title":{"rendered":"Floor Access Control: Web SDK &#8211; Video API"},"content":{"rendered":"\n<p>In Lecture Mode, only the Moderator can publish a stream in the Room and the participants can only subscribe to the Moderator\u2019s stream. If a participant(s) wants to publish their Stream during the session, they need to request the Moderator for Floor Access.<\/p>\n\n\n\n<h4>Table of Contents<\/h4>\n\n\n\n<ul><li><a href=\"#request-floor-access\">Request Floor Access<\/a><\/li><li><a href=\"#cancel-floor-access\">Cancel Requested Floor Access<\/a><\/li><li><a href=\"#deny-floor-access\">Deny Floor Access<\/a><\/li><li><a href=\"#grant-floor-access\">Grant Floor Access<\/a><\/li><li><a href=\"#finish-floor-access\">Finish Granted Floor Access<\/a><\/li><li><a href=\"#release-floor-access\">Release granted Floor Access<\/a><\/li><li><a href=\"#invite-floor\">Invite Participant to Floor<\/a><\/li><\/ul>\n\n\n\n<p>The Floor Access Controls are implemented using the following APIs:<\/p>\n\n\n\n<a name=\"request-floor-access\"><\/a>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3>Request Floor Access <\/h3>\n\n\n\n<p>The&nbsp;<code>EnxRoom.requestFloor()<\/code>&nbsp;method allows a Participant to request the Moderator for Floor Access.<\/p>\n\n\n\n<p><strong>Method:<\/strong> <code>EnxRoom.requestFloor(Callback)<\/code> <\/p>\n\n\n\n<p><strong>Notification Event:<\/strong> <\/p>\n\n\n\n<p><code>floor-requested<\/code> &#8211; Notification to the Moderator when a Participant\u2019s access request is received.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">room.requestFloor(function (arg) {\n        if(arg.result == 1701) { \/* Success *\/  }\n        else { \/* Error - Print arg.msg *\/ }\n});\n\n\/\/ Moderator receives Floor Access Request\nroom.addEventListener(\"floor-requested\", function (evt) {             \n        \/*  evt.users.clientId, evt.users.name *\/\n}); <\/pre>\n\n\n\n<p><strong>Error Codes \/ Exception<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Code<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>4101<\/td><td>Unauthorized Access. When a user with <code>moderator<\/code> role invokes <code>requestFloor()<\/code>. <\/td><\/tr><tr><td>1702<\/td><td>Repeated Floor Request while a previous floor request is pending at the <code>moderator<\/code> end. <\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<a name=\"cancel-floor-access\"><\/a>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3>Cancel Requested Floor Access <\/h3>\n\n\n\n<p>The&nbsp;<code>Enxroom.cancelFloor()<\/code>&nbsp;method allows participants to cancel their request for Floor Access pending for Moderator\u2019s approval.<\/p>\n\n\n\n<p><strong>Method:<\/strong>&nbsp;<code>EnxRoom.cancelFloor(Callback)<\/code><\/p>\n\n\n\n<p><strong>Parameter:<\/strong><\/p>\n\n\n\n<p><code>Callback<\/code> &#8211;&nbsp;To know status of Cancelation request.<\/p>\n\n\n\n<p><strong>Event Notifications:<\/strong><\/p>\n\n\n\n<ul><li><code>floor-cancelled<\/code> &#8211; Notification to the Moderator when the participant cancels the Floor Access Request.<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">room.cancelFloor(function (arg) {\n        if(arg.result == 0) {\n\t\t\/\/ Floor Reqeust is cancelled\n\t}\n});\n\n\/\/ Moderator receives Floor Cancellattion Notification\nroom.addEventListener(\"floor-cancelled\", function (evt) {             \n        \/\/ evt.msg.clientId = The participant who cancelled\n}); <\/pre>\n\n\n\n<p><strong>Error Codes \/ Exceptions<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Code<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>4101<\/td><td>Unauthorized Access. When a user with <code>moderator<\/code> role invokes <code>cancelFloor()<\/code>. <\/td><\/tr><tr><td>1707<\/td><td>Invalid Request. When participant tries <code>cancelFloor()<\/code> without requesting Floor Access.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<a name=\"deny-floor-access\"><\/a>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3>Deny Floor Access<\/h3>\n\n\n\n<p>The&nbsp;<code>EnxRoom.denyFloor()<\/code>&nbsp;method allows the Moderator to deny a Participant\u2019s request for Floor Access.<\/p>\n\n\n\n<p><strong>Method:&nbsp;<\/strong><code>EnxRoom.denyFloor(ClientID, Callback)<\/code>&nbsp;<\/p>\n\n\n\n<p><strong>Notification Event:<\/strong>&nbsp;<\/p>\n\n\n\n<p><code>floor-denied<\/code>&nbsp;\u2013 Notification to the denied Participant and Moderator along with the responsible Moderator&#8217;s ID when the Floor Access is denied. <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">room.denyFloor(clientId, function (arg) {\n    if (arg) { \/* Success *\/  }\n    else { \/* Error - Print arg.msg *\/ }\n});\n\n\/\/ Affected Participant and Moderator(s) are notified about denied request\nroom.addEventListener(\"floor-denied\", function (evt) {\n   \/\/ evt.msg.moderatorId = The modeator who denied\n   \/\/ evt.msg.clientId = The Participan who is denied \n}); <\/pre>\n\n\n\n<p><strong>Error Codes \/ Exceptions<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Code<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>4101<\/td><td>Unauthorized Access. When a participant invokes <code>denyFloor()<\/code>. <\/td><\/tr><tr><td>1711<\/td><td>When <code>denyFloor()<\/code> is called with an invalid Client ID.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<a name=\"grant-floor-access\"><\/a>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3> Grant Floor Access <\/h3>\n\n\n\n<p>The&nbsp;<code>EnxRoom.grantFloor()<\/code>&nbsp;method allows the Moderator to grant Floor Access to one or more Participants one by one. Note that at any given point in time, only one Participant can be granted floor access. To grant Floor Access to others, the Moderator must release Floor Access from the existing participant.<\/p>\n\n\n\n<p><strong>Method: <\/strong><code>EnxRoom.grantFloor(clientID, Callback)<\/code> <\/p>\n\n\n\n<p><strong>Parameters:<\/strong> <\/p>\n\n\n\n<ul><li><code>clientID<\/code> &#8211; Client-ID of the Participant who is granted Floor Access.<\/li><li><code>Callback<\/code> &#8211; To know the status of Floor Access request.<\/li><\/ul>\n\n\n\n<p><strong>Notification Event:<\/strong> <\/p>\n\n\n\n<p><code>floor-granted<\/code> &#8211; Notification to the Participant when Floor Access is received and notification to all the Moderator(s) with Moderator ID of the Moderator who granted Floor Access. <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">room.grantFloor(clientId, function (arg) {\n    if (arg) { \/* Success *\/  }\n    else { \/* Error - Print arg.msg *\/ }\n});\n\n\/\/ Moderators and the Participant is notified about granted Floor Access \nroom.addEventListener(\"floor-granted\", function (evt) {\n     \/\/ room.publish(localStream); \/\/ Publish stream \n     \/\/ evt.msg.moderatorId = Moderator who granted Floor Access\n}); <\/pre>\n\n\n\n<p><strong>Error Codes \/ Exceptions<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Code<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>4101<\/td><td>Unauthorized Access. When a participant uses <code>grantFloor()<\/code>. <\/td><\/tr><tr><td>1711<\/td><td>When <code>grantFloor()<\/code> is called with Invalid Client ID.<\/td><\/tr><tr><td>1703<\/td><td>Repeated <code>grantFloor()<\/code> method call after granting Floor Access to participant.<\/td><\/tr><tr><td>1173<\/td><td>Failed to grant Floor Access to the Participant.<\/td><\/tr><tr><td>1131<\/td><td>Participant cannot publish Stream without Floor Access.<\/td><\/tr><tr><td>1710<\/td><td>Floor Access Requests \/ Floor Grants have exceeded the permissible limit.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<a name=\"finish-floor-access\"><\/a>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3> Finish Granted Floor Access <\/h3>\n\n\n\n<p>The&nbsp;<code>EnxRoom.finishFloor()<\/code>&nbsp;allows the Participant to announce the completion of Floor Access and release Floor Access.<\/p>\n\n\n\n<p><strong>Method:&nbsp;<\/strong><code>EnxRoom.finishFloor(Callback)&nbsp;<\/code><\/p>\n\n\n\n<p><strong>Callback<\/strong>: To know the status of  Floor Access request.<\/p>\n\n\n\n<p><strong>Event Notification<\/strong>:&nbsp;<\/p>\n\n\n\n<ul><li><code>floor-finished:&nbsp;<\/code>Notification to all the Moderator(s) when the Participant finishes Floor Access.<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">room.finishFloor(function (arg) {\n        if(arg.result == 0) {\n\t\t\/\/ Floor Access is finished\n\t}\n});\n\n\/\/ Moderators receive notification\nroom.addEventListener(\"floor-finished\", function (evt) {             \n        \/\/ evt.msg.clientId = The participant who finished floor access\n}); <\/pre>\n\n\n\n<a name=\"release-floor-access\"><\/a>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3>Release Floor Access <\/h3>\n\n\n\n<p>The&nbsp;<code>Enxroom.releaseFloor()<\/code>&nbsp;method allows the Moderator to terminate the Floor Access granted to a Participant. This unpublishes the participant\u2019s streams and makes the Floor available for access again.<\/p>\n\n\n\n<p><strong>Method: <\/strong><code>EnxRoom.releaseFloor(ClientID, Callback)<\/code> <\/p>\n\n\n\n<p><strong>Parameters:<\/strong><\/p>\n\n\n\n<ul><li><code>ClientID<\/code> &#8211; Client ID of the Participant whose Floor Access is being released.<\/li><li><code>Callback<\/code> &#8211; To know the status of Floor Release call. <\/li><\/ul>\n\n\n\n<p><strong>Notification Event:<\/strong><\/p>\n\n\n\n<ul><li><code>release-floor<\/code> &#8211; Notification to the affected Participant and Moderator(s) when Floor Access is released along with the responsible Moderator ID.<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">room.relaseFloor(clientId, function (arg) {\n        if (arg) { \/* Success *\/ }\n        else { \/* Error - Print arg.msg *\/ }\n});\n\n\/\/ Notification when floor access is released\nroom.addEventListener(\"release-floor\", function (evt) {\n\t\/\/ evt.msg.moderatorId = The moderator who released floor access\n\t\/\/ evt.msg.clientId = The Participant whose floor access is released\n}); <\/pre>\n\n\n\n<a name=\"invite-floor\"><\/a>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3>Invite to Floor<\/h3>\n\n\n\n<p>In lecture mode, where only the Moderator can speak and control speakers in the Room through Floor Access Control methods, the Invite to Floor methods provide more options to the Moderator to organize a conference in lecture mode.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4>Invite Participant to Floor<\/h4>\n\n\n\n<p>The <code>EnxRoom.inviteToFloor()<\/code> method allows the Moderator to invite any Participant in the ongoing conference to the Floor and talk. <\/p>\n\n\n\n<p><strong>Method:<\/strong> <code>EnxRoom.inviteToFloor(clientId, callack)&nbsp;<\/code><\/p>\n\n\n\n<p><strong>Parameter:<\/strong> <\/p>\n\n\n\n<ul><li><code>clientId<\/code> &#8211; String. The client ID of the invited Participant.<\/li><li><code>callback<\/code>: To know status of the method call.<\/li><\/ul>\n\n\n\n<p><strong>Event Notification:<\/strong> <\/p>\n\n\n\n<p><code>floor-invited<\/code>&#8211; Notification to all the Moderators in the Room and the invited Participant when the Participant is invited to join the Floor<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ Invite a Participant to join Floor\nroom.inviteToFloor (clientId, function (resp) {\n\tif (resp.result == 0) {\t\n\t\t\/\/ Success\n\t}\n});\n\n\/\/ Notification  to Moderators and invited  Participant\nroom.addEventListener(\"floor-invited\", function (evt) {\n\t\/\/ evt is JSON, e.g.\n\t\/*\n\t{\n\t\t\"type\": \"floor-invited\",\n\t\t\"users\": {\n\t\t\t\"id\": \"inviteToFloor\",\n\t\t\t\"clientId\": \"STRING\",\n\t\t\t\"name\": \"String\",\n\t\t\t\"moderator\": \"STRING\"\n\t\t}\n\t}\n\t*\/\n});<\/pre>\n\n\n\n<p><strong>Error Codes &amp; Exceptions:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><thead><tr><th>Code<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>5086&nbsp;<\/td><td>Endpoint application is not connected to a Room.&nbsp;<\/td><\/tr><tr><td>5097<\/td><td><code>inviteToFloor<\/code>() is not applicable in a Chat-Only Room. Non-Contextual method call.<\/td><\/tr><tr><td>5006<\/td><td>A User with a participant role is not authorized to invoke <code>inviteToFloor<\/code>().<\/td><\/tr><tr><td>5045<\/td><td>Unable to invite a user with an invalid client ID.&nbsp;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4>Cancel Invitation to Floor<\/h4>\n\n\n\n<p>The <code>EnxRoom.cancelFloorInvite()<\/code> method allows the Moderator to cancel a Floor Invitation sent to a Participant. <\/p>\n\n\n\n<p><strong>Method:<\/strong> <code>EnxRoom.cancelFloorInvite(clientId, Callback)<\/code><\/p>\n\n\n\n<p><strong>Parameter:<\/strong> <\/p>\n\n\n\n<ul><li><code>clientId<\/code> &#8211; Client Id of the Participant whose invitation needs to be canceled.<\/li><li><code>Callback <\/code>-To know status of the method call<\/li><\/ul>\n\n\n\n<p><strong>Event Notification:<\/strong><\/p>\n\n\n\n<ul><li><code>floor-invite-cancelled<\/code> &#8211; Notification to the invited Participant and other Moderators in the Room when invitation is canceled by a Moderator. <\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ Cancel Invitation to Floor for a Participant\nroom.cancelFloorInvite(clientId, function (resp) {\n\tif (resp.result == 0) {\t\n\t\t\/\/ Success\n\t}\n});\n\n\/\/ Notification to Moderators and invited  Participant\nroom.addEventListener(\"floor-invite-cancelled\", function (evt) {\n\t\/\/ evt is JSON, e.g.\n\t\/*\n\t{\n\t\t\"type\": \"floor-invite-cancelled\",\n\t\t\"users\": {\n\t\t\t\"id\": \"cancelFloorInvite\",\n\t\t\t\"clientId\": \"STRING\",\n\t\t\t\"name\": \"String\",\n\t\t\t\"moderatorId\": \"STRING\"\n\t\t}\n\t}\n\t*\/\n});\n<\/pre>\n\n\n\n<p><strong>Error Codes &amp; Exceptions:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><thead><tr><th>Code<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>5086&nbsp;<\/td><td>Endpoint application is not connected to a Room.&nbsp;<\/td><\/tr><tr><td>5097<\/td><td><code>cancelFloorInvite<\/code>() not applicable in a Chat-Only Room. Non-Contextual method call.<\/td><\/tr><tr><td>5006<\/td><td>A User with a participant role is not authorized to invoke <code>cancelFloorInvite<\/code>(). <\/td><\/tr><tr><td>5045<\/td><td>Unable to cancel the invitation for an invalid client ID.&nbsp;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4>Accept Invitation to Floor<\/h4>\n\n\n\n<p>The <code>EnxRoom.acceptInviteFloorRequest()<\/code> method allows the Participant to accept the invitation to the Floor and talk. <\/p>\n\n\n\n<p><strong>Method:<\/strong> <code>EnxRoom.acceptInviteFloorRequest&nbsp;(String clientId)&nbsp;<\/code><\/p>\n\n\n\n<p><strong>Parameter:<\/strong><\/p>\n\n\n\n<ul><li><code>Callback<\/code> &#8211; To know status of the method call<\/li><\/ul>\n\n\n\n<p><strong>Event Notification: <\/strong><\/p>\n\n\n\n<ul><li><code>floor-accepted<\/code> &#8211; Notification to all the Moderator(s) in the Room when the Participant accepts invitation.<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ Invited Participant to accept Invitation to join Floor\nroom.acceptInviteFloorRequest (function (resp) {\n\tif (resp.result == 0) {\t\n\t\t\/\/ Success\n\t}\n});\n\n\/\/ Notification to Moderators \nroom.addEventListener(\"floor-accepted\", function (evt) {\n\t\/\/ evt is JSON, e.g.\n\t\/*\n\t{\n\t\t\"type\": \"floor-accepted\",\n\t\t\"users\": {\n\t\t\t\"id\": \"floorAccepted\",\n\t\t\t\"clientId\": \"STRING\",\n\t\t\t\"result\": 1739,\n\t\t\t\"msg\": \"Floor accepted\"\n\t\t}\n\t}\n\t*\/\n});\n<\/pre>\n\n\n\n<p><strong>Error Codes &amp; Exception:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><thead><tr><th>Code<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>5086&nbsp;<\/td><td>Endpoint application is not connected to a Room.&nbsp;<\/td><\/tr><tr><td>5097<\/td><td><code><code>acceptInviteFloorRequest<\/code><\/code>() not applicable in a Chat-Only Room. Non-Contextual method call.<\/td><\/tr><tr><td>5006<\/td><td>A User with a Moderator role is not authorized to invoke <code><code>acceptInviteFloorRequest<\/code><\/code>(). <\/td><\/tr><tr><td>5045<\/td><td>Unable to accept the invitation for an invalid client ID.&nbsp;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4>Reject Invitation to Floor<\/h4>\n\n\n\n<p>The <code>EnxRoom.rejectInviteFloor()<\/code> method allows the invited Participant to reject the invitation to the Floor.<\/p>\n\n\n\n<p><strong>Class:<\/strong> <code>EnxRoom<\/code><\/p>\n\n\n\n<p><strong>Method:<\/strong> <code>EnxRoom.rejectInviteFloor(Callback)&nbsp;<\/code><\/p>\n\n\n\n<p><strong>Parameter:<\/strong><\/p>\n\n\n\n<ul><li><code>Callback<\/code> &#8211; To know status of the reject invitation call.<\/li><\/ul>\n\n\n\n<p><strong>Event Notification:<\/strong><\/p>\n\n\n\n<ul><li><code>floor-rejected<\/code> &#8211; Notification to all the Moderators including the one who sent the invitation when the Participant rejects the invitation to join the floor.<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ Invited Participant to reject Invitation to join Floor\nroom.rejectInviteFloor  (function (resp) {\n\tif (resp.result == 0) {\t\n\t\t\/\/ Success\n\t}\n});\n\n\/\/ Notification to Moderators \nroom.addEventListener(\"floor-rejected\", function (evt) {\n\t\/\/ evt is JSON, e.g.\n\t\/*\n\t{\n\t\t\"type\": \"floor-rejected\",\n\t\t\"users\": {\n\t\t\t\"id\": \"floorRejected\",\n\t\t\t\"clientId\": \"STRING\",\n\t\t\t\"result\": 1709,\n\t\t\t\"msg\": \"Floor rejected\"\n\t\t}\n\t}\n\t*\/\n});<\/pre>\n\n\n\n<p><strong>Error Codes &amp; Exceptions:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><thead><tr><th>Code<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>5086&nbsp;<\/td><td>Endpoint application is not connected to a Room.&nbsp;<\/td><\/tr><tr><td>5097<\/td><td><code><code><code>rejectInviteFloor<\/code><\/code><\/code>() not applicable in a Chat-Only Room. Non-Contextual method call.<\/td><\/tr><tr><td>5006<\/td><td>A User with a Moderator role is not authorized to invoke <code><code><code>rejectInviteFloor<\/code><\/code><\/code>(). <\/td><\/tr><tr><td>5045<\/td><td>Unable to reject the invitation for an invalid client ID.&nbsp;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3> Restore Moderator Session <\/h3>\n\n\n\n<p>If the Moderator gets disconnected during a session, the list of Floor Access Requests and participants currently with Floor Access can be retrieved via the&nbsp;<a href=\"\/developer\/video-api\/client-api\/appendix\/#room-meta\" target=\"_blank\" rel=\"noreferrer noopener\">Room-Meta-Data<\/a>&nbsp;when the Moderator gets reconnected.<\/p>\n\n\n\n<p><strong>Structured Data JSON<\/strong><\/p>\n\n\n\n<ul><li><code>room.raisedHands<\/code> &#8211; <em>An Array of Client IDs requesting floor access<\/em>.<\/li><li><code>room.approvedHands<\/code> &#8211;&nbsp;<em>An Array of Client IDs currently having floor access<\/em>.<\/li><\/ul>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator is-style-wide\"\/>\n\n\n\n<div class=\"wp-block-columns\">\n<div class=\"wp-block-column\">\n<p> \u2190  <a href=\"..\/break-out-room\/\"><\/a><a href=\"..\/break-out-room\/\">Break-Out Room<\/a><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column\">\n<p class=\"has-text-align-center\"> <a href=\"..\/\">Index<\/a> <\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column\">\n<p class=\"has-text-align-right\"><a href=\"..\/live-media-statistics\/\"><\/a><a href=\"..\/live-media-statistics\/\">Get Live Media Statistics<\/a> \u2192 <\/p>\n<\/div>\n<\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In Lecture Mode, only the Moderator can publish a stream in the Room and the participants can only subscribe to the Moderator\u2019s stream. If a participant(s) wants to publish their Stream during the session, they need to request the Moderator for Floor Access. Table of Contents Request Floor Access Cancel Requested Floor Access Deny Floor Access Grant Floor Access Finish Granted Floor Access Release granted Floor Access Invite Participant to&hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"parent":3724,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"ub_ctt_via":""},"featured_image_src":null,"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"featured":false,"featured-large":false},"uagb_author_info":{"display_name":"vcxdevwpadmin","author_link":"https:\/\/doc.smartflomeet.ttns.in\/developer\/author\/vcxdevwpadmin\/"},"uagb_comment_info":0,"uagb_excerpt":"In Lecture Mode, only the Moderator can publish a stream in the Room and the participants can only subscribe to the Moderator\u2019s stream. If a participant(s) wants to publish their Stream during the session, they need to request the Moderator for Floor Access. Table of Contents Request Floor Access Cancel Requested Floor Access Deny Floor&hellip;","_links":{"self":[{"href":"https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-json\/wp\/v2\/pages\/4148"}],"collection":[{"href":"https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-json\/wp\/v2\/comments?post=4148"}],"version-history":[{"count":0,"href":"https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-json\/wp\/v2\/pages\/4148\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-json\/wp\/v2\/pages\/3724"}],"wp:attachment":[{"href":"https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-json\/wp\/v2\/media?parent=4148"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}