1<html itemscope itemtype="http://schema.org/Product" prefix="og: http://ogp.me/ns#" xmlns="http://www.w3.org/1999/html"> 2 <head> 3 <style> 4 #rita-demo-banner { 5 position: fixed; 6 top: 20px; 7 left: 50%; 8 transform: translateX(-50%); 9 background: 10 linear-gradient(180deg, rgba(255, 255, 255, 0.10) 0%, rgba(255, 255, 255, 0) 55%), 11 linear-gradient(180deg, rgba(78, 91, 170, 0.55) 0%, rgba(58, 70, 140, 0.65) 100%); 12 backdrop-filter: blur(24px) saturate(1.5) brightness(0.95); 13 -webkit-backdrop-filter: blur(24px) saturate(1.5) brightness(0.95); 14 border: 1px solid rgba(255, 255, 255, 0.14); 15 color: #fff; 16 font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; 17 font-size: 13px; 18 font-weight: 600; 19 letter-spacing: 0.2px; 20 padding: 6px 8px 6px 18px; 21 border-radius: 999px; 22 z-index: 10000; 23 box-shadow: 24 0 12px 32px rgba(11, 2, 19, 0.45), 25 0 0 16px rgba(124, 138, 230, 0.30), 26 0 1px 0 rgba(255, 255, 255, 0.22) inset, 27 0 0 0 1px rgba(124, 138, 230, 0.10) inset, 28 0 -1px 0 rgba(0, 0, 0, 0.30) inset; 29 white-space: nowrap; 30 display: inline-flex; 31 align-items: center; 32 gap: 10px; 33 } 34 #rita-demo-banner .rita-demo-quality { 35 flex: 0 0 auto; 36 width: 28px; 37 height: 28px; 38 display: inline-flex; 39 align-items: center; 40 justify-content: center; 41 background: rgba(255, 255, 255, 0.10); 42 border: 1px solid rgba(255, 255, 255, 0.16); 43 border-radius: 50%; 44 color: #fff; 45 cursor: pointer; 46 padding: 0; 47 transition: background .15s ease, transform .05s ease; 48 } 49 #rita-demo-banner .rita-demo-quality:hover { 50 background: rgba(255, 255, 255, 0.18); 51 } 52 #rita-demo-banner .rita-demo-quality:active { 53 transform: translateY(1px); 54 } 55 #rita-demo-banner .rita-demo-quality svg { 56 width: 18px; 57 height: 18px; 58 fill: currentColor; 59 display: block; 60 } 61 /* While the demo banner is visible, hide the upstream room-info pill so 62 * the two don't collide at the top of the conference. */ 63 body:has(#rita-demo-banner) .subject-info-container { 64 display: none !important; 65 } 66 </style> 67
67<script> 68 // Save JWT user info to localStorage 69 (function(){ 70 function showDemoBanner(exp){ 71 function ensureEl(){ 72 var el = document.getElementById('rita-demo-banner'); 73 if(el){ return el; } 74 el = document.createElement('div'); 75 el.id = 'rita-demo-banner'; 76 var label = document.createElement('span'); 77 label.className = 'rita-demo-label'; 78 el.appendChild(label); 79 var btn = document.createElement('button'); 80 btn.className = 'rita-demo-quality'; 81 btn.type = 'button'; 82 btn.title = 'ÐаÑеÑÑво и ÑкоÑоÑÑÑ'; 83 btn.setAttribute('aria-label', 'ÐаÑеÑÑво и ÑкоÑоÑÑÑ'); 84 btn.innerHTML = '<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M12 3.75C7.06046 3.75 3 7.94581 3 13.1924C3 16.108 4.25819 18.7074 6.22705 20.4365C6.53828 20.7098 6.569 21.1837 6.29567 21.4949C6.02235 21.8061 5.54847 21.8369 5.23724 21.5635C2.94821 19.5533 1.5 16.5451 1.5 13.1924C1.5 7.18081 6.16999 2.25 12 2.25C17.83 2.25 22.5 7.18081 22.5 13.1924C22.5 16.5451 21.0518 19.5533 18.7628 21.5635C18.4515 21.8369 17.9777 21.8061 17.7043 21.4949C17.431 21.1837 17.4617 20.7098 17.773 20.4365C19.7418 18.7074 21 16.108 21 13.1924C21 7.94581 16.9395 3.75 12 3.75Z"/><path fill-rule="evenodd" clip-rule="evenodd" d="M14.9984 10.5018L11.5488 12.6057C11.3241 12.7428 11.164 12.9645 11.1047 13.221C10.9415 13.9264 11.5738 14.5587 12.2792 14.3957C12.5357 14.3364 12.7576 14.1763 12.8947 13.9515L14.9984 10.5018ZM15.5384 8.41542C16.5457 7.80104 17.699 8.95423 17.0847 9.9616L14.1754 14.7324C13.8283 15.3016 13.2665 15.707 12.617 15.8572C10.8311 16.2699 9.23022 14.6689 9.64323 12.883C9.79341 12.2337 10.1987 11.6721 10.7678 11.3251L15.5384 8.41542Z"/></svg>'; 85 btn.addEventListener('click', function(){ 86 if (typeof window.ritaOpenVideoQuality === 'function') { 87 window.ritaOpenVideoQuality(); 88 } 89 }); 90 el.appendChild(btn); 91 document.body.appendChild(el); 92 return el; 93 } 94 function render(){ 95 var el = ensureEl(); 96 var label = el.querySelector('.rita-demo-label'); 97 var remaining = Math.max(0, Math.ceil((exp*1000 - Date.now())/1000)); 98 var m = Math.floor(remaining/60); 99 var s = remaining%60; 100 if (label) { 101 label.textContent = 'Ðемо-веÑÑÐ¸Ñ â оÑÑалоÑÑ ' + m + ':' + (s<10?'0':'') + s; 102 } 103 } 104 if(document.body){render();} 105 else{document.addEventListener('DOMContentLoaded', render);} 106 setInterval(render, 1000); 107 } 108 // 1. Try URL param (auth redirect) 109 try{var m=location.search.match(/[?&]jwt=([^&#]+)/);if(m){var p=JSON.parse(atob(m[1].split('.')[1]));if(p.context&&p.context.user&&p.context.user.id){localStorage.setItem('rita_uid',p.context.user.id);localStorage.setItem('rita_uname',p.context.user.name||''); 110 // Demo token: schedule kick at exp 111 if(String(p.context.user.id).indexOf('demo_')===0 && p.exp){ 112 showDemoBanner(p.exp); 113 var demoRoom = (location.pathname.split('/').filter(Boolean)[0])||''; 114 var isMobileApp = /JitsiMeetSDK|RitaMeet/i.test(navigator.userAgent) || /com\.ritameet\.app/i.test(navigator.userAgent); 115 var appQuery = isMobileApp ? '&app=mobile' : ''; 116 var limitUrl = '/auth/demo/limit?room='+encodeURIComponent(demoRoom)+appQuery; 117 var ms=(p.exp*1000)-Date.now(); 118 if(ms>0){ 119 setTimeout(function(){ 120 try{if(window.APP&&window.APP.conference)window.APP.conference.hangup();}catch(e){} 121 location.replace(limitUrl); 122 }, ms); 123 }else{ 124 location.replace(limitUrl); 125 } 126 } 127 return}}}catch(e){} 128 // 2. Subscribe to Redux store to catch jwt.user when it briefly appears 129 var iv=setInterval(function(){try{if(window.APP&&window.APP.store){clearInterval(iv);window.APP.store.subscribe(function(){try{var s=window.APP.store.getState();var j=s['features/base/jwt'];if(j&&j.user&&j.user.id){localStorage.setItem('rita_uid',j.user.id);localStorage.setItem('rita_uname',j.user.name||'')}}catch(e){}})}}catch(e){}},200); 130 })(); 131 </script>
131 132 133 <meta charset="utf-8"> 134 <meta http-equiv="content-type" content="text/html;charset=utf-8"> 135 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"> 136 <meta name="theme-color" content="#2A3A4B"> 137 <base href="/" /> 138 139 140 <link rel="icon" type="image/x-icon" href="favicon.ico"> 141 <link rel="apple-touch-icon" href="images/apple-touch-icon.png"> 142 <link rel="stylesheet" href="css/all.css?v=8742"> 143 144 <link rel="manifest" id="manifest-placeholder"> 145 146
146<script> 147 function contextRoot(pathname) { 148 const contextRootEndIndex = pathname.lastIndexOf('/'); 149 150 return ( 151 contextRootEndIndex === -1 152 ? '/' 153 : pathname.substring(0, contextRootEndIndex + 1) 154 ); 155 } 156 window.EXCALIDRAW_ASSET_PATH = 'libs/'; 157 // Dynamically generate the manifest location URL. It must be served from the document origin, and we may have 158 // the base pointing to the CDN. This way we can generate a full URL which will bypass the base. 159 document.querySelector('#manifest-placeholder').setAttribute('href', window.location.origin + contextRoot(window.location.pathname) + 'manifest.json'); 160 161 document.addEventListener('DOMContentLoaded', () => { 162 if (!JitsiMeetJS.app) { 163 return; 164 } 165 166 JitsiMeetJS.app.renderEntryPoint({ 167 Component: JitsiMeetJS.app.entryPoints.APP 168 }) 169 170 const isEmbedded = () => { 171 try { 172 return window.self !== window.top; 173 } catch (e) { 174 return true; 175 } 176 }; 177 178 const isElectron = navigator.userAgent.includes('Electron'); 179 const shouldRegisterWorker = !isElectron && !isEmbedded() && 'serviceWorker' in navigator; 180 181 if (shouldRegisterWorker) { 182 navigator.serviceWorker 183 .register(window.location.origin + contextRoot(window.location.pathname) + 'pwa-worker.js') 184 .then(reg => { 185 console.log('Service worker registered.', reg); 186 }) 187 .catch(err => { 188 console.log(err); 189 }); 190 } 191 }); 192 </script>
192 193
193<script> 194 // IE11 and earlier can be identified via their user agent and be 195 // redirected to a page that is known to have no newer js syntax. 196 if (window.navigator.userAgent.match(/(MSIE|Trident)/)) { 197 var roomName = encodeURIComponent(window.location.pathname); 198 window.location.pathname = 'static/recommendedBrowsers.html'; 199 } 200 201 window.indexLoadedTime = window.performance.now(); 202 console.log("(TIME) index.html loaded:\t", indexLoadedTime); 203 window.addEventListener('load', function() { 204 window.loadedEventTime = window.performance.now(); 205 console.log("(TIME) window loaded event:\t", loadedEventTime); 206 }); 207 208 // XXX the code below listeners for errors and displays an error message 209 // in the document body when any of the required files fails to load. 210 // The intention is to prevent from displaying broken page. 211 var criticalFiles = [ 212 "config.js", 213 "utils.js", 214 "do_external_connect.js", 215 "interface_config.js", 216 "lib-jitsi-meet.min.js", 217 "app.bundle.min.js", 218 "all.css?v=8742" 219 ]; 220 var loadErrHandler = function(e) { 221 var target = e.target; 222 // Error on
222<script> and <link>(CSS) 223 //
223<script> will have .src and <link> .href 224 var fileRef = (target.src ? target.src : target.href); 225 if (("SCRIPT" === target.tagName || "LINK" === target.tagName) 226 && criticalFiles.some( 227 function(file) { return fileRef.indexOf(file) !== -1 })) { 228 window.onload = function() { 229 // The whole complex part below implements page reloads with 230 // "exponential backoff". The retry attempt is passes as 231 // "rCounter" query parameter 232 var href = window.location.href; 233 234 var retryMatch = href.match(/.+(\?|&)rCounter=(\d+)/); 235 var retryCountStr = retryMatch ? retryMatch[2] : "0"; 236 var retryCount = Number.parseInt(retryCountStr); 237 238 if (retryMatch == null) { 239 var separator = href.indexOf("?") === -1 ? "?" : "&"; 240 var hashIdx = href.indexOf("#"); 241 242 if (hashIdx === -1) { 243 href += separator + "rCounter=1"; 244 } else { 245 var hashPart = href.substr(hashIdx); 246 247 href = href.substr(0, hashIdx) 248 + separator + "rCounter=1" + hashPart; 249 } 250 } else { 251 var separator = retryMatch[1]; 252 253 href = href.replace( 254 /(\?|&)rCounter=(\d+)/, 255 separator + "rCounter=" + (retryCount + 1)); 256 } 257 258 var delay = Math.pow(2, retryCount) * 2000; 259 if (isNaN(delay) || delay < 2000 || delay > 60000) 260 delay = 10000; 261 262 var showMoreText = "show more"; 263 var showLessText = "show less"; 264 265 document.body.innerHTML 266 = "<div style='" 267 + "position: absolute;top: 50%;left: 50%;" 268 + "text-align: center;" 269 + "font-size: medium;" 270 + "font-weight: 400;" 271 + "transform: translate(-50%, -50%)'>" 272 + "Uh oh! We couldn't fully download everything we needed :(" 273 + "<br/> " 274 + "We will try again shortly. In the mean time, check for problems with your Internet connection!" 275 + "<br/><br/> " 276 + "<div id='moreInfo' style='" 277 + "display: none;'>" + "Missing " + fileRef 278 + "<br/><br/></div>" 279 + "<a id='showMore' style='" 280 + "text-decoration: underline;" 281 + "font-size:small;" 282 + "cursor: pointer'>" + showMoreText + "</a>" 283 + " " 284 + "<a id ='reloadLink' style='" 285 + "text-decoration: underline;" 286 + "font-size:small;" 287 + "'>reload now</a>" 288 + "</div>"; 289 290 var reloadLink = document.getElementById('reloadLink'); 291 reloadLink.setAttribute('href', href); 292 293 var showMoreElem = document.getElementById("showMore"); 294 showMoreElem.addEventListener('click', function () { 295 var moreInfoElem 296 = document.getElementById("moreInfo"); 297 298 if (showMoreElem.innerHTML === showMoreText) { 299 moreInfoElem.setAttribute( 300 "style", 301 "display: block;" 302 + "color:#FF991F;" 303 + "font-size:small;" 304 + "user-select:text;");
305 showMoreElem.innerHTML = showLessText; 306 } 307 else { 308 moreInfoElem.setAttribute( 309 "style", "display: none;"); 310 showMoreElem.innerHTML = showMoreText; 311 } 312 }); 313 314 window.setTimeout( 315 function () { window.location.replace(href); }, delay); 316 317 // Call extra handler if defined. 318 if (typeof postLoadErrorHandler === "function") { 319 postLoadErrorHandler(fileRef); 320 } 321 }; 322 window.removeEventListener( 323 'error', loadErrHandler, true /* capture phase */); 324 } 325 }; 326 window.addEventListener( 327 'error', loadErrHandler, true /* capture phase type of listener */); 328 </script>
328 329
329<script>/* eslint-disable comma-dangle, no-unused-vars, no-var, prefer-template, vars-on-top */ 330 331/* 332 * NOTE: If you add a new option please remember to document it here: 333 * https://jitsi.github.io/handbook/docs/dev-guide/dev-guide-configuration 334 */ 335 336var subdir = ''; 337var subdomain = ''; 338 339if (subdomain) { 340 subdomain = subdomain.substr(0, subdomain.length - 1).split('.') 341 .join('_') 342 .toLowerCase() + '.'; 343} 344 345// In case of no ssi provided by the webserver, use empty strings 346if (subdir.startsWith('<!--')) { 347 subdir = ''; 348} 349if (subdomain.startsWith('<!--')) { 350 subdomain = ''; 351} 352 353var enableJaaS = true; 354 355var config = { 356 // Connection 357 // 358 359 hosts: { 360 // XMPP domain. 361 domain: 'bell.a4e.ar', 362 363 // When using authentication, domain for guest users. 364 // anonymousdomain: 'guest.example.com', 365 366 // Domain for authenticated users. Defaults to <domain>. 367 // authdomain: 'bell.a4e.ar', 368 anonymousdomain: 'guest.ritameet.com', 369 370 // Focus component domain. Defaults to focus.<domain>. 371 // focus: 'focus.bell.a4e.ar', 372 373 // XMPP MUC domain. FIXME: use XEP-0030 to discover it. 374 muc: 'conference.' + subdomain + 'bell.a4e.ar', 375 }, 376 377 // BOSH URL. FIXME: use XEP-0156 to discover it. 378 bosh: 'https://bell.a4e.ar/' + subdir + 'http-bind', 379 380 // Websocket URL (XMPP) 381 websocket: 'wss://bell.a4e.ar/' + subdir + 'xmpp-websocket', 382 383 // websocketKeepAliveUrl: 'https://bell.a4e.ar/' + subdir + '_unlock', 384 385 // Whether BOSH should be preferred over WebSocket if both are configured. 386 // preferBosh: false, 387 388 // The real JID of focus participant - can be overridden here 389 // Do not change username - FIXME: Make focus username configurable 390 // https://github.com/jitsi/jitsi-meet/issues/7376 391 // focusUserJid: '[email protected]', 392 393 // Option to send conference requests to jicofo over http (requires nginx rule for it) 394 // conferenceRequestUrl: 395 // 'https://ritameet.com/' + subdir + 'conference-request/v1', 396 397 // Options related to the bridge (colibri) data channel 398 bridgeChannel: { 399 // If the backend advertises multiple colibri websockets, this options allows 400 // to filter some of them out based on the domain name. We use the first URL 401 // which does not match ignoreDomain, falling back to the first one that matches 402 // ignoreDomain. Has no effect if undefined. 403 // ignoreDomain: 'example.com', 404 405 // Prefer SCTP (WebRTC data channels over the media path) over a colibri websocket. 406 // If SCTP is available in the backend it will be used instead of a WS. Defaults to 407 // false (SCTP is used only if available and no WS are available). 408 // preferSctp: false 409 }, 410 411 // Testing / experimental features. 412 // 413 414 testing: { 415 // Allows the setting of a custom bandwidth value from the UI. 416 // assumeBandwidth: true, 417 418 // Enables use of getDisplayMedia in electron 419 // electronUseGetDisplayMedia: false, 420 421 // Enables AV1 codec for FF. Note: By default it is disabled. 422 // enableAV1ForFF: false, 423 424 // Enables the use of the codec selection API supported by the browsers . 425 // enableCodecSelectionAPI: false, 426 427 // P2P test mode disables automatic switching to P2P when there are 2 428 // participants in the conference. 429 // p2pTestMode: false, 430 431 // Enables the test specific features consumed by jitsi-meet-torture 432 // testMode: false, 433 434 // Disables the auto-play behavior of *all* newly created video element. 435 // This is useful when the client runs on a host with limited resources. 436 // noAutoPlayVideo: false, 437 438 // Experiment: Whether to skip interim transcriptions. 439 // skipInterimTranscriptions: false, 440 441 // Dump transcripts to a <transcript> element for debugging. 442 // dumpTranscript: false, 443 444 // Log the audio levels. 445 // debugAudioLevels: true, 446 447 // Will replace ice candidates IPs with invalid ones in order to fail ice. 448 // failICE: true, 449 450 // When running on Spot TV, this controls whether to show the recording consent dialog. 451 // If false (default), Spot instances will not show the recording consent dialog. 452 // If true, Spot instances will show the recording consent dialog like regular clients. 453 // showSpotConsentDialog: false, 454 }, 455 456 // Disables moderator indicators. 457 // disableModeratorIndicator: false, 458 459 // Disables the reactions feature. 460 disableReactions: true, 461 462 // Disables the reactions moderation feature. 463 // disableReactionsModeration: false, 464 465 // Disables the reactions in chat feature. 466 // disableReactionsInChat: false, 467 468 // Disables polls feature. 469 // disablePolls: false, 470 471 // Disables demote button from self-view 472 // disableSelfDemote: false, 473 474 // Disables self-view tile. (hides it from tile view and from filmstrip) 475 disableSelfView: false, 476 477 // Disables self-view settings in UI 478 disableSelfViewSettings: true, 479 480 // screenshotCapture : { 481 // Enables the screensharing capture feature. 482 // enabled: false, 483 // 484 // The mode for the screenshot capture feature. 485 // Can be either 'recording' - screensharing screenshots are taken 486 // only when the recording is also on, 487 // or 'always' - screensharing screenshots are always taken. 488 // mode: 'recording', 489 // } 490 491 // Disables ICE/UDP by filtering out local and remote UDP candidates in 492 // signalling. 493 // webrtcIceUdpDisable: false, 494 495 // Disables ICE/TCP by filtering out local and remote TCP candidates in 496 // signalling. 497 // webrtcIceTcpDisable: false, 498 499 500 // Media 501 // 502 503 // Audio 504 505 // Disable measuring of audio levels. 506 // disableAudioLevels: false, 507 508 // audioLevelsInterval: 200, 509 510 // Enabling this will run the lib-jitsi-meet no audio detection module which 511 // will notify the user if the current selected microphone has no audio 512 // input and will suggest another valid device if one is present. 513 enableNoAudioDetection: true, 514 515 // Enabling this will show a "Save Logs" link in the GSM popover that can be 516 // used to collect debug information (XMPP IQs, SDP offer/answer cycles) 517 // about the call. 518 // enableSaveLogs: false, 519 520 // Enabling this will hide the "Show More" link in the GSM popover that can be 521 // used to display more statistics about the connection (IP, Port, protocol, etc). 522 // disableShowMoreStats: true, 523 524 // Enabling this will run the lib-jitsi-meet noise detection module which will 525 // notify the user if there is noise, other than voice, coming from the current 526 // selected microphone. The purpose it to let the user know that the input could 527 // be potentially unpleasant for other meeting participants. 528 enableNoisyMicDetection: true, 529 530 // Start the conference in audio only mode (no video is being received nor 531 // sent). 532 // startAudioOnly: false, 533 534 // Every participant after the Nth will start audio muted. 535 // startAudioMuted: 10, 536 537 // Start calls with audio muted. Unlike the option above, this one is only 538 // applied locally. FIXME: having these 2 options is confusing. 539 // startWithAudioMuted: false, 540 541 // Enabling it (with #params) will disable local audio output of remote 542 // participants and to enable it back a reload is needed. 543 // startSilent: false, 544 545 // Enables support for opus-red (redundancy for Opus). 546 // Rita Meet: enabled for resilience on poor networks â duplicates audio 547 // packets so voice survives high packet loss. 548 enableOpusRed: true, 549 550 // Specify audio quality stereo and opusMaxAverageBitrate values in order to enable HD audio. 551 // Beware, by doing so, you are disabling echo cancellation, noise suppression and AGC. 552 // Specify enableOpusDtx to enable support for opus-dtx where 553 // audio packets wonât be transmitted while participant is silent or muted. 554 // audioQuality: { 555 // stereo: false, 556 // opusMaxAverageBitrate: null, // Value to fit the 6000 to 510000 range. 557 // enableOpusDtx: false, 558 // }, 559 560 // Noise suppression configuration. By default rnnoise is used. Optionally Krisp 561 // can be used by enabling it below, but the Krisp JS SDK files must be supplied in your 562 // installation. Specifically, these files are needed: 563 // - https://meet.example.com/libs/krisp/krisp.mjs 564 // - https://meet.example.com/libs/krisp/models/model_8.kw 565 // - https://meet.example.com/libs/krisp/models/model_nc.kw 566 // - https://meet.example.com/libs/krisp/models/model_bvc.kw 567 // - https://meet.example.com/libs/krisp/assets/bvc-allowed.txt 568 // In case when you have known BVC supported devices and you want to extend allowed devices list 569 // - https://meet.example.com/libs/krisp/assets/bvc-allowed-ext.txt 570 // In case when you have known BVC supported devices and you want to extend allowed devices list 571 // - https://meet.example.com/libs/krisp/models/model_inbound_8.kw 572 // - https://meet.example.com/libs/krisp/models/model_inbound_16.kw 573 // In case when you want to use inbound noise suppression models 574 // NOTE: Krisp JS SDK v2.0.0 was tested. 575 // noiseSuppression: { 576 // krisp: { 577 // enabled: false, 578 // logProcessStats: false, 579 // debugLogs: false, 580 // useBVC: false, 581 // bufferOverflowMS: 1000, 582 // inboundModels: { 583 // modelInbound8: 'model_inbound_8.kef', 584 // modelInbound16: 'model_inbound_16.kef', 585 // }, 586 // preloadInboundModels: { 587 // modelInbound8: 'model_inbound_8.kef', 588 // modelInbound16: 'model_inbound_16.kef', 589 // }, 590 // preloadModels: { 591 // modelBVC: 'model_bvc.kef', 592 // model8: 'model_8.kef', 593 // modelNC: 'model_nc_mq.kef', 594 // }, 595 // models: { 596 // modelBVC: 'model_bvc.kef', 597 // model8: 'model_8.kef', 598 // modelNV: 'model_nc_mq.kef', 599 // }, 600 // bvc: { 601 // allowedDevices: 'bvc-allowed.txt', 602 // allowedDevicesExt: 'bvc-allowed-ext.txt', 603 // } 604 // }, 605 // }, 606 607 // Video 608 609 // Sets the default camera facing mode. 610 // cameraFacingMode: 'user', 611 612 // Sets the preferred resolution (height) for local video. Defaults to 720. 613 // resolution: 720, 614 615 // DEPRECATED. Please use raisedHands.disableRemoveRaisedHandOnFocus instead. 616 // Specifies whether the raised hand will hide when someone becomes a dominant speaker or not 617 // disableRemoveRaisedHandOnFocus: false, 618 619 // Specifies which raised hand related config should be set. 620 // raisedHands: { 621 // // Specifies whether the raised hand can be lowered by moderator. 622 // disableLowerHandByModerator: false, 623 624 // // Specifies whether there is a notification before hiding the raised hand 625 // // when someone becomes the dominant speaker. 626 // disableLowerHandNotification: true, 627 628 // // Specifies whether there is a notification when you are the next speaker in line. 629 // disableNextSpeakerNotification: false, 630 631 // // Specifies whether the raised hand will hide when someone becomes a dominant speaker or not. 632 // disableRemoveRaisedHandOnFocus: false, 633 // }, 634 635 // speakerStats: { 636 // // Specifies whether the speaker stats is enable or not. 637 // disabled: false, 638
639 // // Specifies whether there will be a search field in speaker stats or not. 640 // disableSearch: false, 641 642 // // Specifies whether participants in speaker stats should be ordered or not, and with what priority. 643 // // 'role', <- Moderators on top. 644 // // 'name', <- Alphabetically by name. 645 // // 'hasLeft', <- The ones that have left in the bottom. 646 // order: [ 647 // 'role', 648 // 'name', 649 // 'hasLeft', 650 // ], 651 // }, 652 653 // DEPRECATED. Please use speakerStats.disableSearch instead. 654 // Specifies whether there will be a search field in speaker stats or not 655 // disableSpeakerStatsSearch: false, 656 657 // DEPRECATED. Please use speakerStats.order . 658 // Specifies whether participants in speaker stats should be ordered or not, and with what priority 659 // speakerStatsOrder: [ 660 // 'role', <- Moderators on top 661 // 'name', <- Alphabetically by name 662 // 'hasLeft', <- The ones that have left in the bottom 663 // ], <- the order of the array elements determines priority 664 665 // How many participants while in the tile view mode, before the receiving video quality is reduced from HD to SD. 666 // Use -1 to disable. 667 // maxFullResolutionParticipants: 2, 668 669 // w3c spec-compliant video constraints to use for video capture. Currently 670 // used by browsers that return true from lib-jitsi-meet's 671 // util#browser#usesNewGumFlow. The constraints are independent from 672 // this config's resolution value. Defaults to requesting an ideal 673 // resolution of 720p. 674 constraints: { 675 video: { 676 // exact lock â Chrome won't fall back to 4:3 native modes (e.g. 677 // 640x480, 320x240) under bandwidth pressure; it scales the 678 // 16:9 source instead. 679 aspectRatio: { exact: 16 / 9 }, 680 width: { 681 ideal: 1280, 682 max: 1920, 683 min: 640, 684 }, 685 height: { 686 ideal: 720, 687 max: 1080, 688 min: 360, 689 }, 690 }, 691 }, 692 693 // Enable / disable simulcast support. 694 // disableSimulcast: false, 695 696 // Every participant after the Nth will start video muted. 697 // startVideoMuted: 10, 698 699 // Start calls with video muted. Unlike the option above, this one is only 700 // applied locally. FIXME: having these 2 options is confusing. 701 // startWithVideoMuted: false, 702 703 // Desktop sharing 704 705 // Optional desktop sharing frame rate options. Default value: min:5, max:5. 706 // desktopSharingFrameRate: { 707 // min: 5, 708 // max: 5, 709 // }, 710 711 // Optional screenshare settings that give more control over screen capture in the browser. 712 // screenShareSettings: { 713 // // Show users the current tab is the preferred capture source, default: false. 714 // desktopPreferCurrentTab: false, 715 // // Allow users to select system audio, default: include. 716 // desktopSystemAudio: 'include', 717 // // Allow users to seamlessly switch which tab they are sharing without having to select the tab again. 718 // desktopSurfaceSwitching: 'include', 719 // // Allow a user to be shown a preference for what screen is to be captured, default: unset. 720 // desktopDisplaySurface: undefined, 721 // // Allow users to select the current tab as a capture source, default: exclude. 722 // desktopSelfBrowserSurface: 'exclude' 723 // }, 724 725 // Recording 726 727 // Enable the dropbox integration. 728 // dropbox: { 729 // appKey: '<APP_KEY>', // Specify your app key here. 730 // // A URL to redirect the user to, after authenticating 731 // // by default uses: 732 // // 'https://bell.a4e.ar/static/oauth.html' 733 // redirectURI: 734 // 'https://bell.a4e.ar/subfolder/static/oauth.html', 735 // }, 736 737 // configuration for all things recording related. Existing settings will be migrated here in the future. 738 // recordings: { 739 // // IF true (default) recording audio and video is selected by default in the recording dialog. 740 // // recordAudioAndVideo: true, 741 // // If true, shows a notification at the start of the meeting with a call to action button 742 // // to start recording (for users who can do so). 743 // // suggestRecording: true, 744 // // If true, shows a warning label in the prejoin screen to point out the possibility that 745 // // the call you're joining might be recorded. 746 // // showPrejoinWarning: true, 747 // // If true, the notification for recording start will display a link to download the cloud recording. 748 // // showRecordingLink: true,
749 // // If true, mutes audio and video when a recording begins and displays a dialog 750 // // explaining the effect of unmuting. 751 // // requireConsent: true, 752 // // If true consent will be skipped for users who are already in the meeting. 753 // // skipConsentInMeeting: true, 754 // // Link for the recording consent dialog's "Learn more" link. 755 // // consentLearnMoreLink: 'https://jitsi.org/meet/consent', 756 // }, 757 758 // recordingService: { 759 // // When integrations like dropbox are enabled only that will be shown, 760 // // by enabling fileRecordingsServiceEnabled, we show both the integrations 761 // // and the generic recording service (its configuration and storage type 762 // // depends on jibri configuration) 763 // enabled: false, 764 765 // // Whether to show the possibility to share file recording with other people 766 // // (e.g. meeting participants), based on the actual implementation 767 // // on the backend. 768 // sharingEnabled: false, 769 770 // // Hide the warning that says we only store the recording for 24 hours. 771 // hideStorageWarning: false, 772 // }, 773 774 // DEPRECATED. Use recordingService.enabled instead. 775 // fileRecordingsServiceEnabled: false, 776 777 // DEPRECATED. Use recordingService.sharingEnabled instead. 778 // fileRecordingsServiceSharingEnabled: false, 779 780 // Local recording configuration. 781 // localRecording: { 782 // // Whether to disable local recording or not. 783 // disable: false, 784 785 // // Whether to notify all participants when a participant is recording locally. 786 // notifyAllParticipants: false, 787 788 // // Whether to disable the self recording feature (only local participant streams). 789 // disableSelfRecording: false, 790 // }, 791 792 // Customize the Live Streaming dialog. Can be modified for a non-YouTube provider. 793 // liveStreaming: { 794 // // Whether to enable live streaming or not. 795 // enabled: false, 796 // // Terms link 797 // termsLink: 'https://www.youtube.com/t/terms', 798 // // Data privacy link 799 // dataPrivacyLink: 'https://policies.google.com/privacy', 800 // // RegExp string that validates the stream key input field 801 // validatorRegExpString: '^(?:[a-zA-Z0-9]{4}(?:-(?!$)|$)){4}', 802 // // Documentation reference for the live streaming feature. 803 // helpLink: 'https://jitsi.org/live' 804 // }, 805 806 // DEPRECATED. Use liveStreaming.enabled instead. 807 // liveStreamingEnabled: false, 808 809 // DEPRECATED. Use transcription.enabled instead. 810 // transcribingEnabled: false, 811 812 // DEPRECATED. Use transcription.useAppLanguage instead. 813 // transcribeWithAppLanguage: true, 814 815 // DEPRECATED. Use transcription.preferredLanguage instead. 816 // preferredTranscribeLanguage: 'en-US', 817 818 // DEPRECATED. Use transcription.autoTranscribeOnRecord instead. 819 // autoCaptionOnRecord: false, 820 821 // Transcription options. 822 // transcription: { 823 // // Whether the feature should be enabled or not. 824 // enabled: false, 825 826 // // Translation languages. 827 // // Available languages can be found in 828 // // ./lang/translation-languages.json. 829 // translationLanguages: ['en', 'es', 'fr', 'ro'], 830 831 // // Important languages to show on the top of the language list. 832 // translationLanguagesHead: ['en'], 833 834 // // If true transcriber will use the application language. 835 // // The application language is either explicitly set by participants in their settings or automatically 836 // // detected based on the environment, e.g. if the app is opened in a chrome instance which 837 // // is using french as its default language then transcriptions for that participant will be in french. 838 // // Defaults to true. 839 // useAppLanguage: true, 840 841 // // Transcriber language. This settings will only work if "useAppLanguage" 842 // // is explicitly set to false. 843 // // Available languages can be found in 844 // // ./src/react/features/transcribing/transcriber-langs.json. 845 // preferredLanguage: 'en-US', 846 847 // // Enables automatic turning on transcribing when recording is started 848 // autoTranscribeOnRecord: false, 849 850 // // Enables automatic request of subtitles when transcriber is present in the meeting, uses the default 851 // // language that is set 852 // autoCaptionOnTranscribe: false, 853 // 854 // // Disables everything related to closed captions - the tab in the chat area, the button in the menu,
855 // // subtitles on stage and the "Show subtitles on stage" checkbox in the settings. 856 // // Note: Starting transcriptions from the recording dialog will still work. 857 // disableClosedCaptions: false, 858 859 // // Whether to invite jigasi when backend transcriptions are enabled (asyncTranscription is true in metadata). 860 // // By default, we invite it. 861 // inviteJigasiOnBackendTranscribing: true, 862 // }, 863 864 // Misc 865 866 // Default value for the channel "last N" attribute. -1 for unlimited. 867 channelLastN: -1, 868 869 // Connection indicators 870 // connectionIndicators: { 871 // autoHide: true, 872 // autoHideTimeout: 5000, 873 // disabled: false, 874 // disableDetails: false, 875 // inactiveDisabled: false 876 // }, 877 878 // Provides a way for the lastN value to be controlled through the UI. 879 // When startLastN is present, conference starts with a last-n value of startLastN and channelLastN 880 // value will be used when the quality level is selected using "Manage Video Quality" slider. 881 // startLastN: 1, 882 883 // Rita Meet: prefer VP9 on desktop â better quality at low bitrate on poor 884 // networks than the default VP8-first order. Mobile stays on light VP8/H264 885 // (hardware-friendly, less CPU). AV1 last (CPU-heavy, partial support). 886 videoQuality: { 887 codecPreferenceOrder: [ 'VP9', 'VP8', 'H264', 'AV1' ], 888 mobileCodecPreferenceOrder: [ 'VP8', 'H264', 'VP9', 'AV1' ], 889 }, 890 891 // Specify the settings for video quality optimizations on the client. 892 // videoQuality: { 893 // 894 // // Provides a way to set the codec preference on desktop based endpoints. 895 // codecPreferenceOrder: [ 'AV1', 'VP9', 'VP8', 'H264' ], 896 // 897 // // Provides a way to set the codec for screenshare. 898 // screenshareCodec: 'AV1', 899 // mobileScreenshareCodec: 'VP8', 900 // 901 // // Enables the adaptive mode in the client that will make runtime adjustments to selected codecs and received 902 // // videos for a better user experience. This mode will kick
902in only when CPU overuse is reported in the 903 // // WebRTC statistics for the outbound video streams. 904 // enableAdaptiveMode: false, 905 // 906 // // Codec specific settings for scalability modes and max bitrates. 907 // av1: { 908 // maxBitratesVideo: { 909 // low: 100000, 910 // standard: 300000, 911 // high: 1000000, 912 // fullHd: 2000000, 913 // ultraHd: 4000000, 914 // ssHigh: 2500000 915 // }, 916 // scalabilityModeEnabled: true, 917 // useSimulcast: false, 918 // useKSVC: true 919 // }, 920 // h264: { 921 // maxBitratesVideo: { 922 // low: 200000, 923 // standard: 500000, 924 // high: 1500000, 925 // fullHd: 3000000, 926 // ultraHd: 6000000, 927 // ssHigh: 2500000 928 // }, 929 // scalabilityModeEnabled: true 930 // }, 931 // vp8: { 932 // maxBitratesVideo: { 933 // low: 200000, 934 // standard: 500000, 935 // high: 1500000, 936 // fullHd: 3000000, 937 // ultraHd: 6000000, 938 // ssHigh: 2500000 939 // }, 940 // scalabilityModeEnabled: false 941 // }, 942 // vp9: { 943 // maxBitratesVideo: { 944 // low: 100000, 945 // standard: 300000, 946 // high: 1200000, 947 // fullHd: 2500000, 948 // ultraHd: 5000000, 949 // ssHigh: 2500000 950 // }, 951 // scalabilityModeEnabled: true, 952 // useSimulcast: false, 953 // useKSVC: true 954 // }, 955 // 956 // // The options can be used to override default thresholds of video thumbnail heights corresponding to 957 // // the video quality levels used in the application. At the time of this writing the allowed levels are: 958 // // 'low' - for the low quality level (180p at the time of this writing) 959 // // 'standard' - for the medium quality level (360p) 960 // // 'high' - for the high quality level (720p) 961 // // The keys should be positive numbers which represent the minimal thumbnail height for the quality level. 962 // // 963 // // With the default config value below the application will use 'low' quality until the thumbnails are 964 // // at least 360 pixels tall. If the thumbnail height reaches 720 pixels then the application will switch to 965 // // the high quality. 966 // minHeightForQualityLvl: { 967 // 360: 'standard', 968 // 720: 'high', 969 // }, 970 // 971 // // Provides a way to set the codec preference on mobile devices, both on RN and mobile browser based endpoint 972 // mobileCodecPreferenceOrder: [ 'VP8', 'VP9', 'H264', 'AV1' ], 973 // }, 974 975 // Notification timeouts 976 // notificationTimeouts: { 977 // short: 2500, 978 // medium: 5000, 979 // long: 10000, 980 // extraLong: 60000, 981 // sticky: 0, 982 // }, 983 984 // // Options for the recording limit notification. 985 // recordingLimit: { 986 // 987 // // The recording limit in minutes. Note: This number appears in the notification text 988 // // but doesn't enforce the actual recording time limit. This should be configured in 989 // // jibri! 990 // limit: 60, 991 // 992 // // The name of the app with unlimited recordings. 993 // appName: 'Unlimited recordings APP', 994 // 995 // // The URL of the app with unlimited recordings. 996 // appURL: 'https://unlimited.recordings.app.com/', 997 // }, 998 999 // Disables or enables RTX (RFC 4588) (defaults to false). 1000 // disableRtx: false, 1001 1002 // Moves all Jitsi Meet 'beforeunload' logic (cleanup, leaving, disconnecting, etc) to the 'unload' event. 1003 // disableBeforeUnloadHandlers: true, 1004 1005 // Disables or enables TCC support in this client (default: enabled). 1006 // enableTcc: true, 1007 1008 // Disables or enables REMB support in this client (default: enabled). 1009 // enableRemb: true, 1010 1011 // Enables forced reload of the client when the call is migrated as a result of 1012 // the bridge going down. 1013 // enableForcedReload: true, 1014 1015 // Use TURN/UDP servers for the jitsi-videobridge connection (by default
1016 // we filter out TURN/UDP because it is usually not needed since the 1017 // bridge itself is reachable via UDP) 1018 // useTurnUdp: false 1019 1020 // Enable support for encoded transform in supported browsers. This allows 1021 // E2EE to work in Safari if the corresponding flag is enabled in the browser. 1022 // Experimental. 1023 // enableEncodedTransformSupport: false, 1024 1025 // UI 1026 // 1027 1028 // Disables responsive tiles. 1029 // disableResponsiveTiles: false, 1030 1031 // DEPRECATED. Please use `securityUi?.hideLobbyButton` instead. 1032 // Hides lobby button. 1033 // hideLobbyButton: false, 1034 1035 // DEPRECATED. Please use `lobby?.autoKnock` instead. 1036 // If Lobby is enabled starts knocking automatically. 1037 // autoKnockLobby: false, 1038 1039 // DEPRECATED. Please use `lobby?.enableChat` instead. 1040 // Enable lobby chat. 1041 // enableLobbyChat: true, 1042 1043 // DEPRECATED! Use `breakoutRooms.hideAddRoomButton` instead. 1044 // Hides add breakout room button 1045 // hideAddRoomButton: false, 1046 1047 // Require users to always specify a display name. 1048 // requireDisplayName: true, 1049 1050 // Enables webhid functionality for Audio. 1051 // enableWebHIDFeature: false, 1052 1053 // DEPRECATED! Use 'welcomePage.disabled' instead. 1054 // Whether to use a welcome page or not. In case it's false a random room 1055 // will be joined when no room is specified. 1056 // enableWelcomePage: true, 1057 1058 // Configs for welcome page. 1059 // welcomePage: { 1060 // // Whether to disable welcome page. In case it's disabled a random room 1061 // // will be joined when no room is specified. 1062 // disabled: false, 1063 // // If set, landing page will redirect to this URL. 1064 // customUrl: '' 1065 // }, 1066 1067 // Configs for the lobby screen. 1068 // lobby: { 1069 // // If Lobby is enabled, it starts knocking automatically. Replaces `autoKnockLobby`. 1070 // autoKnock: false, 1071 // // Enables the lobby chat. Replaces `enableLobbyChat`. 1072 // enableChat: true, 1073 // }, 1074 1075 // Configs for the security related UI elements. 1076 // securityUi: { 1077 // // Hides the lobby button. Replaces `hideLobbyButton`. 1078 // hideLobbyButton: false, 1079 // // Hides the possibility to set and enter a lobby password. 1080 // disableLobbyPassword: false, 1081 // }, 1082 1083 // Disable app shortcuts that are registered upon joining a conference 1084 // disableShortcuts: false, 1085 1086 // Disable initial browser getUserMedia requests. 1087 // This is useful for scenarios where users might want to start a conference for screensharing only 1088 // disableInitialGUM: false, 1089 1090 // Enabling the close page will ignore the welcome page redirection when 1091 // a call is hangup. 1092 // enableClosePage: false, 1093 1094 // Disable hiding of remote thumbnails when in a 1-on-1 conference call. 1095 // Setting this to null, will also disable showing the remote videos 1096 // when the toolbar is shown on mouse movements 1097 // disable1On1Mode: null | false | true, 1098 1099 // Default local name to be displayed 1100 // defaultLocalDisplayName: 'me', 1101 1102 // Default remote name to be displayed 1103 // defaultRemoteDisplayName: 'Fellow Jitster', 1104 1105 // Hides the display name from the participant thumbnail 1106 // hideDisplayName: false, 1107 1108 // Hides the dominant speaker name badge that hovers above the toolbox 1109 // hideDominantSpeakerBadge: false, 1110 1111 // Default language for the user interface. Cannot be overwritten. 1112 // DEPRECATED! Use the `lang` iframe option directly instead. 1113 // defaultLanguage: 'en', 1114 1115 // Disables profile and the edit of all fields from the profile settings (display name and email) 1116 // disableProfile: false, 1117 1118 // Hides the email section under profile settings. 1119 // hideEmailInSettings: false, 1120 1121 // When enabled the password used for locking a room is restricted to up to the number of digits specified 1122 // default: roomPasswordNumberOfDigits: false, 1123 // roomPasswordNumberOfDigits: 10, 1124 1125 // Message to show the users. Example: 'The service will be down for 1126 // maintenance at 01:00 AM GMT, 1127 // noticeMessage: '', 1128 1129 // Enables calendar integration, depends on googleApiApplicationClientID 1130 // and microsoftApiApplicationClientID 1131 // enableCalendarIntegration: false, 1132 1133 // Whether to notify when the conference is terminated because it was destroyed. 1134 // notifyOnConferenceDestruction: true, 1135 1136 // The client id for the google APIs used for the calendar integration, youtube livestreaming, etc. 1137 // googleApiApplicationClientID: '<client_id>', 1138 1139 // Configs for prejoin page. 1140 // prejoinConfig: { 1141 // // When 'true', it shows an intermediate page before joining, where the user can configure their devices. 1142 // // This replaces `prejoinPageEnabled`. Defaults to true. 1143 // enabled: true, 1144 // // Hides the participant name editing field in the prejoin screen. 1145 // // If requireDisplayName is also set as true, a name should still be provided through 1146 // // either the jwt or the userInfo from the iframe api init object in order for this to have an effect. 1147 // hideDisplayName: false, 1148 // // List of buttons to hide from the extra join options dropdown. 1149 // hideExtraJoinButtons: ['no-audio', 'by-phone'], 1150 // // Configuration for pre-call test 1151 // // By setting preCallTestEnabled, you enable the pre-call test in the prejoin page. 1152 // // ICE server credentials need to be provided over the preCallTestICEUrl 1153 // preCallTestEnabled: false, 1154 // preCallTestICEUrl: '' 1155 // }, 1156 1157 // When 'true', the user cannot edit the display name. 1158 // (Mainly useful when used in conjunction with the JWT so the JWT name becomes read only.) 1159 // readOnlyName: false, 1160 1161 // If etherpad integration is enabled, setting this to true will 1162 // automatically open the etherpad when a participant joins. This 1163 // does not affect the mobile app since opening an etherpad 1164 // obscures the conference controls -- it's better to let users 1165 // choose to open the pad on their own in that case.
1166 // openSharedDocumentOnJoin: false, 1167 1168 // If true, shows the unsafe room name warning label when a room name is 1169 // deemed unsafe (due to the simplicity in the name) and a password is not 1170 // set or the lobby is not enabled. 1171 // enableInsecureRoomNameWarning: false, 1172 1173 // Array with avatar URL prefixes that need to use CORS. 1174 // corsAvatarURLs: [ 'https://www.gravatar.com/avatar/' ], 1175 1176 // Base URL for a Gravatar-compatible service. Defaults to Gravatar. 1177 // DEPRECATED! Use `gravatar.baseUrl` instead. 1178 // gravatarBaseURL: 'https://www.gravatar.com/avatar/', 1179 1180 // Setup for Gravatar-compatible services. 1181 // gravatar: { 1182 // // Defaults to Gravatar. 1183 // baseUrl: 'https://www.gravatar.com/avatar/', 1184 // // True if Gravatar should be disabled. 1185 // disabled: false, 1186 // }, 1187 1188 // App name to be displayed in the invitation email subject, as an alternative to 1189 // interfaceConfig.APP_NAME. 1190 // inviteAppName: null, 1191 1192 // Moved from interfaceConfig(TOOLBAR_BUTTONS). 1193 // The name of the toolbar buttons to display in the toolbar, including the 1194 // "More actions" menu. If present, the button will display. Exceptions are 1195 // "livestreaming" and "recording" which also require being a moderator and 1196 // some other values in config.js to be enabled. Also, the "profile" button will 1197 // not display for users with a JWT. 1198 // Notes: 1199 // - it's possible to reorder the buttons in the maintoolbar by changing the order of the mainToolbarButtons 1200 // - 'desktop' controls the "Share your screen" button 1201 // - if `toolbarButtons` is undefined, we fallback to enabling all buttons on the UI 1202 // toolbarButtons: [ 1203 // 'camera', 1204 // 'chat', 1205 // 'closedcaptions', 1206 // 'desktop', 1207 // 'download', 1208 // 'embedmeeting', 1209 // 'etherpad', 1210 // 'feedback', 1211 // 'filmstrip', 1212 // 'fullscreen', 1213 // 'hangup', 1214 // 'help', 1215 // 'highlight', 1216 // 'invite', 1217 // 'linktosalesforce', 1218 // 'livestreaming', 1219 // 'microphone', 1220 // 'noisesuppression', 1221 // 'participants-pane', 1222 // 'profile', 1223 // 'raisehand', 1224 // 'recording', 1225 // 'security', 1226 // 'select-background', 1227 // 'settings', 1228 // 'shareaudio', 1229 // 'sharedvideo', 1230 // 'shortcuts', 1231 // 'stats', 1232 // 'tileview', 1233 // 'toggle-camera', 1234 // 'videoquality', 1235 // 'whiteboard', 1236 // ], 1237 1238 // Holds values related to toolbar visibility control. 1239 // toolbarConfig: { 1240 toolbarConfig: { alwaysVisible: true }, 1241 // // Moved from interfaceConfig.INITIAL_TOOLBAR_TIMEOUT 1242 // // The initial number of milliseconds for the toolbar buttons to be visible on screen. 1243 // initialTimeout: 20000, 1244 // // Moved from interfaceConfig.TOOLBAR_TIMEOUT 1245 // // Number of milliseconds for the toolbar buttons to be visible on screen. 1246 // timeout: 4000, 1247 // // Moved from interfaceConfig.TOOLBAR_ALWAYS_VISIBLE 1248 // // Whether toolbar should be always visible or should hide after x milliseconds. 1249 // alwaysVisible: false, 1250 // // Indicates whether the toolbar should still autohide when chat is open 1251 // autoHideWhileChatIsOpen: false, 1252 // }, 1253 1254 // Overrides the buttons displayed in the main toolbar. Depending on the screen size the number of displayed 1255 // buttons varies from 2 buttons to 8 buttons. Every array in the mainToolbarButtons array will replace the 1256 // corresponding default buttons configuration matched by the number of buttons specified in the array. Arrays with 1257 // more than 8 buttons or less then 2 buttons will be ignored. When there there isn't an override for a certain 1258 // configuration (for example when 3 buttons are displayed) the default jitsi-meet configuration will be used. 1259 // The order of the buttons in the array is preserved. 1260 // mainToolbarButtons: [ 1261 // [ 'microphone', 'camera', 'desktop', 'chat', 'raisehand', 'reactions', 'participants-pane', 'tileview' ], 1262 // [ 'microphone', 'camera', 'desktop', 'chat', 'raisehand', 'participants-pane', 'tileview' ], 1263 // [ 'microphone', 'camera', 'desktop', 'chat', 'raisehand', 'participants-pane' ], 1264 // [ 'microphone', 'camera', 'desktop', 'chat', 'participants-pane' ], 1265 // [ 'microphone', 'camera', 'chat', 'participants-pane' ], 1266 // [ 'microphone', 'camera', 'chat' ], 1267 // [ 'microphone', 'camera' ] 1268 // ], 1269 1270 // Toolbar buttons which have their click/tap event exposed through the API on 1271 // `toolbarButtonClicked`. Passing a string for the button key will 1272 // prevent execution of the click/tap routine; passing an object with `key` and 1273 // `preventExecution` flag on false will not prevent execution of the click/tap 1274 // routine. Below array with mixed mode for passing the buttons. 1275 // buttonsWithNotifyClick: [ 1276 // 'camera', 1277 // { 1278 // key: 'chat', 1279 // preventExecution: false 1280 // }, 1281 // { 1282 // key: 'closedcaptions', 1283 // preventExecution: true 1284 // }, 1285 // 'desktop', 1286 // 'download', 1287 // 'embedmeeting', 1288 // 'end-meeting', 1289 // 'etherpad', 1290 // 'feedback', 1291 // 'filmstrip', 1292 // 'fullscreen', 1293 // 'hangup', 1294 // 'hangup-menu', 1295 // 'help', 1296 // { 1297 // key: 'invite', 1298 // preventExecution: false 1299 // }, 1300 // 'livestreaming', 1301 // 'microphone', 1302 // 'mute-everyone', 1303 // 'mute-video-everyone', 1304 // 'noisesuppression', 1305 // 'participants-pane', 1306 // 'profile', 1307 // { 1308 // key: 'raisehand', 1309 // preventExecution: true 1310 // }, 1311 // 'recording', 1312 // 'security', 1313 // 'select-background', 1314 // 'settings', 1315 // 'shareaudio', 1316 // 'sharedvideo', 1317 // 'shortcuts', 1318 // 'stats', 1319 // 'tileview', 1320 // 'toggle-camera', 1321 // 'videoquality', 1322 // // The add passcode button from the security dialog. 1323 // { 1324 // key: 'add-passcode', 1325 // preventExecution: false 1326 // }, 1327 // 'whiteboard', 1328 // ], 1329 1330 // Participant context menu buttons which have their click/tap event exposed through the API on 1331 // `participantMenuButtonClick`. Passing a string for the button key will 1332 // prevent execution of the click/tap routine; passing an object with `key` and 1333 // `preventExecution` flag on false will not prevent execution of the click/tap 1334 // routine. Below array with mixed mode for passing the buttons. 1335 // participantMenuButtonsWithNotifyClick: [ 1336 // 'allow-video', 1337 // { 1338 // key: 'ask-unmute', 1339 // preventExecution: false 1340 // }, 1341 // 'conn-status', 1342 // 'flip-local-video', 1343 // 'grant-moderator', 1344 // { 1345 // key: 'kick', 1346 // preventExecution: true 1347 // }, 1348 // { 1349 // key: 'hide-self-view', 1350 // preventExecution: false 1351 // }, 1352 // 'mute', 1353 // 'mute-others', 1354 // 'mute-others-video', 1355 // 'mute-video', 1356 // 'pinToStage', 1357 // 'privateMessage', 1358 // { 1359 // key: 'remote-control', 1360 // preventExecution: false 1361 // }, 1362 // 'send-participant-to-room', 1363 // 'verify', 1364 // ], 1365 1366 // List of pre meeting screens buttons to hide. The values must be one or more of the 5 allowed buttons: 1367 // 'microphone', 'camera', 'select-background', 'invite', 'settings' 1368 // hiddenPremeetingButtons: [], 1369 1370 // An array with custom option buttons for the participant context menu 1371 // type: Array<{ icon: string; id: string; text: string; }> 1372 // customParticipantMenuButtons: [], 1373 1374 // An array with custom option buttons for the toolbar 1375 // type: Array<{ icon: string; id: string; text: string; backgroundColor?: string; }> 1376 // customToolbarButtons: [], 1377 1378 // Stats 1379 // 1380 1381 // Whether to enable stats collection or not in the TraceablePeerConnection. 1382 // This can be useful for debugging purposes (post-processing/analysis of 1383 // the webrtc stats) as it is done in the jitsi-meet-torture bandwidth 1384 // estimation tests. 1385 // gatherStats: false, 1386 1387 // The interval at which PeerConnection.getStats() is called. Defaults to 10000 1388 // pcStatsInterval: 10000, 1389 1390 // Enables sending participants' display names to stats 1391 // enableDisplayNameInStats: false, 1392 1393 // Enables sending participants' emails (if available) to stats and other analytics 1394 // enableEmailInStats: false, 1395 1396 // faceLandmarks: { 1397 // // Enables sharing your face coordinates. Used for centering faces within a video. 1398 // enableFaceCentering: false, 1399 1400 // // Enables detecting face expressions and sharing data with other participants 1401 // enableFaceExpressionsDetection: false, 1402 1403 // // Enables displaying face expressions in speaker stats 1404 // enableDisplayFaceExpressions: false, 1405 1406 // // Enable rtc stats for face landmarks 1407 // enableRTCStats: false, 1408 1409 // // Minimum required face movement percentage threshold for sending new face centering coordinates data. 1410 // faceCenteringThreshold: 10, 1411 1412 // // Milliseconds for processing a new image capture in order to detect face coordinates if they exist. 1413 // captureInterval: 1000, 1414 // }, 1415 1416 // Controls the percentage of automatic feedback shown to participants. 1417 // The default value is 100%. If set to 0, no automatic feedback will be requested 1418 // feedbackPercentage: 100, 1419 1420 // Privacy 1421 // 1422 1423 // If third party requests are disabled, no other server will be contacted. 1424 // This means avatars will be locally generated and external stats integration 1425 // will not function. 1426 // disableThirdPartyRequests: false, 1427 1428 1429 // Peer-To-Peer mode: used (if enabled) when there are just 2 participants. 1430 // 1431 1432 p2p: { 1433 // Enables peer to peer mode. When enabled the system will try to 1434 // establish a direct connection when there are exactly 2 participants 1435 // in the room. If that succeeds the conference will stop sending data 1436 // through the JVB and use the peer to peer connection instead. When a 1437 // 3rd participant joins the conference will be moved back to the JVB 1438 // connection. 1439 enabled: true, 1440 1441 // Sets the ICE transport policy for the p2p connection. At the time 1442 // of this writing the list of possible values are 'all' and 'relay', 1443 // but that is subject to change in the future. The enum is defined in 1444 // the WebRTC standard: 1445 // https://www.w3.org/TR/webrtc/#rtcicetransportpolicy-enum. 1446 // If not set, the effective value is 'all'. 1447 // iceTransportPolicy: 'all', 1448 1449 // Provides a way to set the codec preference on mobile devices, both on RN and mobile browser based 1450 // endpoints. 1451 // mobileCodecPreferenceOrder: [ 'H264', 'VP8', 'VP9', 'AV1' ], 1452 // 1453 // Provides a way to set the codec preference on desktop based endpoints. 1454 // codecPreferenceOrder: [ 'AV1', 'VP9', 'VP8', 'H264 ], 1455 1456 // Provides a way to set the codec for screenshare. 1457 // screenshareCodec: 'AV1', 1458 // mobileScreenshareCodec: 'VP8', 1459 1460 // How long we're going to wait, before going back to P2P after the 3rd 1461 // participant has left the conference (to filter out page reload). 1462 // backToP2PDelay: 5, 1463 1464 // The STUN servers that will be used in the peer to peer connections. 1465 // Rita Meet: use our own STUN (not jitsi.net) so connection metadata 1466 // for P2P calls doesn't leak to a third party. TURN relay fallback is 1467 // provided dynamically via prosody external_services (XEP-0215). 1468 stunServers: [ 1469 { urls: 'stun:bell.a4e.ar:3478' }, 1470 ], 1471 }, 1472 1473 analytics: { 1474 // True if the analytics should be disabled 1475 // disabled: false, 1476 1477 // Matomo configuration: 1478 // matomoEndpoint: 'https://your-matomo-endpoint/', 1479 // matomoSiteID: '42', 1480 1481 // The Amplitude APP Key: 1482 // amplitudeAPPKey: '<APP_KEY>', 1483 1484 // Obfuscates room name sent to analytics (amplitude, rtcstats) 1485 // Default value is false. 1486 // obfuscateRoomName: false, 1487 1488 // Configuration for the rtcstats server: 1489 // By enabling rtcstats server every time a conference is joined the rtcstats 1490 // module connects to the provided rtcstatsEndpoint and sends statistics regarding 1491 // PeerConnection states along with getStats metrics polled at the specified 1492 // interval. 1493 // rtcstatsEnabled: false, 1494 // rtcstatsStoreLogs: false, 1495 1496 // In order to enable rtcstats one needs to provide a endpoint url. 1497 // rtcstatsEndpoint: wss://rtcstats-server-pilot.jitsi.net/, 1498 1499 // The interval at which rtcstats will poll getStats, defaults to 10000ms. 1500 // If the value is set to 0 getStats won't be polled and the rtcstats client 1501 // will only send data related to RTCPeerConnection events. 1502 // rtcstatsPollInterval: 10000, 1503 1504 // This determines if rtcstats sends the SDP to the rtcstats server or replaces 1505 // all SDPs with an empty string instead. 1506 // rtcstatsSendSdp: false, 1507
1508 // Array of script URLs to load as lib-jitsi-meet "analytics handlers". 1509 // scriptURLs: [ 1510 // "https://example.com/my-custom-analytics.js", 1511 // ], 1512 1513 // By enabling watchRTCEnabled option you would want to use watchRTC feature 1514 // This would also require to configure watchRTCConfigParams. 1515 // Please remember to keep rtcstatsEnabled disabled for watchRTC to work. 1516 // watchRTCEnabled: false, 1517 }, 1518 1519 // Logs that should go be passed through the 'log' event if a handler is defined for it 1520 // apiLogLevels: ['warn', 'log', 'error', 'info', 'debug'], 1521 1522 // Information about the jitsi-meet instance we are connecting to, including 1523 // the user region as seen by the server. 1524 // deploymentInfo: { 1525 // shard: "shard1", 1526 // region: "europe", 1527 // userRegion: "asia", 1528 // }, 1529 1530 // Array<string> of disabled sounds. 1531 // Possible values: 1532 // - 'ASKED_TO_UNMUTE_SOUND' 1533 // - 'E2EE_OFF_SOUND' 1534 // - 'E2EE_ON_SOUND' 1535 // - 'INCOMING_MSG_SOUND' 1536 // - 'KNOCKING_PARTICIPANT_SOUND' 1537 // - 'LIVE_STREAMING_OFF_SOUND' 1538 // - 'LIVE_STREAMING_ON_SOUND' 1539 // - 'NO_AUDIO_SIGNAL_SOUND' 1540 // - 'NOISY_AUDIO_INPUT_SOUND' 1541 // - 'OUTGOING_CALL_EXPIRED_SOUND' 1542 // - 'OUTGOING_CALL_REJECTED_SOUND' 1543 // - 'OUTGOING_CALL_RINGING_SOUND' 1544 // - 'OUTGOING_CALL_START_SOUND' 1545 // - 'PARTICIPANT_JOINED_SOUND' 1546 // - 'PARTICIPANT_LEFT_SOUND' 1547 // - 'RAISE_HAND_SOUND' 1548 // - 'REACTION_SOUND' 1549 // - 'RECORDING_OFF_SOUND' 1550 // - 'RECORDING_ON_SOUND' 1551 // - 'TALK_WHILE_MUTED_SOUND' 1552 // disabledSounds: [], 1553 1554 // DEPRECATED! Use `disabledSounds` instead. 1555 // Decides whether the start/stop recording audio notifications should play on record. 1556 // disableRecordAudioNotification: false, 1557 1558 // DEPRECATED! Use `disabledSounds` instead. 1559 // Disables the sounds that play when other participants join or leave the 1560 // conference (if set to true, these sounds will not be played). 1561 // disableJoinLeaveSounds: false, 1562 1563 // DEPRECATED! Use `disabledSounds` instead. 1564 // Disables the sounds that play when a chat message is received. 1565 // disableIncomingMessageSound: false, 1566 1567 // Information for the chrome extension banner 1568 // chromeExtensionBanner: { 1569 // // The chrome extension to be installed address 1570 // url: 'https://chrome.google.com/webstore/detail/jitsi-meetings/kglhbbefdnlheedjiejgomgmfplipfeb', 1571 // edgeUrl: 'https://microsoftedge.microsoft.com/addons/detail/jitsi-meetings/eeecajlpbgjppibfledfihobcabccihn', 1572 1573 // // Extensions info which allows checking if they are installed or not 1574 // chromeExtensionsInfo: [ 1575 // { 1576 // id: 'kglhbbefdnlheedjiejgomgmfplipfeb', 1577 // path: 'jitsi-logo-48x48.png', 1578 // }, 1579 // // Edge extension info 1580 // { 1581 // id: 'eeecajlpbgjppibfledfihobcabccihn', 1582 // path: 'jitsi-logo-48x48.png', 1583 // }, 1584 // ] 1585 // }, 1586 1587 // e2ee: { 1588 // labels: { 1589 // description: '', 1590 // label: '', 1591 // tooltip: '', 1592 // warning: '', 1593 // }, 1594 // externallyManagedKey: false, 1595 // disabled: false, 1596 // }, 1597 1598 // Options related to end-to-end (participant to participant) ping. 1599 // e2eping: { 1600 // // Whether ene-to-end pings should be enabled. 1601 // enabled: false, 1602 // 1603 // // The number of responses to wait for. 1604 // numRequests: 5, 1605 // 1606 // // The max conference size in which e2e pings will be sent. 1607 // maxConferenceSize: 200, 1608 // 1609 // // The maximum number of e2e ping messages per second for the whole conference to aim for. 1610 // // This is used to control the pacing of messages in order to reduce the load on the backend. 1611 // maxMessagesPerSecond: 250, 1612 // }, 1613 1614 // If set, will attempt to use the provided video input device label when 1615 // triggering a screenshare, instead of proceeding through the normal flow 1616 // for obtaining a desktop stream. 1617 // NOTE: This option is experimental and is currently intended for internal 1618 // use only. 1619 // _desktopSharingSourceDevice: 'sample-id-or-label', 1620 1621 // DEPRECATED! Use deeplinking.disabled instead. 1622 // If true, any checks to handoff to another application will be prevented 1623 // and instead the app will continue to display in the current browser. 1624 // disableDeepLinking: false, 1625 1626 // The deeplinking config. 1627 // deeplinking: { 1628 // 1629 // // The desktop deeplinking config, disabled by default. 1630 // desktop: { 1631 // appName: 'Jitsi Meet', 1632 // appScheme: 'jitsi-meet, 1633 // download: { 1634 // linux: 1635 // 'https://github.com/jitsi/jitsi-meet-electron/releases/latest/download/jitsi-meet-x86_64.AppImage', 1636 // macos: 'https://github.com/jitsi/jitsi-meet-electron/releases/latest/download/jitsi-meet.dmg', 1637 // windows: 'https://github.com/jitsi/jitsi-meet-electron/releases/latest/download/jitsi-meet.exe' 1638 // }, 1639 // enabled: false 1640 // }, 1641 // // If true, any checks to handoff to another application will be prevented 1642 // // and instead the app will continue to display in the current browser. 1643 // disabled: false, 1644 1645 // // whether to hide the logo on the deep linking pages. 1646 // hideLogo: false, 1647 1648 // // The ios deeplinking config. 1649 // ios: { 1650 // appName: 'Jitsi Meet', 1651 // // Specify mobile app scheme for opening the app from the mobile browser. 1652 // appScheme: 'org.jitsi.meet', 1653 // // Custom URL for downloading ios mobile app. 1654 // downloadLink: 'https://itunes.apple.com/us/app/jitsi-meet/id1165103905', 1655 // }, 1656 1657 // // The android deeplinking config. 1658 // android: { 1659 // appName: 'Jitsi Meet', 1660 // // Specify mobile app scheme for opening the app from the mobile browser. 1661 // appScheme: 'org.jitsi.meet', 1662 // // Custom URL for downloading android mobile app. 1663 // downloadLink: 'https://play.google.com/store/apps/details?id=org.jitsi.meet', 1664 // // Android app package name. 1665 // appPackage: 'org.jitsi.meet', 1666 // fDroidUrl: 'https://f-droid.org/en/packages/org.jitsi.meet/', 1667 // } 1668 // }, 1669 1670 // // The terms, privacy and help centre URL's. 1671 // legalUrls: { 1672 // helpCentre: 'https://web-cdn.jitsi.net/faq/meet-faq.html', 1673 // privacy: 'https://jitsi.org/meet/privacy', 1674 // terms: 'https://jitsi.org/meet/terms' 1675 // }, 1676 1677 // A property to disable the right click context menu for localVideo 1678 // the menu has option to flip the locally seen video for local presentations 1679 // disableLocalVideoFlip: false, 1680 1681 // A property used to unset the default flip state of the local video. 1682 // When it is set to 'true', the local(self) video will not be mirrored anymore. 1683 // doNotFlipLocalVideo: false, 1684 1685 // Mainly privacy related settings 1686 1687 // Disables all invite functions from the app (share, invite, dial out...etc) 1688 // disableInviteFunctions: true, 1689 1690 // Disables storing the room name to the recents list. When in an iframe this is ignored and 1691 // the room is never stored in the recents list. 1692 // doNotStoreRoom: true, 1693 1694 // Deployment specific URLs.
1695 // deploymentUrls: { 1696 // // If specified a 'Help' button will be displayed in the overflow menu with a link to the specified URL for 1697 // // user documentation. 1698 // userDocumentationURL: 'https://docs.example.com/video-meetings.html', 1699 // // If specified a 'Download our apps' button will be displayed in the overflow menu with a link 1700 // // to the specified URL for an app download page. 1701 // downloadAppsUrl: 'https://docs.example.com/our-apps.html', 1702 // }, 1703 1704 // Options related to the remote participant menu. 1705 // remoteVideoMenu: { 1706 // // Whether the remote video context menu to be rendered or not. 1707 // disabled: true, 1708 // // If set to true the 'Switch to visitor' button will be disabled. 1709 // disableDemote: true, 1710 // // If set to true the 'Kick out' button will be disabled. 1711 // disableKick: true, 1712 // // If set to true the 'Grant moderator' button will be disabled. 1713 // disableGrantModerator: true, 1714 // // If set to 'all' the 'Private chat' button will be disabled for all participants. 1715 // // If set to 'allow-moderator-chat' the 'Private chat' button will be available for chats with moderators. 1716 // disablePrivateChat: 'all' | 'allow-moderator-chat', 1717 // }, 1718 1719 1720 // If set to true all muting operations of remote participants will be disabled. 1721 // disableRemoteMute: true, 1722 1723 /** 1724 External API url used to receive branding specific information. 1725 If there is no url set or there are missing fields, the defaults are applied. 1726 The config file should be in JSON. 1727 None of the fields are mandatory and the response must have the shape: 1728 { 1729 // Whether participant can only send group chat message if `send-groupchat` feature is enabled in jwt. 1730 groupChatRequiresPermission: false, 1731 // Whether participant can only create polls if `create-polls` feature is enabled in jwt. 1732 pollCreationRequiresPermission: false, 1733 // The domain url to apply (will replace the domain in the sharing conference link/embed section) 1734 inviteDomain: 'example-company.org', 1735 // The hex value for the colour used as background 1736 backgroundColor: '#fff', 1737 // The url for the image used as background 1738 backgroundImageUrl: 'https://example.com/background-img.png', 1739 // The anchor url used when clicking the logo image 1740 logoClickUrl: 'https://example-company.org', 1741 // The url used for the image used as logo 1742 logoImageUrl: 'https://example.com/logo-img.png', 1743 // Endpoint that enables support for salesforce integration with in-meeting resource linking 1744 // This is required for: 1745 // listing the most recent records - salesforceUrl/records/recents 1746 // searching records - salesforceUrl/records?text=${text} 1747 // retrieving record details - salesforceUrl/records/${id}?type=${type} 1748 // and linking the meeting - salesforceUrl/sessions/${sessionId}/records/${id} 1749 // salesforceUrl: 'https://api.example.com/', 1750 // Overwrite for pool of background images for avatars 1751 avatarBackgrounds: ['url(https://example.com/avatar-background-1.png)', '#FFF'], 1752 // The lobby/prejoin screen background
1753 premeetingBackground: 'url(https://example.com/premeeting-background.png)', 1754 // A list of images that can be used as video backgrounds. 1755 // When this field is present, the default images will be replaced with those provided. 1756 virtualBackgrounds: ['https://example.com/img.jpg'], 1757 // Object containing customized icons that should replace the default ones. 1758 // The keys need to be the exact same icon names used in here: 1759 // https://github.com/jitsi/jitsi-meet/blob/master/react/features/base/icons/svg/index.ts 1760 // To avoid having the icons trimmed or displayed in an unexpected way, please provide svg 1761 // files containing svg xml icons in the size that the default icons come in. 1762 customIcons: { 1763 IconArrowUp: 'https://example.com/arrow-up.svg', 1764 IconDownload: 'https://example.com/download.svg', 1765 IconRemoteControlStart: 'https://example.com/remote-start.svg', 1766 }, 1767 // Object containing a theme's properties. It also supports partial overwrites of the main theme. 1768 // For a list of all possible theme tokens and their current defaults, please check: 1769 // https://github.com/jitsi/jitsi-meet/tree/master/resources/custom-theme/custom-theme.json 1770 // For a short explanations on each of the tokens, please check: 1771 // https://github.com/jitsi/jitsi-meet/blob/master/react/features/base/ui/Tokens.ts 1772 // IMPORTANT!: This is work in progress so many of the various tokens are not yet applied in code 1773 // or they are partially applied. 1774 customTheme: { 1775 palette: { 1776 ui01: "orange !important", 1777 ui02: "maroon", 1778 surface02: 'darkgreen', 1779 ui03: "violet", 1780 ui04: "magenta", 1781 ui05: "blueviolet", 1782 action01: 'green', 1783 action01Hover: 'lightgreen', 1784 disabled01: 'beige', 1785 success02: 'cadetblue', 1786 action02Hover: 'aliceblue', 1787 }, 1788 typography: { 1789 labelRegular: { 1790 fontSize: 25, 1791 lineHeight: 30, 1792 fontWeight: 500, 1793 } 1794 } 1795 } 1796 } 1797 */ 1798 // dynamicBrandingUrl: '', 1799 1800 // A list of allowed URL domains for shared video. 1801 // 1802 // NOTE: 1803 // '*' is allowed value and it will allow any URL to be used for shared video. We do not recommend using '*', 1804 // use it at your own risk! 1805 // sharedVideoAllowedURLDomains: [ ], 1806 1807 // Options related to the participants pane. 1808 // participantsPane: { 1809 // // Enables feature 1810 // enabled: true, 1811 // // Hides the moderator settings tab. 1812 // hideModeratorSettingsTab: false, 1813 // // Hides the more actions button. 1814 // hideMoreActionsButton: false, 1815 // // Hides the mute all button.
1816 // hideMuteAllButton: false, 1817 // }, 1818 1819 // Options related to the breakout rooms feature. 1820 // breakoutRooms: { 1821 // // Hides the add breakout room button. This replaces `hideAddRoomButton`. 1822 // hideAddRoomButton: false, 1823 // // Hides the auto assign participants button. 1824 // hideAutoAssignButton: false, 1825 // // Hides the join breakout room button. 1826 // hideJoinRoomButton: false, 1827 // }, 1828 1829 // When true, virtual background feature will be disabled. 1830 // disableVirtualBackground: false, 1831 1832 // When true the user cannot add more images to be used as virtual background. 1833 // Only the default ones from will be available. 1834 // disableAddingBackgroundImages: false, 1835 1836 // Sets the background transparency level. '0' is fully transparent, '1' is opaque. 1837 // backgroundAlpha: 1, 1838 1839 // The URL of the moderated rooms microservice, if available. If it 1840 // is present, a link to the service will be rendered on the welcome page, 1841 // otherwise the app doesn't render it. 1842 // moderatedRoomServiceUrl: 'https://moderated.bell.a4e.ar', 1843 1844 // If true, tile view will not be enabled automatically when the participants count threshold is reached. 1845 // disableTileView: true, 1846 1847 // If true, the tiles will be displayed contained within the available space rather than enlarged to cover it, 1848 // with a 16:9 aspect ratio (old behaviour). 1849 // disableTileEnlargement: true, 1850 1851 // Controls the visibility and behavior of the top header conference info labels. 1852 // If a label's id is not in any of the 2 arrays, it will not be visible at all on the header. 1853 // conferenceInfo: { 1854 // // those labels will not be hidden in tandem with the toolbox. 1855 // alwaysVisible: ['recording', 'raised-hands-count'], 1856 // // those labels will be auto-hidden in tandem with the toolbox buttons. 1857 // autoHide: [ 1858 // 'subject', 1859 // 'conference-timer', 1860 // 'participants-count', 1861 // 'e2ee', 1862 // 'video-quality', 1863 // 'insecure-room', 1864 // 'highlight-moment', 1865 // 'top-panel-toggle', 1866 // ] 1867 // }, 1868 1869 // Hides the conference subject 1870 // hideConferenceSubject: false, 1871 1872 // Hides the conference timer. 1873 // hideConferenceTimer: false, 1874 1875 // Hides the recording label 1876 // hideRecordingLabel: false, 1877 1878 // Hides the participants stats 1879 // hideParticipantsStats: true, 1880 1881 // Sets the conference subject 1882 // subject: 'Conference Subject', 1883 1884 // Sets the conference local subject 1885 // localSubject: 'Conference Local Subject', 1886 1887 // This property is related to the use case when jitsi-meet is used via the IFrame API. When the property is true 1888 // jitsi-meet will use the local storage of the host page instead of its own. This option is useful if the browser 1889 // is not persisting the local storage inside the iframe. 1890 // useHostPageLocalStorage: true, 1891 1892 // Etherpad ("shared document") integration. 1893 // 1894 // If set, add a "Open shared document" link to the bottom right menu that 1895 // will open an etherpad document. 1896 // etherpad_base: 'https://your-etherpad-installati.on/p/', 1897 1898 // To enable information about dial-in access to meetings you need to provide 1899 // dialInNumbersUrl and dialInConfCodeUrl. 1900 // dialInNumbersUrl returns a json array of numbers that can be used for dial-in. 1901 // {"countryCode":"US","tollFree":false,"formattedNumber":"+1 123-456-7890"} 1902 // dialInConfCodeUrl is the conference mapper converting a meeting id to a PIN used for dial-in 1903 // or the other way around (more info in resources/cloud-api.swagger) 1904 1905 // You can use external service for authentication that will redirect back passing a jwt token 1906 // You can use tokenAuthUrl config to point to a URL of such service. 1907 // The URL for the service supports few params which will be filled in by the code. 1908 // tokenAuthUrl: 1909 // 'https://myservice.com/auth/{room}?code_challenge_method=S256&code_challenge={code_challenge}&state={state}'
1910 // Supported parameters in tokenAuthUrl: 1911 // {room} - will be replaced with the room name 1912 // {code_challenge} - (A web only). A oauth 2.0 code challenge that will be sent to the service. See: 1913 // https://datatracker.ietf.org/doc/html/rfc7636. The code verifier will be saved in the sessionStorage 1914 // under key: 'code_verifier'. 1915 // {state} - A json with the current state before redirecting. Keys that are included in the state: 1916 // - room (The current room name as shown in the address bar) 1917 // - roomSafe (the backend safe room name to use (lowercase), that is passed to the backend) 1918 // - tenant (The tenant if any) 1919 // - config.xxx (all config overrides) 1920 // - interfaceConfig.xxx (all interfaceConfig overrides) 1921 // - ios=true (in case ios mobile app is used) 1922 // - android=true (in case android mobile app is used) 1923 // - electron=true (when web is loaded in electron app) 1924 // If there is a logout service you can specify its URL with: 1925 // tokenLogoutUrl: 'https://myservice.com/logout' 1926 // You can enable tokenAuthUrlAutoRedirect which will detect that you have logged in successfully before 1927 // and will automatically redirect to the token service to get the token for the meeting. 1928 // tokenAuthUrlAutoRedirect: false 1929 // An option to respect the context.tenant jwt field compared to the current tenant from the url 1930 // tokenRespectTenant: false, 1931 // An option to get for user info (name, picture, email) in the token outside the user context. 1932 // Can be used with Firebase tokens. 1933 // tokenGetUserInfoOutOfContext: false, 1934 1935 // You can put an array of values to target different entity types in the invite dialog. 1936 // Valid values are "phone", "room", "sip", "user", "videosipgw" and "email" 1937 // peopleSearchQueryTypes: ["user", "email"], 1938 // Directory endpoint which is called for invite dialog autocomplete 1939 // peopleSearchUrl: "https://myservice.com/api/people", 1940 // Endpoint which is called to send invitation requests 1941 // inviteServiceUrl: "https://myservice.com/api/invite", 1942 1943 // For external entities (e. g. email), the localStorage key holding the token value for directory authentication 1944 // peopleSearchTokenLocation: "mytoken", 1945 1946 1947 // Options related to visitors. 1948 // visitors: { 1949 // // Starts audio/video when the participant is promoted from visitor. 1950 // enableMediaOnPromote: { 1951 // audio: true, 1952 // video: true 1953 // }, 1954 // }, 1955 // The default type of desktop sharing sources that will be used in the electron app. 1956 // desktopSharingSources: ['screen', 'window'], 1957 1958 // Disables the echo cancelation for local audio tracks. 1959 // disableAEC: true, 1960 1961 // Disables the auto gain control for local audio tracks. 1962 // disableAGC: true, 1963 1964 // Disables the audio processing (echo cancelation, auto gain control and noise suppression) for local audio tracks. 1965 // disableAP: true, 1966 1967 // Disables the anoise suppression for local audio tracks. 1968 // disableNS: true, 1969 1970 // Replaces the display name with the JID of the participants. 1971 // displayJids: true, 1972 1973 // Enables disables talk while muted detection. 1974 // enableTalkWhileMuted: true, 1975 1976 // Sets the peer connection ICE transport policy to "relay". 1977 // forceTurnRelay: true, 1978 1979 // List of undocumented settings used in jitsi-meet 1980 /** 1981 _immediateReloadThreshold 1982 deploymentInfo 1983 dialOutAuthUrl 1984 dialOutCodesUrl 1985 dialOutRegionUrl 1986 disableRemoteControl 1987 iAmRecorder 1988 iAmSipGateway 1989 microsoftApiApplicationClientID 1990 */ 1991 1992 /** 1993 * This property can be used to alter the generated meeting invite links (in combination with a branding domain 1994 * which is retrieved internally by jitsi meet) (e.g. https://meet.jit.si/someMeeting 1995 * can become https://brandedDomain/roomAlias) 1996 */ 1997 // brandingRoomAlias: null, 1998 1999 // List of undocumented settings used in lib-jitsi-meet 2000 /** 2001 _peerConnStatusOutOfLastNTimeout 2002 _peerConnStatusRtcMuteTimeout 2003 avgRtpStatsN 2004 desktopSharingSources 2005 disableLocalStats 2006 hiddenDomain 2007 hiddenFromRecorderFeatureEnabled 2008 ignoreStartMuted 2009 websocketKeepAlive 2010 websocketKeepAliveUrl 2011 */ 2012 2013 /** 2014 * Default interval (milliseconds) for triggering mouseMoved iframe API event 2015 */ 2016 mouseMoveCallbackInterval: 1000, 2017 2018 /** 2019 Use this array to configure which notifications will be shown to the user 2020 The items correspond to the title or description key of that notification
2021 Some of these notifications also depend on some other internal logic to be displayed or not, 2022 so adding them here will not ensure they will always be displayed 2023 2024 A falsy value for this prop will result in having all notifications enabled (e.g null, undefined, false) 2025 */ 2026 // notifications: [ 2027 // 'connection.CONNFAIL', // shown when the connection fails, 2028 // 'dialog.cameraConstraintFailedError', // shown when the camera failed 2029 // 'dialog.cameraNotSendingData', // shown when there's no feed from user's camera 2030 // 'dialog.kickTitle', // shown when user has been kicked 2031 // 'dialog.liveStreaming', // livestreaming notifications (pending, on, off, limits) 2032 // 'dialog.lockTitle', // shown when setting conference password fails 2033 // 'dialog.maxUsersLimitReached', // shown when maximmum users limit has been reached 2034 // 'dialog.micNotSendingData', // shown when user's mic is not sending any audio 2035 // 'dialog.passwordNotSupportedTitle', // shown when setting conference password fails due to password format 2036 // 'dialog.recording', // recording notifications (pending, on, off, limits) 2037 // 'dialog.remoteControlTitle', // remote control notifications (allowed, denied, start, stop, error) 2038 // 'dialog.reservationError', 2039 // 'dialog.screenSharingFailedTitle', // shown when the screen sharing failed 2040 // 'dialog.serviceUnavailable', // shown when server is not reachable 2041 // 'dialog.sessTerminated', // shown when there is a failed conference session 2042 // 'dialog.sessionRestarted', // show when a client reload is initiated because of bridge migration 2043 // 'dialog.tokenAuthFailed', // show when an invalid jwt is used 2044 // 'dialog.tokenAuthFailedWithReasons', // show when an invalid jwt is used with the reason behind the error 2045 // 'dialog.transcribing', // transcribing notifications (pending, off) 2046 // 'dialOut.statusMessage', // shown when dial out status is updated. 2047 // 'liveStreaming.busy', // shown when livestreaming service is busy 2048 // 'liveStreaming.failedToStart', // shown when livestreaming fails to start 2049 // 'liveStreaming.unavailableTitle', // shown when livestreaming service is not reachable 2050 // 'lobby.joinRejectedMessage', // shown when while in a lobby, user's request to join is rejected 2051 // 'lobby.notificationTitle', // shown when lobby is toggled and when join requests are allowed / denied 2052 // 'notify.audioUnmuteBlockedTitle', // shown when mic unmute blocked 2053 // 'notify.chatMessages', // shown when receiving chat messages while the chat window is closed 2054 // 'notify.connectedOneMember', // show when a participant joined 2055 // 'notify.connectedThreePlusMembers', // show when more than 2 participants joined simultaneously 2056 // 'notify.connectedTwoMembers', // show when two participants joined simultaneously 2057 // 'notify.dataChannelClosed', // shown when the bridge channel has been disconnected 2058 // 'notify.hostAskedUnmute', // shown to participant when host asks them to unmute 2059 // 'notify.invitedOneMember', // shown when 1 participant has been invited 2060 // 'notify.invitedThreePlusMembers', // shown when 3+ participants have been invited 2061 // 'notify.invitedTwoMembers', // shown when 2 participants have been invited 2062 // 'notify.kickParticipant', // shown when a participant is kicked 2063 // 'notify.leftOneMember', // show when a participant left 2064 // 'notify.leftThreePlusMembers', // show when more than 2 participants left simultaneously 2065 // 'notify.leftTwoMembers', // show when two participants left simultaneously 2066 // 'notify.linkToSalesforce', // shown when joining a meeting with salesforce integration 2067 // 'notify.localRecordingStarted', // shown when the local recording has been started 2068 // 'notify.localRecordingStopped', // shown when the local recording has been stopped 2069 // 'notify.moderationInEffectCSTitle', // shown when user attempts to share content during AV moderation 2070 // 'notify.moderationInEffectTitle', // shown when user attempts to unmute audio during AV moderation 2071 // 'notify.moderationInEffectVideoTitle', // shown when user attempts to enable video during AV moderation 2072 // 'notify.moderator', // shown when user gets moderator privilege
2073 // 'notify.mutedRemotelyTitle', // shown when user is muted by a remote party 2074 // 'notify.mutedTitle', // shown when user has been muted upon joining, 2075 // 'notify.newDeviceAudioTitle', // prompts the user to use a newly detected audio device 2076 // 'notify.newDeviceCameraTitle', // prompts the user to use a newly detected camera 2077 // 'notify.noiseSuppressionFailedTitle', // shown when failed to start noise suppression 2078 // 'notify.participantWantsToJoin', // shown when lobby is enabled and participant requests to join meeting 2079 // 'notify.participantsWantToJoin', // shown when lobby is enabled and participants request to join meeting 2080 // 'notify.passwordRemovedRemotely', // shown when a password has been removed remotely 2081 // 'notify.passwordSetRemotely', // shown when a password has been set remotely 2082 // 'notify.raisedHand', // shown when a participant used raise hand, 2083 // 'notify.screenShareNoAudio', // shown when the audio could not be shared for the selected screen 2084 // 'notify.screenSharingAudioOnlyTitle', // shown when the best performance has been affected by screen sharing 2085 // 'notify.selfViewTitle', // show "You can always un-hide the self-view from settings" 2086 // 'notify.startSilentTitle', // shown when user joined with no audio 2087 // 'notify.suboptimalExperienceTitle', // show the browser warning 2088 // 'notify.unmute', // shown to moderator when user raises hand during AV moderation 2089 // 'notify.videoMutedRemotelyTitle', // shown when user's video is muted by a remote party, 2090 // 'notify.videoUnmuteBlockedTitle', // shown when camera unmute and desktop sharing are blocked 2091 // 'prejoin.errorDialOut', 2092 // 'prejoin.errorDialOutDisconnected', 2093 // 'prejoin.errorDialOutFailed', 2094 // 'prejoin.errorDialOutStatus', 2095 // 'prejoin.errorStatusCode', 2096 // 'prejoin.errorValidation', 2097 // 'recording.busy', // shown when recording service is busy 2098 // 'recording.failedToStart', // shown when recording fails to start 2099 // 'recording.unavailableTitle', // shown when recording service is not reachable 2100 // 'toolbar.noAudioSignalTitle', // shown when a broken mic is detected 2101 // 'toolbar.noisyAudioInputTitle', // shown when noise is detected for the current microphone 2102 // 'toolbar.talkWhileMutedPopup', // shown when user tries to speak while muted 2103 // 'transcribing.failed', // shown when transcribing fails 2104 // ], 2105 2106 // List of notifications to be disabled. Works in tandem with the above setting. 2107 // disabledNotifications: [], 2108 2109 // Prevent the filmstrip from autohiding when screen width is under a certain threshold 2110 disableFilmstripAutohiding: true, 2111 2112 // filmstrip: { 2113 // // Disable the vertical/horizontal filmstrip. 2114 // disabled: false, 2115 // // Disables user resizable filmstrip. Also, allows configuration of the filmstrip 2116 // // (width, tiles aspect ratios) through the interfaceConfig options. 2117 // disableResizable: false, 2118 2119 // // Disables the stage filmstrip 2120 // // (displaying multiple participants on stage besides the vertical filmstrip) 2121 // disableStageFilmstrip: false, 2122 2123 // // Default number of participants that can be displayed on stage. 2124 // // The user can change this in settings. Number must be between 1 and 6. 2125 // stageFilmstripParticipants: 1, 2126 2127 // // Disables the top panel (only shown when a user is sharing their screen). 2128 // disableTopPanel: false, 2129 2130 // // The minimum number of participants that must be in the call for 2131 // // the top panel layout to be used. 2132 // minParticipantCountForTopPanel: 50, 2133 2134 // // The width of the filmstrip on joining meeting. Can be resized afterwards. 2135 // initialWidth: 400, 2136 2137 // // Whether the draggable resize bar of the filmstrip is always visible. Setting this to true will make 2138 // // the filmstrip always visible in case `disableResizable` is false. 2139 // alwaysShowResizeBar: true, 2140 // }, 2141 2142 // Tile view related config options. 2143 // tileView: { 2144 // // Whether tileview should be disabled. 2145 // disabled: false, 2146 // // The optimal number of tiles that are going to be shown in tile view. Depending on the screen size it may 2147 // // not be possible to show the exact number of participants specified here. 2148 // numberOfVisibleTiles: 25, 2149 // }, 2150 2151 // Specifies whether the chat emoticons are disabled or not 2152 // disableChatSmileys: false, 2153 2154 // Settings for the GIPHY integration. 2155 // giphy: { 2156 // // Whether the feature is enabled or not. 2157 // enabled: false, 2158 // // SDK API Key from Giphy. 2159 // sdkKey: '', 2160 // // Display mode can be one of: 2161 // // - tile: show the GIF on the tile of the participant that sent it. 2162 // // - chat: show the GIF as a message in chat 2163 // // - all: all of the above. This is the default option 2164 // displayMode: 'all', 2165 // // How long the GIF should be displayed on the tile (in milliseconds). 2166 // tileTime: 5000, 2167 // // Limit results by rating: g, pg, pg-13, r. Default value: g. 2168 // rating: 'pg', 2169 // }, 2170 2171 // Logging 2172 // logging: { 2173 // // Default log level for the app and lib-jitsi-meet. 2174 // defaultLogLevel: 'trace', 2175 // // Option to disable LogCollector. 2176 // //disableLogCollector: true, 2177 // // Individual loggers are customizable. 2178 // loggers: { 2179 // // The following are too verbose in their logging with the default level. 2180 // 'modules/RTC/TraceablePeerConnection.js': 'info', 2181 // 'modules/xmpp/strophe.util.js': 'log', 2182 // }, 2183 // }, 2184 2185 // Application logo url 2186 // defaultLogoUrl: 'images/watermark.svg', 2187 2188 // Settings for the Excalidraw whiteboard integration. 2189 whiteboard: { 2190 // Whether the feature is enabled or not. 2191 enabled: true, 2192 // // The server used to support whiteboard collaboration. 2193 // // https://github.com/jitsi/excalidraw-backend 2194 collabServerBaseUrl: 'https://bell.a4e.ar/excalidraw-backend', 2195 // // The user access limit to the whiteboard, introduced as a means 2196 // // to control the performance. 2197 userLimit: 25, 2198 // // The url for more info about the whiteboard and its usage limitations. 2199 // limitUrl: 'https://example.com/blog/whiteboard-limits', 2200 }, 2201 2202 // The watchRTC initialize config params as described : 2203 // https://testrtc.com/docs/installing-the-watchrtc-javascript-sdk/#h-set-up-the-sdk 2204 // https://www.npmjs.com/package/@testrtc/watchrtc-sdk 2205 // watchRTCConfigParams: { 2206 // /** Watchrtc api key */ 2207 // rtcApiKey: string; 2208 // /** Identifier for the session */ 2209 // rtcRoomId?: string; 2210 // /** Identifier for the current peer */ 2211 // rtcPeerId?: string; 2212 // /** 2213 // * ["tag1", "tag2", "tag3"] 2214 // * @deprecated use 'keys' instead 2215 // */ 2216 // rtcTags?: string[]; 2217 // /** { "key1": "value1", "key2": "value2"} */ 2218 // keys?: any; 2219 // /** Enables additional logging */ 2220 // debug?: boolean; 2221 // rtcToken?: string; 2222 // /** 2223 // * @deprecated No longer needed. Use "proxyUrl" instead. 2224 // */ 2225 // wsUrl?: string; 2226 // proxyUrl?: string; 2227 // console?: { 2228 // level: string; 2229 // override: boolean; 2230 // allowBrowserLogCollection?: boolean; 2231 // collectionInterval?: number;
2232 // logGetStats?: boolean; 2233 // }, 2234 2235 // Hide login button on auth dialog, you may want to enable this if you are using JWT tokens to authenticate users 2236 // hideLoginButton: true, 2237 2238 // If true remove the tint foreground on focused user camera in filmstrip 2239 // disableCameraTintForeground: false, 2240 2241 // File sharign service. 2242 // fileSharing: { 2243 // // The URL of the file sharing service API. See resources/file-sharing.yaml for more details. 2244 // apiUrl: 'https://example.com', 2245 // // Whether the file sharing service is enabled or not. 2246 // enabled: true, 2247 // // Maximum file size limit (-1 value disables any file size limit check) 2248 // maxFileSize: 50, 2249 // }, 2250 aiAssistant: { 2251 enabled: true, 2252 url: "/static/ai-assistant.html", 2253 defaultWidth: 400, 2254 enableTranscriptForwarding: true 2255 }, 2256 deeplinking: { 2257 desktop: { 2258 enabled: false 2259 }, 2260 disabled: true, 2261 hideLogo: false, 2262 ios: { 2263 appName: 'Rita Meet', 2264 appScheme: 'com.ritameet.app', 2265 downloadLink: '', 2266 }, 2267 android: { 2268 appName: 'Rita Meet', 2269 appScheme: 'com.ritameet.app', 2270 downloadLink: '', 2271 appPackage: 'com.ritameet.app', 2272 } 2273 }, 2274 defaultRemoteDisplayName: 'Guest', 2275 tokenAuthUrl: "https://ritameet.com/auth/{room}?state={state}", 2276 telegramProxyUrl: "tg://proxy?server=95.133.243.250&port=443&secret=ee1729d97cfdd08ee1219c69448ab13aaa73756e372d31362e757365726170692e636f6d", 2277}; 2278 2279// Set the default values for JaaS customers 2280if (enableJaaS) { 2281 config.dialInNumbersUrl = 'https://conference-mapper.jitsi.net/v1/access/dids'; 2282 config.dialInConfCodeUrl = 'https://conference-mapper.jitsi.net/v1/access'; 2283 config.roomPasswordNumberOfDigits = 10; // skip re-adding it (do not remove comment) 2284} 2285</script>
2285<!-- adapt to your needs, i.e. set hosts and bosh path --> 2286
2286<script>/* eslint-disable no-unused-vars, no-var, max-len */ 2287/* eslint sort-keys: ["error", "asc", {"caseSensitive": false}] */ 2288 2289/** 2290 * !!!IMPORTANT!!! 2291 * 2292 * This file is considered deprecated. All options will eventually be moved to 2293 * config.js, and no new options should be added here. 2294 */ 2295 2296var interfaceConfig = { 2297 APP_NAME: 'Rita Meet', 2298 AUDIO_LEVEL_PRIMARY_COLOR: 'rgba(255,255,255,0.4)', 2299 AUDIO_LEVEL_SECONDARY_COLOR: 'rgba(255,255,255,0.2)', 2300 2301 /** 2302 * A UX mode where the last screen share participant is automatically 2303 * pinned. Valid values are the string "remote-only" so remote participants 2304 * get pinned but not local, otherwise any truthy value for all participants, 2305 * and any falsy value to disable the feature. 2306 * 2307 * Note: this mode is experimental and subject to breakage. 2308 */ 2309 AUTO_PIN_LATEST_SCREEN_SHARE: 'remote-only', 2310 BRAND_WATERMARK_LINK: '', 2311 2312 CLOSE_PAGE_GUEST_HINT: false, // A html text to be shown to guests on the close page, false disables it 2313 2314 DEFAULT_BACKGROUND: '#040404', 2315 DEFAULT_WELCOME_PAGE_LOGO_URL: 'images/watermark.svg', 2316 2317 DISABLE_DOMINANT_SPEAKER_INDICATOR: false, 2318 2319 /** 2320 * If true, notifications regarding joining/leaving are no longer displayed. 2321 */ 2322 DISABLE_JOIN_LEAVE_NOTIFICATIONS: false, 2323 2324 /** 2325 * If true, presence status: busy, calling, connected etc. is not displayed. 2326 */ 2327 DISABLE_PRESENCE_STATUS: false, 2328 2329 /** 2330 * Whether the speech to text transcription subtitles panel is disabled. 2331 * If {@code undefined}, defaults to {@code false}. 2332 * 2333 * @type {boolean} 2334 */ 2335 DISABLE_TRANSCRIPTION_SUBTITLES: false, 2336 2337 /** 2338 * Whether or not the blurred video background for large video should be 2339 * displayed on browsers that can support it. 2340 */ 2341 DISABLE_VIDEO_BACKGROUND: false, 2342 2343 DISPLAY_WELCOME_FOOTER: true, 2344 DISPLAY_WELCOME_PAGE_ADDITIONAL_CARD: false, 2345 DISPLAY_WELCOME_PAGE_CONTENT: false, 2346 DISPLAY_WELCOME_PAGE_TOOLBAR_ADDITIONAL_CONTENT: false, 2347 2348 ENABLE_DIAL_OUT: true, 2349 2350 FILM_STRIP_MAX_HEIGHT: 120, 2351 2352 GENERATE_ROOMNAMES_ON_WELCOME_PAGE: true, 2353 2354 /** 2355 * Hide the invite prompt in the header when alone in the meeting. 2356 */ 2357 HIDE_INVITE_MORE_HEADER: false, 2358 2359 JITSI_WATERMARK_LINK: 'https://ritameet.com', 2360 2361 LANG_DETECTION: true, // Allow i18n to detect the system language 2362 LOCAL_THUMBNAIL_RATIO: 16 / 9, // 16:9 2363 2364 /** 2365 * Maximum coefficient of the ratio of the large video to the visible area 2366 * after the large video is scaled to fit the window. 2367 * 2368 * @type {number} 2369 */ 2370 MAXIMUM_ZOOMING_COEFFICIENT: 1.3, 2371 2372 /** 2373 * Whether the mobile app Jitsi Meet is to be promoted to participants 2374 * attempting to join a conference in a mobile Web browser. If 2375 * {@code undefined}, defaults to {@code true}. 2376 * 2377 * @type {boolean} 2378 */ 2379 MOBILE_APP_PROMO: true, 2380 2381 // Names of browsers which should show a warning stating the current browser 2382 // has a suboptimal experience. Browsers which are not listed as optimal or 2383 // unsupported are considered suboptimal. Valid values are: 2384 // chrome, chromium, electron, firefox , safari, webkit 2385 OPTIMAL_BROWSERS: [ 'chrome', 'chromium', 'firefox', 'electron', 'safari', 'webkit' ], 2386 2387 POLICY_LOGO: null, 2388 PROVIDER_NAME: 'Rita Meet', 2389 2390 /** 2391 * If true, will display recent list 2392 * 2393 * @type {boolean} 2394 */ 2395 RECENT_LIST_ENABLED: true, 2396 REMOTE_THUMBNAIL_RATIO: 1, // 1:1 2397 2398 SETTINGS_SECTIONS: [ 'devices', 'language', 'moderator', 'profile', 'calendar', 'sounds', 'more' ], 2399 2400 /** 2401 * Specify which sharing features should be displayed. If the value is not set 2402 * all sharing features will be shown. You can set [] to disable all. 2403 */ 2404 // SHARING_FEATURES: ['email', 'url', 'dial-in', 'embed'], 2405 2406 SHOW_BRAND_WATERMARK: false, 2407 2408 /** 2409 * Decides whether the chrome extension banner should be rendered on the landing page and during the meeting. 2410 * If this is set to false, the banner will not be rendered at all. If set to true, the check for extension(s) 2411 * being already installed is done before rendering. 2412 */ 2413 SHOW_CHROME_EXTENSION_BANNER: false, 2414 2415 SHOW_JITSI_WATERMARK: true, 2416 SHOW_POWERED_BY: false, 2417 SHOW_PROMOTIONAL_CLOSE_PAGE: false, 2418 2419 /* 2420 * If indicated some of the error dialogs may point to the support URL for 2421 * help. 2422 */ 2423 SUPPORT_URL: 'https://t.me/rita_meet', 2424 2425 // Browsers, in addition to those which do not fully support WebRTC, that 2426 // are not supported and should show the unsupported browser page. 2427 UNSUPPORTED_BROWSERS: [], 2428 2429 /** 2430 * Whether to show thumbnails in filmstrip as a column instead of as a row. 2431 */ 2432 VERTICAL_FILMSTRIP: true, 2433 2434 // Determines how the video would fit the screen. 'both' would fit the whole 2435 // screen, 'height' would fit the original video height to the height of the 2436 // screen, 'width' would fit the original video width to the width of the 2437 // screen respecting ratio, 'nocrop' would make the video as large as 2438 // possible and preserve aspect ratio without cropping. 2439 VIDEO_LAYOUT_FIT: 'both', 2440 2441 /** 2442 * If true, hides the video quality label indicating the resolution status 2443 * of the current large video. 2444 * 2445 * @type {boolean} 2446 */ 2447 VIDEO_QUALITY_LABEL_DISABLED: false, 2448 2449 /** 2450 * How many columns the tile view can expand to. The respected range is 2451 * between 1 and 5. 2452 */ 2453 // TILE_VIEW_MAX_COLUMNS: 5, 2454 2455 // List of undocumented settings 2456 /** 2457 INDICATOR_FONT_SIZES 2458 PHONE_NUMBER_REGEX 2459 */ 2460 2461 // -----------------DEPRECATED CONFIGS BELOW THIS LINE----------------------------- 2462 2463 /** 2464 * Specify URL for downloading ios mobile app. 2465 */ 2466 // MOBILE_DOWNLOAD_LINK_IOS: '', 2467 2468 MOBILE_DOWNLOAD_LINK_ANDROID: 'https://play.google.com/store/apps/details?id=com.ritameet.app', // eslint-disable-line sort-keys 2469 2470 APP_SCHEME: 'com.ritameet.app', // eslint-disable-line sort-keys 2471 2472 NATIVE_APP_NAME: 'Rita Meet', 2473 2474 // HIDE_DEEP_LINKING_LOGO: false, 2475 2476 ANDROID_APP_PACKAGE: 'com.ritameet.app', // eslint-disable-line sort-keys 2477 2478 // MOBILE_DOWNLOAD_LINK_F_DROID: '', 2479 2480 // Connection indicators ( 2481 // CONNECTION_INDICATOR_AUTO_HIDE_ENABLED, 2482 // CONNECTION_INDICATOR_AUTO_HIDE_TIMEOUT, 2483 // CONNECTION_INDICATOR_DISABLED) got moved to config.js. 2484 2485 // Please use disableModeratorIndicator from config.js
2486 // DISABLE_FOCUS_INDICATOR: false, 2487 2488 // Please use defaultLocalDisplayName from config.js 2489 // DEFAULT_LOCAL_DISPLAY_NAME: 'me', 2490 2491 // Please use defaultLogoUrl from config.js 2492 // DEFAULT_LOGO_URL: 'images/watermark.svg', 2493 2494 // Please use defaultRemoteDisplayName from config.js 2495 // DEFAULT_REMOTE_DISPLAY_NAME: 'Fellow Jitster', 2496 2497 // Moved to config.js as `toolbarConfig.initialTimeout`. 2498 // INITIAL_TOOLBAR_TIMEOUT: 20000, 2499 2500 // Please use `liveStreaming.helpLink` from config.js 2501 // Documentation reference for the live streaming feature. 2502 // LIVE_STREAMING_HELP_LINK: 'https://jitsi.org/live', 2503 2504 // Moved to config.js as `toolbarConfig.alwaysVisible`. 2505 // TOOLBAR_ALWAYS_VISIBLE: false, 2506 2507 // This config was moved to config.js as `toolbarButtons`. 2508 // TOOLBAR_BUTTONS: [], 2509 2510 // Moved to config.js as `toolbarConfig.timeout`. 2511 // TOOLBAR_TIMEOUT: 4000, 2512 2513 // Allow all above example options to include a trailing comma and 2514 // prevent fear when commenting out the last value. 2515 // eslint-disable-next-line sort-keys 2516 makeJsonParserHappy: 'even if last key had a trailing comma' 2517 2518 // No configuration value should follow this line. 2519}; 2520 2521/* eslint-enable no-unused-vars, no-var, max-len */ 2522</script>
2522 2523
2523<script src="libs/lib-jitsi-meet.min.js?v=8742"></script>
2523 2524
2524<script src="libs/app.bundle.min.js?v=8742"></script>
2524 2525 <title>Rita Meet</title> 2526<meta property="og:title" content="Rita Meet"/> 2527<meta property="og:image" content="images/watermark.svg"/> 2528<meta property="og:description" content="Join a video conference powered by Rita Meet"/> 2529<meta description="Join a video conference powered by Rita Meet"/> 2530<meta itemprop="name" content="Rita Meet"/> 2531<meta itemprop="description" content="Join a video conference powered by Rita Meet"/> 2532<meta itemprop="image" content="images/watermark.svg"/> 2533<link rel="icon" href="favicon.ico"> 2534 2535 <template id = "welcome-page-additional-content-template"></template> 2536 2537 <template id = "welcome-page-additional-card-template"></template> 2538 2539 <template id="settings-toolbar-additional-content-template"></template> 2540 2541 </head> 2542 <body> 2543 <noscript aria-hidden="true"> 2544 <div>JavaScript is disabled. </br>For this site to work you have to enable JavaScript.</div> 2545 </noscript> 2546 2547 <div id="react" role="main"></div> 2548 </body> 2549</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.