{"id":4303,"date":"2021-11-16T14:23:11","date_gmt":"2021-11-16T06:23:11","guid":{"rendered":"https:\/\/www.enablex.io\/developer\/?page_id=4303"},"modified":"2022-04-08T18:05:20","modified_gmt":"2022-04-08T10:05:20","slug":"floor-access-control","status":"publish","type":"page","link":"https:\/\/doc.smartflomeet.ttns.in\/developer\/video-api\/client-api\/android-toolkit\/floor-access-control\/","title":{"rendered":"Floor Access Control: Android 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&#8217;s 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 Floor Access<\/a> <\/li><li><a href=\"#release-floor-access\">Release Floor Access<\/a><\/li><li><a href=\"#restore-moderator-session\">Restore Moderator&#8217;s Session<\/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 <code>EnxRoom.requestFloor()<\/code> method allows a Participant to request the Moderator for Floor Access.  <\/p>\n\n\n\n<p><strong>Class<\/strong>: <code>EnxRoom<\/code><\/p>\n\n\n\n<p><strong>Method:<\/strong> <code>public void requestFloor()<\/code> &#8211; No parameter required. <\/p>\n\n\n\n<p><strong>Observer<\/strong>: <code>public void setChairControlObserver( EnxChairControlObserver-Object )<\/code><\/p>\n\n\n\n<p><strong>Callbacks:<\/strong> <\/p>\n\n\n\n<ul><li><code>onFloorRequested<\/code>&nbsp;&#8211; Acknowledgment to the Participant when their request is received by the Moderator. <\/li><li><code>onFloorRequestReceived<\/code> &#8211; Notification to the Moderator when a Participant&#8217;s access request is received.<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ Initiate Chair Control Observer to receive Callbacks\nroom.setChairControlObserver(this);\n \nroom.requestFloor(); \/\/ To request floor access\n\npublic void onFloorRequested(JSONObject jsonobject){\n \/\/ Your Request is received by Moderator\n}\n\npublic void onFloorRequestReceived(JSONObject jsonobject){\n \/\/ Moderator receives floor access request\n \/\/ JSON has requesting participant information\n}<\/pre>\n\n\n\n<p><strong>Error Codes &amp; 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>5003<\/td><td>Unauthorized Access. When a user with a M<code>oderator<\/code> role invokes <code>requestFloor()<\/code>.<\/td><\/tr><tr><td>5041<\/td><td>Repeated <code>requestFloor()<\/code> call while the previous request is in process.<\/td><\/tr><tr><td>5042<\/td><td>Repeated <code>requestFloor()<\/code> call after the request has already been registered with the Moderator.<\/td><\/tr><tr><td>5067<\/td><td>Unable to process the request for a Room in group mode. Non-Contextual method call.<\/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 <code>Enxroom.cancelFloor()<\/code> method allows participants to cancel their request for Floor Access pending for Moderator&#8217;s approval.<\/p>\n\n\n\n<p><strong>Class<\/strong>:&nbsp;<code>EnxRoom<\/code><\/p>\n\n\n\n<p><strong>Method:<\/strong>&nbsp;<code>public void cancelFloor() - <\/code>No Parameter required.<\/p>\n\n\n\n<p><strong>Callbacks<\/strong>:&nbsp;<\/p>\n\n\n\n<ul><li><code>onCancelledFloorRequest - <\/code>Notification to the Moderator when the participant cancels the Floor Access Request. <\/li><li><code>onFloorCancelled -<\/code> Acknowledgment to the Participant when their Floor Access Request is canceled. <\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\"> room.cancelFloor();\n\n\/\/ Moderator receives cancellation request \npublic void onCancelledFloorRequest(JSONObject jsonObject) {\n\t\/\/ Handle JSONObject\n}\n\n\/\/ Participant is acknowedged that floor request is cancelled\npublic void onFloorCancelled(JSONObject jsonObject) {\n\t\/\/ Handle JSONObject\n}<\/pre>\n\n\n\n<p><strong>Error  Codes &amp; 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>5003<\/td><td>Unauthorized Access. When a user with <code>moderator<\/code> role invokes <code>cancelFloor()<\/code>.<\/td><\/tr><tr><td>5041<\/td><td>Repeated <code>cancelFloor()<\/code> call while a previous request is in process.<\/td><\/tr><tr><td>5042<\/td><td>Repeated <code>cancelFloor()<\/code> call after the request has already been canceled.<\/td><\/tr><tr><td>5067<\/td><td>Unable to process the request for a Room in group mode. Non-Contextual method call.<\/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 <code>EnxRoom.denyFloor()<\/code> method allows the Moderator to deny a Participant&#8217;s request for Floor Access.<\/p>\n\n\n\n<p><strong>Class<\/strong>:&nbsp;<code>EnxRoom<\/code><\/p>\n\n\n\n<p><strong>Method:&nbsp;<\/strong><code>public void denyFloor(String clientID)<\/code>&nbsp;<\/p>\n\n\n\n<p><strong>Parameter:<\/strong><\/p>\n\n\n\n<p><code>clientID<\/code> &#8211;  Client ID of the Participant requesting Floor Access.<\/p>\n\n\n\n<p><strong>Observer<\/strong>:&nbsp;<code>public void setChairControlObserver( EnxChairControlObserver-Object )<\/code><\/p>\n\n\n\n<p><strong>Callbacks:<\/strong><\/p>\n\n\n\n<ul><li><code>onProcessFloorRequested&nbsp;<\/code>\u2013 Acknowledgment to the Moderator when the Floor Access has been denied. <\/li><li><code>onDeniedFloorRequest&nbsp;<\/code>\u2013 Notification to the Participant when the Floor Access has been denied.<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ Initiate Chair Control Observer to receive Callbacks\nroom.setChairControlObserver(this); \n\nroom.denyFloor(clientId); \/\/ To deny floor access to a clientId\n\npublic void onProcessFloorRequested(JSONObject jsonobject){\n \/\/ You denied floor access to a Participant\n}\n\npublic void onDeniedFloorRequest(JSONObject jsonobject){\n \/\/ Participant is notified that he is denied Floor Access\n}<\/pre>\n\n\n\n<p><strong>Error Codes &amp; 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>5005<\/td><td>Unauthorized Access. When a user with <code>participant<\/code> role invokes <code>denyFloor()<\/code>.<\/td><\/tr><tr><td>5045<\/td><td>When an invalid Client ID is passed to <code>denyFloor().<\/code><\/td><\/tr><tr><td>5047<\/td><td>Repeated <code>denyFloor()<\/code> call while the previous request is in process. <\/td><\/tr><tr><td>5048<\/td><td><code>denyFloor()<\/code> called after granting Floor Access. Non-Contextual Method Call.<\/td><\/tr><tr><td>5067<\/td><td>Unable to process the request for a Room in group mode. Non-Contextual method call.<\/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 <code>EnxRoom.grantFloor()<\/code> 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>Class<\/strong>: <code>EnxRoom<\/code><\/p>\n\n\n\n<p><strong>Method: <\/strong><code>public void grantFloor(String clientID)<\/code>  <\/p>\n\n\n\n<p><strong>Observer<\/strong>: <code>public void setChairControlObserver( EnxChairControlObserver-Object )<\/code><\/p>\n\n\n\n<p><strong>Callbacks:<\/strong> <\/p>\n\n\n\n<ul><li><code>onProcessFloorRequested <\/code>&#8211; Acknowledgment to the Moderator when Participant is granted Floor Access.<\/li><li><code>onGrantedFloor <\/code>&#8211; Notification to the Participant when Floor Access is received.<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ Initiate Chair Control Observer to receive Callbacks\nroom.setChairControlObserver(this); \n\nroom.grantFloor(clientId); \/\/ To grant floor access to a clientId\n\npublic void onProcessFloorRequested(JSONObject jsonobject){\n \/\/ You granted floor access to a Participant\n}\n\npublic void onGrantedFloor(JSONObject jsonobject){\n \/\/ Participant is notified that he is granted Floor Access\n room.publish(localStream); \/\/ Publish now\n}<\/pre>\n\n\n\n<p><strong>Error Codes &amp; 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>5004<\/td><td>Unauthorized Access. When a user with <code>participant<\/code> role invokes <code>grantFloor()<\/code>.<\/td><\/tr><tr><td>5045<\/td><td>When Invalid Client ID is passed to <code>grantFloor()<\/code>.<\/td><\/tr><tr><td>5043<\/td><td>Repeated <code>grantFloor()<\/code> call while the previous request is in process.<\/td><\/tr><tr><td>5044<\/td><td>Repeated <code>grantFloor()<\/code> call after successfully granting Floor Access.<\/td><\/tr><tr><td>5046<\/td><td><code>grantFloor()<\/code> to another Participant without releasing the Floor Access from the existing Participant.<\/td><\/tr><tr><td>5069<\/td><td>Unable to grant Floor Access when Floor Release is in process.<\/td><\/tr><tr><td>5067<\/td><td>Unable to process the request for a Room in group mode. Non-Contextual method call.<\/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 Floor Access<\/h3>\n\n\n\n<p>The <code>EnxRoom.finishFloor() <\/code>allows the Participant to announce the completion of Floor Access and release Floor Access.<\/p>\n\n\n\n<p><strong>Class<\/strong>:&nbsp;<code>EnxRoom<\/code><\/p>\n\n\n\n<p><strong>Method:&nbsp;<\/strong><code>public void finishFloor()&nbsp;<\/code>\u2013 No Parameter required.<\/p>\n\n\n\n<p><strong>Callbacks:<\/strong>&nbsp;<\/p>\n\n\n\n<ul><li><code>onFinishedFloorRequest:&nbsp;<\/code>Notification to the Moderator when the Participant finishes Floor Access.<\/li><li><code>onFloorFinished:&nbsp;<\/code>Acknowledgment to the Participant when Floor Access is finished. <\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">room.finishFloor();\n\n\/\/ Moderator received Floor Finish notification \npublic void onFinishedFloorRequest(JSONObject jsonObject) {\n\t\/\/ Handle JSONObject\n}\n\n\/\/ Participants is acknowledged that floor access is finished\npublic void onFloorFinished(JSONObject jsonObject) {\n\t\/\/ Handle JSONObject\n}<\/pre>\n\n\n\n<p><strong>Error Codes &amp; 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>5003<\/td><td>Unauthorized Access. When a user with <code>moderator<\/code> role invokes <code>finishFloor()<\/code>.<\/td><\/tr><tr><td>5041<\/td><td>Repeated <code>finishFloor()<\/code> call while the previous request is in process.<\/td><\/tr><tr><td>5042<\/td><td>When participant retries <code>finishFloor()<\/code> after finishing the Floor Access. <\/td><\/tr><tr><td>5067<\/td><td>Unable to process the request for a Room in group mode. Non-Contextual method call.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Note:&nbsp;<\/strong>In case of an error, &lt;null&gt; is received at the first Index and Error Info at the second Index.<\/p>\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 <code>Enxroom.releaseFloor()<\/code> method allows the Moderator to terminate the Floor Access granted to a Participant. This unpublishes the participant&#8217;s streams and makes the Floor available for access again. <\/p>\n\n\n\n<p><strong>Class<\/strong>: <code>EnxRoom<\/code><\/p>\n\n\n\n<p><strong>Method: <\/strong><code>public void releaseFloor(String clientId)<\/code> <\/p>\n\n\n\n<p><strong>Parameter:<\/strong><\/p>\n\n\n\n<p><code>clientId<\/code> &#8211; Client ID of the Participant whose Floor Access is being released.<\/p>\n\n\n\n<p><strong>Observer:<\/strong> <code>public void setChairControlObserver( EnxChairControlObserver-Object )<\/code>   <\/p>\n\n\n\n<p><strong>Callbacks:<\/strong><\/p>\n\n\n\n<ul><li><code>onProcessFloorRequested <\/code>&#8211; Acknowledgment to the Moderator when the Floor Access is released.<\/li><li><code>onReleasedFloorRequest <\/code>&#8211; Notification to the Participant when their Floor Access is revoked. <\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ Initiate Chair Control Observer to receive Callbacks\nroom.setChairControlObserver(this); \n\nroom.releaseFloor(clientId); \/\/ To release floor access of the Participant\n\npublic void onProcessFloorRequested(JSONObject jsonobject){\n \/\/ You got floor access released from the Participant\n}\n\npublic void onReleasedFloorRequest(JSONObject jsonobject){\n \/\/ Participant is notified that floor access is revoked\n}<\/pre>\n\n\n\n<p><strong>Error Codes &amp; 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>5006<\/td><td>Unauthorized Access. When a user with <code>participant <\/code>role invokes <code>releaseFloor()<\/code><\/td><\/tr><tr><td>5045<\/td><td>Invalid Client ID passed to <code>releaseFloor()<\/code>.<\/td><\/tr><tr><td>5049<\/td><td>Repeated <code>releaseFloor()<\/code> call while the previous request is in process.<\/td><\/tr><tr><td>5050<\/td><td><code>releaseFloor()<\/code> called without granting Floor Access. Non-Contextual Method Call.<\/td><\/tr><tr><td>5067<\/td><td>Unable to process the request for a Room in group mode. Non-Contextual method call.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Note<\/strong>: The Object <code>EnxRoom.setChairControlObserver()<\/code> needs to be called only once for any one or all of the above methods to receive callbacks.<\/p>\n\n\n\n<a name=\"restore-moderator-session\"><\/a>\n\n\n\n<p><\/p>\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 <a href=\"https:\/\/www.enablex.io\/developer\/video-api\/client-api\/appendix\/#room-meta\" target=\"_blank\" rel=\"noreferrer noopener\">Room-Meta-Data<\/a> 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.getRoomMetaData().getJSONArray(\"raisedHands\") <\/code><em>\u2013 An Array of Client IDs requesting floor access<\/em>.<\/li><li><code>room.getRoomMetaData().getJSONArray(\"approvedHands\") <\/code>\u2013 <em>An Array of Client IDs currently having floor access<\/em>. <\/li><\/ul>\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<h2>Invite to Floor<\/h2>\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<h3>Invite Participant to Floor<\/h3>\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>Class:<\/strong> <code>EnxRoom<\/code><\/p>\n\n\n\n<p><strong>Method:<\/strong> <code>public void inviteToFloor(String clientId)&nbsp;<\/code><\/p>\n\n\n\n<p><strong>Parameter:<\/strong> <\/p>\n\n\n\n<p><code>clientId<\/code> &#8211; String. The client ID of the invited Participant.<\/p>\n\n\n\n<p><strong>Callback:<\/strong> <\/p>\n\n\n\n<ol><li><code>onACKInviteToFloorRequested<\/code> &#8211; Acknowledgment to the Moderator when an invitation to Floor is sent to the Participant.<\/li><\/ol>\n\n\n\n<p><strong>Response Body<\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">{\n   msg = Success;&nbsp;\n&nbsp;  result = 0;\n}&nbsp;<\/pre>\n\n\n\n<ul><li><code>onInviteToFloorRequested<\/code> &#8211; Notification to all the Moderators in the Room when an invitation to Floor is sent to the Participant.<\/li><\/ul>\n\n\n\n<p><strong>Response Body:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">{\n    clientId = \"cae0afbc-fb94-4743-8c04-ae48e9d3eb52\";&nbsp;\n    id = inviteToFloor;&nbsp;\n    name = Jay;\n}&nbsp;<\/pre>\n\n\n\n<ul><li><code>onInvitedForFloorAccess<\/code> &#8211; Notification to the invited Participant when an invitation to Floor is received.<\/li><\/ul>\n\n\n\n<p><strong>Response Body:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong> <\/strong>{ &nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; clientId = \"9554a040-58bd-4f0b-a010-7f92c54b2918\";&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id = inviteToFloor;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; moderator = \"e2b48879-3754-49f2-bf86-08a73347e408\";&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name = Jay;&nbsp;\n&nbsp;}&nbsp;<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ invitation sent to participant to come on floor and talk\nEnxRoom.inviteToFloor(clientId);&nbsp;\n\n\/\/Acknowledgment to the moderator who invited\n@Override&nbsp;\npublic void onACKInviteToFloorRequested(JSONObject jsonObject)&nbsp;\n\n\/\/Notification to all the moderators in the room\n@Override\npublic void onInviteToFloorRequested(JSONObject jsonObject)\n\n\/\/Notification to the invited participant\n@Override&nbsp;\npublic void onInvitedForFloorAccess(JSONObject jsonObject)&nbsp;&nbsp;<\/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><tr><td>5067<\/td><td>Unable to process the request for a Room in group mode. Non-Contextual method call.<\/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<a name=\"cancel-floor-invite\"><\/a>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3>Cancel Invitation to Floor<\/h3>\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>Class:<\/strong> <code>EnxRoom<\/code><\/p>\n\n\n\n<p><strong>Method:<\/strong> <code>public void cancelFloorInvite(String clientId)<\/code><\/p>\n\n\n\n<p><strong>Parameter:<\/strong> <\/p>\n\n\n\n<p><code>clientId<\/code> &#8211; Client Id of the Participant whose invitation needs to be canceled.<\/p>\n\n\n\n<p><strong>Callback:<\/strong><\/p>\n\n\n\n<ul><li><code>onProcessFloorRequested<\/code> &#8211; Acknowledgment to the Moderator when Cancel Invitation request is sent to the Participant.<\/li><\/ul>\n\n\n\n<p><strong>Response Body:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">{ \n    msg = Success; \n    request =  { \n        id = processFloorRequest; \n \tparams =  { \n            action = cancelFloorInvite;\n            clientId = \"cae0afbc-fb94-4743-8c04-ae48e9d3eb52\"; \n       \t\t}; \n\t}; \n  \tresult = 0; \n} <\/pre>\n\n\n\n<ul><li><code>onCanceledFloorInvite<\/code> &#8211; Notification to the invited Participant and other Moderators in the Room when invitation is canceled by the Moderator. <\/li><\/ul>\n\n\n\n<p><strong>Response Body for the Participant:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">{ \n        clientId = \"a067fd70-1461-4ca4-befc-2b570c0db494\"; \n        id = cancelFloorInvite; \n        moderator = \"e2b48879-3754-49f2-bf86-08a73347e408\"; \n        name = JayiOS; \n} <\/pre>\n\n\n\n<p><strong>Response Body for other Moderators:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">{ \n        clientId = \"ade30ef1-595d-4364-b4f5-1d9420f24b0f\"; \n        id = cancelFloorInvite; \n        name = JayiOS; \n} <\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ Cancel Floor invitation request sent by the Moderator\nEnxRoom.cancelFloorInvite(clientId); \n\n\/\/ Acknowledgment to the Moderator that Cancel Floor Invitation is initiated\n@Override \npublic void onProcessFloorRequested(JSONObject jsonObject) \n\n\/\/ Notification to the invited participant and other Moderators in the Room that invitation is canceled\n@Override \npublic void onCanceledFloorInvite(JSONObject jsonObject) <\/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 invitation for an invalid client ID.&nbsp;<\/td><\/tr><tr><td>5067<\/td><td>Unable to process the request for a Room in group mode. Non-Contextual method call.<\/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<a name=\"accept-floor-invite\"><\/a>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3>Accept Invitation to Floor<\/h3>\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>Class:<\/strong> EnxRoom<\/p>\n\n\n\n<p><strong>Method:<\/strong> <code>public void acceptInviteFloorRequest(String clientId)&nbsp;<\/code><\/p>\n\n\n\n<p><strong>Parameter:<\/strong><\/p>\n\n\n\n<p><code>clientId<\/code> &#8211; Client Id of the Participant who has received the invitation to the Floor.<\/p>\n\n\n\n<p><strong>Callbacks:<\/strong><\/p>\n\n\n\n<ul><li><code>onProcessFloorRequested<\/code> &#8211; Acknowledgment to the Participant when they accept the invitation to the Floor.<\/li><\/ul>\n\n\n\n<p><strong>Response Body:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">{ \n    msg = Success; \n    request =     { \n        id = processFloorRequest; \n        params =  { \n            action = acceptFloor; \n            clientId = \"18c9b8bb-142e-44a7-b30b-6701cd9e62d9\"; \n        }; \n    }; \n    result = 0;\n} <\/pre>\n\n\n\n<ul><li><code>onAcceptedFloorInvite<\/code> &#8211; Notification to all the Moderators in the Room including the one who sent the invitation when the Participant accepts invitation.<\/li><\/ul>\n\n\n\n<p><strong>Response Body:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">{ \n        clientId = \"8ed7241c-36d9-4224-b8f3-7d015718d09e\"; \n        id = floorAccepted; \n        msg = \"Floor accepted\"; \n        result = 1738; \n}<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ Participant accepts the invitation to Floor\nEnxRoom.acceptInviteFloorRequest(clientId);\n\n\/\/ Acknowledgment to the Participant when they accept the invitation to the Floor\n@Override \npublic void onProcessFloorRequested(JSONObject jsonObject) \n\n\/\/ Notification to all the Moderators in the Room including the one who sent the invitation\n@Override \npublic void onAcceptedFloorInvite(JSONObject jsonObject) <\/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><tr><td>5067<\/td><td>Unable to process the request for a Room in group mode. Non-Contextual method call.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<a name=\"reject-floor-invite\"><\/a>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3>Reject Invitation to Floor<\/h3>\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>public void rejectInviteFloor(String clientId)&nbsp;<\/code><\/p>\n\n\n\n<p><strong>Parameter:<\/strong><\/p>\n\n\n\n<p><code>clientId<\/code> &#8211; Client Id of the Participant who has received the invitation to the Floor.<\/p>\n\n\n\n<p><strong>Callbacks:<\/strong><\/p>\n\n\n\n<ul><li><code>onProcessFloorRequested<\/code> &#8211; Acknowledgment to the Participant when they reject the invitation to Floor.<\/li><\/ul>\n\n\n\n<p><strong>Response Body: <\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">{ \n    msg = Success; \n    request =     { \n        id = processFloorRequest; \n        params =  { \n            action = rejectFloor; \n            clientId = \"87184b36-26b3-4450-b908-6d9de6a457c5\"; \n        }; \n    }; \n    result = 0; \n} <\/pre>\n\n\n\n<ul><li><code>onRejectedInviteFloor<\/code> &#8211; Notification to all the Moderators including the one who sent the invitation when the Participant rejects the invitation.<\/li><\/ul>\n\n\n\n<p><strong>Response Body:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">{ \n        clientId = \"57ab3a52-2d85-4a22-a4b4-d58b90ea84ec\"; \n        id = floorRejected; \n        msg = \"Floor Denied\"; \n        result = 1709; \n} <\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ Participant rejects invitation to Floor\nEnxRoom.rejectInviteFloor(clientId);\n\n\/\/ Acknowledgment to the Participant wen they reject invitation to the Floor\n@Override \npublic void onProcessFloorRequested(JSONObject jsonObject) \n\n\/\/ Notification to the Moderators when Participant rejects invitation to the Floor\n@Override \npublic void onRejectedInviteFloor(JSONObject jsonObject) \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><tr><td>5067<\/td><td>Unable to process the request for a Room in group mode. Non-Contextual method call.<\/td><\/tr><\/tbody><\/table><\/figure>\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=\"..\/join-aside-room\/\">Join Aside 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\/\">Live Media Statistics<\/a> \u2192<a href=\"\/developer\/how-to-use\/\"><\/a><\/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&#8217;s 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 Floor Access Release Floor Access Restore Moderator&#8217;s Session Invite Participant&hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"parent":3740,"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&#8217;s 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\/4303"}],"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=4303"}],"version-history":[{"count":0,"href":"https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-json\/wp\/v2\/pages\/4303\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-json\/wp\/v2\/pages\/3740"}],"wp:attachment":[{"href":"https:\/\/doc.smartflomeet.ttns.in\/developer\/wp-json\/wp\/v2\/media?parent=4303"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}