1<html itemscope itemtype="http://schema.org/Product" prefix="og: http://ogp.me/ns#" xmlns="http://www.w3.org/1999/html"> 2 <head> 3 4 <meta charset="utf-8"> 5 <meta http-equiv="content-type" content="text/html;charset=utf-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"> 7 <meta name="theme-color" content="#2A3A4B"> 8 <base href="/" /> 9 10 11 <link rel="apple-touch-icon" href="images/apple-touch-icon.png"> 12 <link rel="stylesheet" href="css/all.css?v=9365"> 13 14 <link rel="manifest" id="manifest-placeholder"> 15 16
16<script> 17 function contextRoot(pathname) { 18 const contextRootEndIndex = pathname.lastIndexOf('/'); 19 20 return ( 21 contextRootEndIndex === -1 22 ? '/' 23 : pathname.substring(0, contextRootEndIndex + 1) 24 ); 25 } 26 window.EXCALIDRAW_ASSET_PATH = 'libs/excalidraw/'; 27 // Dynamically generate the manifest location URL. It must be served from the document origin, and we may have 28 // the base pointing to the CDN. This way we can generate a full URL which will bypass the base. 29 document.querySelector('#manifest-placeholder').setAttribute('href', window.location.origin + contextRoot(window.location.pathname) + 'manifest.json'); 30 31 document.addEventListener('DOMContentLoaded', () => { 32 if (!JitsiMeetJS.app) { 33 return; 34 } 35 36 JitsiMeetJS.app.renderEntryPoint({ 37 Component: JitsiMeetJS.app.entryPoints.APP 38 }) 39 40 const isEmbedded = () => { 41 try { 42 return window.self !== window.top; 43 } catch (e) { 44 return true; 45 } 46 }; 47 48 const isElectron = navigator.userAgent.includes('Electron'); 49 const shouldRegisterWorker = !isElectron && !isEmbedded() && 'serviceWorker' in navigator; 50 51 if (shouldRegisterWorker) { 52 navigator.serviceWorker 53 .register(window.location.origin + contextRoot(window.location.pathname) + 'pwa-worker.js') 54 .then(reg => { 55 console.log('Service worker registered.', reg); 56 }) 57 .catch(err => { 58 console.log(err); 59 }); 60 } 61 }); 62 </script>
62 63
63<script> 64 // IE11 and earlier can be identified via their user agent and be 65 // redirected to a page that is known to have no newer js syntax. 66 if (window.navigator.userAgent.match(/(MSIE|Trident)/)) { 67 var roomName = encodeURIComponent(window.location.pathname); 68 window.location.pathname = 'static/recommendedBrowsers.html'; 69 } 70 71 window.indexLoadedTime = window.performance.now(); 72 console.log("(TIME) index.html loaded:\t", indexLoadedTime); 73 window.addEventListener('load', function() { 74 window.loadedEventTime = window.performance.now(); 75 console.log("(TIME) window loaded event:\t", loadedEventTime); 76 }); 77 78 // XXX the code below listeners for errors and displays an error message 79 // in the document body when any of the required files fails to load. 80 // The intention is to prevent from displaying broken page. 81 var criticalFiles = [ 82 "config.js", 83 "utils.js", 84 "do_external_connect.js", 85 "interface_config.js", 86 "lib-jitsi-meet.min.js", 87 "app.bundle.min.js", 88 "all.css?v=9365" 89 ]; 90 var loadErrHandler = function(e) { 91 var target = e.target; 92 // Error on
92<script> and <link>(CSS) 93 //
93<script> will have .src and <link> .href 94 var fileRef = (target.src ? target.src : target.href); 95 if (("SCRIPT" === target.tagName || "LINK" === target.tagName) 96 && criticalFiles.some( 97 function(file) { return fileRef.indexOf(file) !== -1 })) { 98 window.onload = function() { 99 // The whole complex part below implements page reloads with 100 // "exponential backoff". The retry attempt is passes as 101 // "rCounter" query parameter 102 var href = window.location.href; 103 104 var retryMatch = href.match(/.+(\?|&)rCounter=(\d+)/); 105 var retryCountStr = retryMatch ? retryMatch[2] : "0"; 106 var retryCount = Number.parseInt(retryCountStr); 107 108 if (retryMatch == null) { 109 var separator = href.indexOf("?") === -1 ? "?" : "&"; 110 var hashIdx = href.indexOf("#"); 111 112 if (hashIdx === -1) { 113 href += separator + "rCounter=1"; 114 } else { 115 var hashPart = href.substr(hashIdx); 116 117 href = href.substr(0, hashIdx) 118 + separator + "rCounter=1" + hashPart; 119 } 120 } else { 121 var separator = retryMatch[1]; 122 123 href = href.replace( 124 /(\?|&)rCounter=(\d+)/, 125 separator + "rCounter=" + (retryCount + 1)); 126 } 127 128 var delay = Math.pow(2, retryCount) * 2000; 129 if (isNaN(delay) || delay < 2000 || delay > 60000) 130 delay = 10000; 131 132 var showMoreText = "show more"; 133 var showLessText = "show less"; 134 135 document.body.innerHTML 136 = "<div style='" 137 + "position: absolute;top: 50%;left: 50%;" 138 + "text-align: center;" 139 + "font-size: medium;" 140 + "font-weight: 400;" 141 + "transform: translate(-50%, -50%)'>" 142 + "Uh oh! We couldn't fully download everything we needed :(" 143 + "<br/> " 144 + "We will try again shortly. In the mean time, check for problems with your Internet connection!" 145 + "<br/><br/> " 146 + "<div id='moreInfo' style='" 147 + "display: none;'>" + "Missing " + fileRef 148 + "<br/><br/></div>" 149 + "<a id='showMore' style='" 150 + "text-decoration: underline;" 151 + "font-size:small;" 152 + "cursor: pointer'>" + showMoreText + "</a>" 153 + " " 154 + "<a id ='reloadLink' style='" 155 + "text-decoration: underline;" 156 + "font-size:small;" 157 + "'>reload now</a>" 158 + "</div>"; 159 160 var reloadLink = document.getElementById('reloadLink'); 161 reloadLink.setAttribute('href', href); 162 163 var showMoreElem = document.getElementById("showMore"); 164 showMoreElem.addEventListener('click', function () { 165 var moreInfoElem 166 = document.getElementById("moreInfo"); 167 168 if (showMoreElem.innerHTML === showMoreText) { 169 moreInfoElem.setAttribute( 170 "style", 171 "display: block;" 172 + "color:#FF991F;" 173 + "font-size:small;" 174 + "user-select:text;");
175 showMoreElem.innerHTML = showLessText; 176 } 177 else { 178 moreInfoElem.setAttribute( 179 "style", "display: none;"); 180 showMoreElem.innerHTML = showMoreText; 181 } 182 }); 183 184 window.setTimeout( 185 function () { window.location.replace(href); }, delay); 186 187 // Call extra handler if defined. 188 if (typeof postLoadErrorHandler === "function") { 189 postLoadErrorHandler(fileRef); 190 } 191 }; 192 window.removeEventListener( 193 'error', loadErrHandler, true /* capture phase */); 194 } 195 }; 196 window.addEventListener( 197 'error', loadErrHandler, true /* capture phase type of listener */); 198 </script>
198 199
199<script>/* eslint-disable comma-dangle, no-unused-vars, no-var, prefer-template, vars-on-top */ 200 201/* 202 * NOTE: If you add a new option please remember to document it here: 203 * https://jitsi.github.io/handbook/docs/dev-guide/dev-guide-configuration 204 */ 205 206var subdir = ''; 207var subdomain = ''; 208 209if (subdomain) { 210 subdomain = subdomain.substr(0, subdomain.length - 1).split('.') 211 .join('_') 212 .toLowerCase() + '.'; 213} 214 215// In case of no ssi provided by the webserver, use empty strings 216if (subdir.startsWith('<!--')) { 217 subdir = ''; 218} 219if (subdomain.startsWith('<!--')) { 220 subdomain = ''; 221} 222 223var enableJaaS = false; 224 225var config = { 226 // Connection 227 // 228 229 hosts: { 230 // XMPP domain. 231 domain: 'meet.epicenter.works', 232 233 // When using authentication, domain for guest users. 234 anonymousdomain: 'guest.meet.epicenter.works', 235 236 // Domain for authenticated users. Defaults to <domain>. 237 // authdomain: 'meet.epicenter.works', 238 239 // Focus component domain. Defaults to focus.<domain>. 240 // focus: 'focus.meet.epicenter.works', 241 242 // XMPP MUC domain. FIXME: use XEP-0030 to discover it. 243 muc: 'conference.' + subdomain + 'meet.epicenter.works', 244 }, 245 246 // BOSH URL. FIXME: use XEP-0156 to discover it. 247 bosh: 'https://meet.epicenter.works/' + subdir + 'http-bind', 248 249 // Websocket URL (XMPP) 250 // websocket: 'wss://meet.epicenter.works/' + subdir + 'xmpp-websocket', 251 252 // The real JID of focus participant - can be overridden here 253 // Do not change username - FIXME: Make focus username configurable 254 // https://github.com/jitsi/jitsi-meet/issues/7376 255 // focusUserJid: '[email protected]', 256 257 // Options related to the bridge (colibri) data channel 258 bridgeChannel: { 259 // If the backend advertises multiple colibri websockets, this options allows 260 // to filter some of them out based on the domain name. We use the first URL 261 // which does not match ignoreDomain, falling back to the first one that matches 262 // ignoreDomain. Has no effect if undefined. 263 // ignoreDomain: 'example.com', 264 265 // Prefer SCTP (WebRTC data channels over the media path) over a colibri websocket. 266 // If SCTP is available in the backend it will be used instead of a WS. Defaults to 267 // false (SCTP is used only if available and no WS are available). 268 // preferSctp: false 269 }, 270 271 // Testing / experimental features. 272 // 273 274 testing: { 275 // Allows the setting of a custom bandwidth value from the UI. 276 // assumeBandwidth: true, 277 278 // Disables the End to End Encryption feature. Useful for debugging 279 // issues related to insertable streams. 280 // disableE2EE: false, 281 282 // Enables XMPP WebSocket (as opposed to BOSH) for the given amount of users. 283 // mobileXmppWsThreshold: 10, // enable XMPP WebSockets on mobile for 10% of the users 284 285 // P2P test mode disables automatic switching to P2P when there are 2 286 // participants in the conference. 287 // p2pTestMode: false, 288 289 // Enables the test specific features consumed by jitsi-meet-torture 290 // testMode: false, 291 292 // Disables the auto-play behavior of *all* newly created video element. 293 // This is useful when the client runs on a host with limited resources. 294 // noAutoPlayVideo: false, 295 296 // Enable callstats only for a percentage of users. 297 // This takes a value between 0 and 100 which determines the probability for 298 // the callstats to be enabled. 299 // callStatsThreshold: 5, // enable callstats for 5% of the users. 300 }, 301 302 // Disables moderator indicators. 303 // disableModeratorIndicator: false, 304 305 // Disables the reactions feature. 306 // disableReactions: true, 307 308 // Disables the reactions moderation feature. 309 // disableReactionsModeration: false, 310 311 // Disables polls feature. 312 // disablePolls: false, 313 314 // Disables self-view tile. (hides it from tile view and from filmstrip) 315 // disableSelfView: false, 316 317 // Disables self-view settings in UI 318 // disableSelfViewSettings: false, 319 320 // screenshotCapture : { 321 // Enables the screensharing capture feature. 322 // enabled: false, 323 // 324 // The mode for the screenshot capture feature. 325 // Can be either 'recording' - screensharing screenshots are taken 326 // only when the recording is also on, 327 // or 'always' - screensharing screenshots are always taken. 328 // mode: 'recording', 329 // } 330 331 // Disables ICE/UDP by filtering out local and remote UDP candidates in 332 // signalling. 333 // webrtcIceUdpDisable: false, 334 335 // Disables ICE/TCP by filtering out local and remote TCP candidates in 336 // signalling. 337 // webrtcIceTcpDisable: false, 338 339 340 // Media 341 // 342 343 // Audio 344 345 // Disable measuring of audio levels. 346 // disableAudioLevels: false, 347 348 // audioLevelsInterval: 200, 349 350 // Enabling this will run the lib-jitsi-meet no audio detection module which 351 // will notify the user if the current selected microphone has no audio 352 // input and will suggest another valid device if one is present. 353 enableNoAudioDetection: true, 354 355 // Enabling this will show a "Save Logs" link in the GSM popover that can be 356 // used to collect debug information (XMPP IQs, SDP offer/answer cycles) 357 // about the call. 358 // enableSaveLogs: false, 359 360 // Enabling this will hide the "Show More" link in the GSM popover that can be 361 // used to display more statistics about the connection (IP, Port, protocol, etc). 362 // disableShowMoreStats: true, 363 364 // Enabling this will run the lib-jitsi-meet noise detection module which will 365 // notify the user if there is noise, other than voice, coming from the current 366 // selected microphone. The purpose it to let the user know that the input could 367 // be potentially unpleasant for other meeting participants. 368 enableNoisyMicDetection: true, 369 370 // Start the conference in audio only mode (no video is being received nor 371 // sent). 372 // startAudioOnly: false, 373 374 // Every participant after the Nth will start audio muted. 375 // startAudioMuted: 10, 376 377 // Start calls with audio muted. Unlike the option above, this one is only 378 // applied locally. FIXME: having these 2 options is confusing. 379 startWithAudioMuted: false, 380 381 // Enabling it (with #params) will disable local audio output of remote 382 // participants and to enable it back a reload is needed. 383 // startSilent: false, 384 385 // Enables support for opus-red (redundancy for Opus). 386 // enableOpusRed: false, 387 388 // Specify audio quality stereo and opusMaxAverageBitrate values in order to enable HD audio. 389 // Beware, by doing so, you are disabling echo cancellation, noise suppression and AGC. 390 // Specify enableOpusDtx to enable support for opus-dtx where 391 // audio packets wonât be transmitted while participant is silent or muted. 392 // audioQuality: { 393 // stereo: false, 394 // opusMaxAverageBitrate: null, // Value to fit the 6000 to 510000 range. 395 // enableOpusDtx: false, 396 // }, 397 398 // Noise suppression configuration. By default rnnoise is used. Optionally Krisp 399 // can be used by enabling it below, but the Krisp JS SDK files must be supplied in your 400 // installation. Specifically, these files are needed: 401 // - https://meet.example.com/libs/krisp/krisp.mjs 402 // - https://meet.example.com/libs/krisp/models/model_8.kw 403 // - https://meet.example.com/libs/krisp/models/model_16.kw 404 // - https://meet.example.com/libs/krisp/models/model_32.kw 405 // NOTE: Krisp JS SDK v1.0.9 was tested. 406 // noiseSuppression: { 407 // krisp: { 408 // enabled: false, 409 // logProcessStats: false, 410 // debugLogs: false, 411 // }, 412 // }, 413 414 // Video 415 416 // Sets the preferred resolution (height) for local video. Defaults to 720. 417 // resolution: 720, 418 419 // Specifies whether the raised hand will hide when someone becomes a dominant speaker or not 420 // disableRemoveRaisedHandOnFocus: false, 421 422 // speakerStats: { 423 // // Specifies whether the speaker stats is enable or not. 424 // disabled: false, 425
426 // // Specifies whether there will be a search field in speaker stats or not. 427 // disableSearch: false, 428 429 // // Specifies whether participants in speaker stats should be ordered or not, and with what priority. 430 // // 'role', <- Moderators on top. 431 // // 'name', <- Alphabetically by name. 432 // // 'hasLeft', <- The ones that have left in the bottom. 433 // order: [ 434 // 'role', 435 // 'name', 436 // 'hasLeft', 437 // ], 438 // }, 439 440 // DEPRECATED. Please use speakerStats.disableSearch instead. 441 // Specifies whether there will be a search field in speaker stats or not 442 // disableSpeakerStatsSearch: false, 443 444 // DEPRECATED. Please use speakerStats.order . 445 // Specifies whether participants in speaker stats should be ordered or not, and with what priority 446 // speakerStatsOrder: [ 447 // 'role', <- Moderators on top 448 // 'name', <- Alphabetically by name 449 // 'hasLeft', <- The ones that have left in the bottom 450 // ], <- the order of the array elements determines priority 451 452 // How many participants while in the tile view mode, before the receiving video quality is reduced from HD to SD. 453 // Use -1 to disable. 454 // maxFullResolutionParticipants: 2, 455 456 // w3c spec-compliant video constraints to use for video capture. Currently 457 // used by browsers that return true from lib-jitsi-meet's 458 // util#browser#usesNewGumFlow. The constraints are independent from 459 // this config's resolution value. Defaults to requesting an ideal 460 // resolution of 720p. 461 // constraints: { 462 // video: { 463 // height: { 464 // ideal: 720, 465 // max: 720, 466 // min: 240, 467 // }, 468 // }, 469 // }, 470 471 // Enable / disable simulcast support. 472 disableSimulcast: true, 473 474 // Every participant after the Nth will start video muted. 475 // startVideoMuted: 10, 476 477 // Start calls with video muted. Unlike the option above, this one is only 478 // applied locally. FIXME: having these 2 options is confusing. 479 startWithVideoMuted: false, 480 481 // Desktop sharing 482 483 // Optional desktop sharing frame rate options. Default value: min:5, max:5. 484 // desktopSharingFrameRate: { 485 // min: 5, 486 // max: 5, 487 // }, 488 489 // This option has been deprecated since it is no longer supported as per the w3c spec. 490 // https://w3c.github.io/mediacapture-screen-share/#dom-mediadevices-getdisplaymedia. If the user has not 491 // interacted with the webpage before the getDisplayMedia call, the promise will be rejected by the browser. This 492 // has already been implemented in Firefox and Safari and will be implemented in Chrome soon. 493 // https://bugs.chromium.org/p/chromium/issues/detail?id=1198918 494 // startScreenSharing: false, 495 496 // Recording 497 498 // DEPRECATED. Use recordingService.enabled instead. 499 // fileRecordingsEnabled: false, 500 501 // Enable the dropbox integration. 502 // dropbox: { 503 // appKey: '<APP_KEY>', // Specify your app key here. 504 // // A URL to redirect the user to, after authenticating 505 // // by default uses: 506 // // 'https://meet.epicenter.works/static/oauth.html' 507 // redirectURI: 508 // 'https://meet.epicenter.works/subfolder/static/oauth.html', 509 // }, 510 511 recordingService: { 512 // When integrations like dropbox are enabled only that will be shown, 513 // by enabling fileRecordingsServiceEnabled, we show both the integrations 514 // and the generic recording service (its configuration and storage type 515 // depends on jibri configuration) 516 enabled: false, 517 518 // Whether to show the possibility to share file recording with other people 519 // (e.g. meeting participants), based on the actual implementation 520 // on the backend. 521 sharingEnabled: false, 522 523 // Hide the warning that says we only store the recording for 24 hours. 524 hideStorageWarning: false, 525 }, 526 527 // DEPRECATED. Use recordingService.enabled instead. 528 // fileRecordingsServiceEnabled: false, 529 530 // DEPRECATED. Use recordingService.sharingEnabled instead. 531 // fileRecordingsServiceSharingEnabled: false, 532 533 // Local recording configuration. 534 localRecording: { 535 // Whether to disable local recording or not. 536 disable: true, 537 538 // Whether to notify all participants when a participant is recording locally. 539 notifyAllParticipants: false, 540 541 // Whether to disable the self recording feature (only local participant streams). 542 disableSelfRecording: true, 543 }, 544 545 // Customize the Live Streaming dialog. Can be modified for a non-YouTube provider. 546 // liveStreaming: { 547 // // Whether to enable live streaming or not. 548 // enabled: false, 549 // // Terms link 550 // termsLink: 'https://www.youtube.com/t/terms', 551 // // Data privacy link 552 // dataPrivacyLink: 'https://policies.google.com/privacy', 553 // // RegExp string that validates the stream key input field 554 // validatorRegExpString: '^(?:[a-zA-Z0-9]{4}(?:-(?!$)|$)){4}', 555 // // Documentation reference for the live streaming feature. 556 // helpLink: 'https://jitsi.org/live' 557 // }, 558 559 // DEPRECATED. Use liveStreaming.enabled instead. 560 // liveStreamingEnabled: false, 561 562 // DEPRECATED. Use transcription.enabled instead. 563 // transcribingEnabled: false, 564 565 // DEPRECATED. Use transcription.useAppLanguage instead. 566 // transcribeWithAppLanguage: true, 567 568 // DEPRECATED. Use transcription.preferredLanguage instead. 569 // preferredTranscribeLanguage: 'en-US', 570 571 // DEPRECATED. Use transcription.autoCaptionOnRecord instead. 572 // autoCaptionOnRecord: false, 573 574 // Transcription options. 575 // transcription: { 576 // // Whether the feature should be enabled or not. 577 // enabled: false, 578 579 // // Translation languages. 580 // // Available languages can be found in 581 // // ./src/react/features/transcribing/translation-languages.json. 582 // translationLanguages: ['en', 'es', 'fr', 'ro'], 583 584 // // Important languages to show on the top of the language list. 585 // translationLanguagesHead: ['en'], 586 587 // // If true transcriber will use the application language. 588 // // The plication language is either explicitly set by participants in their settings or automatically 589 // // detected based on the environment, e.g. if the app is opened in a chrome instance which 590 // // is using french as its default language then transcriptions for that participant will be in french. 591 // // Defaults to true. 592 // useAppLanguage: true, 593 594 // // Transcriber language. This settings will only work if "useAppLanguage" 595 // // is explicitly set to false. 596 // // Available languages can be found in 597 // // ./src/react/features/transcribing/transcriber-langs.json. 598 // preferredLanguage: 'en-US', 599 600 // // Disable start transcription for all participants. 601 // disableStartForAll: false, 602 603 // // Enables automatic turning on captions when recording is started 604 // autoCaptionOnRecord: false, 605 // }, 606 607 // Misc 608 609 // Default value for the channel "last N" attribute. -1 for unlimited. 610 channelLastN: -1, 611 612 // Connection indicators 613 // connectionIndicators: { 614 // autoHide: true, 615 // autoHideTimeout: 5000, 616 // disabled: false, 617 // disableDetails: false, 618 // inactiveDisabled: false 619 // }, 620 621 // Provides a way for the lastN value to be controlled through the UI. 622 // When startLastN is present, conference starts with a last-n value of startLastN and channelLastN 623 // value will be used when the quality level is selected using "Manage Video Quality" slider. 624 // startLastN: 1, 625 626 // Specify the settings for video quality optimizations on the client. 627 videoQuality: { 628 // 629 // // Provides a way to set the codec preference on desktop based endpoints. 630 codecPreferenceOrder: [ 'VP9', 'VP8', 'H264' ], 631 // 632 // // Provides a way to configure the maximum bitrates that will be enforced on the simulcast streams for 633 // // video tracks. The keys in the object represent the type of the stream (LD, SD or HD) and the values 634 // // are the max.bitrates to be set on that particular type of stream. The actual send may vary based on 635 // // the available bandwidth calculated by the browser, but it will be capped by the values specified here. 636 // // This is currently not implemented on app based clients on mobile. 637 // maxBitratesVideo: { 638 // H264: { 639 // low: 200000, 640 // standard: 500000, 641 // high: 1500000, 642 // }, 643 // VP8 : { 644 // low: 200000, 645 // standard: 500000, 646 // high: 1500000, 647 // }, 648 // VP9: { 649 // low: 100000, 650 // standard: 300000, 651 // high: 1200000, 652 // }, 653 // }, 654 // 655 // // The options can be used to override default thresholds of video thumbnail heights corresponding to 656 // // the video quality levels used in the application. At the time of this writing the allowed levels are: 657 // // 'low' - for the low quality level (180p at the time of this writing) 658 // // 'standard' - for the medium quality level (360p) 659 // // 'high' - for the high quality level (720p) 660 // // The keys should be positive numbers which represent the minimal thumbnail height for the quality level. 661 // // 662 // // With the default config value below the application will use 'low' quality until the thumbnails are 663 // // at least 360 pixels tall. If the thumbnail height reaches 720 pixels then the application will switch to 664 // // the high quality. 665 // minHeightForQualityLvl: { 666 // 360: 'standard', 667 // 720: 'high', 668 // }, 669 // 670 // // Provides a way to set the codec preference on mobile devices, both on RN and mobile browser based endpoint 671 // mobileCodecPreferenceOrder: [ 'VP8', 'VP9', 'H264' ], 672 // 673 // // DEPRECATED! Use `codecPreferenceOrder/mobileCodecPreferenceOrder` instead. 674 // // Provides a way to prevent a video codec from being negotiated on the JVB connection. The codec specified 675 // // here will be removed from the list of codecs present in the SDP answer generated by the client. If the 676 // // same codec is specified for both the disabled and preferred option, the disable settings will prevail. 677 // // Note that 'VP8' cannot be disabled since it's a mandatory codec, the setting will be ignored in this case. 678 // disabledCodec: 'H264', 679 // 680 // // DEPRECATED! Use `codecPreferenceOrder/mobileCodecPreferenceOrder` instead. 681 // // Provides a way to set a preferred video codec for the JVB connection. If 'H264' is specified here, 682 // // simulcast will be automatically disabled since JVB doesn't support H264 simulcast yet. This will only 683 // // rearrange the the preference order of the codecs in the SDP answer generated by the browser only if the 684 // // preferred codec specified here is present. Please ensure that the JVB offers the specified codec for this 685 // // to take effect. 686 // preferredCodec: 'VP8', 687 // 688 }, 689 690 // Notification timeouts 691 // notificationTimeouts: { 692 // short: 2500, 693 // medium: 5000, 694 // long: 10000, 695 // }, 696 697 // // Options for the recording limit notification. 698 // recordingLimit: { 699 // 700 // // The recording limit in minutes. Note: This number appears in the notification text 701 // // but doesn't enforce the actual recording time limit. This should be configured in 702 // // jibri! 703 // limit: 60, 704 // 705 // // The name of the app with unlimited recordings. 706 // appName: 'Unlimited recordings APP', 707 // 708 // // The URL of the app with unlimited recordings. 709 // appURL: 'https://unlimited.recordings.app.com/', 710 // }, 711 712 // Disables or enables RTX (RFC 4588) (defaults to false). 713 // disableRtx: false, 714 715 // Moves all Jitsi Meet 'beforeunload' logic (cleanup, leaving, disconnecting, etc) to the 'unload' event. 716 // disableBeforeUnloadHandlers: true, 717
718 // Disables or enables TCC support in this client (default: enabled). 719 // enableTcc: true, 720 721 // Disables or enables REMB support in this client (default: enabled). 722 // enableRemb: true, 723 724 // Enables ICE restart logic in LJM and displays the page reload overlay on 725 // ICE failure. Current disabled by default because it's causing issues with 726 // signaling when Octo is enabled. Also when we do an "ICE restart"(which is 727 // not a real ICE restart), the client maintains the TCC sequence number 728 // counter, but the bridge resets it. The bridge sends media packets with 729 // TCC sequence numbers starting from 0. 730 // enableIceRestart: false, 731 732 // Enables forced reload of the client when the call is migrated as a result of 733 // the bridge going down. 734 // enableForcedReload: true, 735 736 // Use TURN/UDP servers for the jitsi-videobridge connection (by default 737 // we filter out TURN/UDP because it is usually not needed since the 738 // bridge itself is reachable via UDP) 739 // useTurnUdp: false 740 741 // Enable support for encoded transform in supported browsers. This allows 742 // E2EE to work in Safari if the corresponding flag is enabled in the browser. 743 // Experimental. 744 // enableEncodedTransformSupport: false, 745 746 // UI 747 // 748 749 // Disables responsive tiles. 750 // disableResponsiveTiles: false, 751 752 // DEPRECATED. Please use `securityUi?.hideLobbyButton` instead. 753 // Hides lobby button. 754 // hideLobbyButton: false, 755 756 // DEPRECATED. Please use `lobby?.autoKnock` instead. 757 // If Lobby is enabled starts knocking automatically. 758 // autoKnockLobby: false, 759 760 // DEPRECATED. Please use `lobby?.enableChat` instead. 761 // Enable lobby chat. 762 // enableLobbyChat: true, 763 764 // DEPRECATED! Use `breakoutRooms.hideAddRoomButton` instead. 765 // Hides add breakout room button 766 // hideAddRoomButton: false, 767 768 // Require users to always specify a display name. 769 requireDisplayName: true, 770 771 // Enables webhid functionality for Audio. 772 // enableWebHIDFeature: false, 773 774 // DEPRECATED! Use 'welcomePage.disabled' instead. 775 // Whether to use a welcome page or not. In case it's false a random room 776 // will be joined when no room is specified. 777 enableWelcomePage: true, 778 779 // Configs for welcome page. 780 // welcomePage: { 781 // // Whether to disable welcome page. In case it's disabled a random room 782 // // will be joined when no room is specified. 783 // disabled: false, 784 // // If set,landing page will redirect to this URL. 785 // customUrl: '' 786 // }, 787 788 // Configs for the lobby screen. 789 // lobby: { 790 // // If Lobby is enabled, it starts knocking automatically. Replaces `autoKnockLobby`. 791 // autoKnock: false, 792 // // Enables the lobby chat. Replaces `enableLobbyChat`. 793 // enableChat: true, 794 // }, 795 796 // Configs for the security related UI elements. 797 // securityUi: { 798 // // Hides the lobby button. Replaces `hideLobbyButton`. 799 // hideLobbyButton: false, 800 // // Hides the possibility to set and enter a lobby password. 801 // disableLobbyPassword: false, 802 // }, 803 804 // Disable app shortcuts that are registered upon joining a conference 805 // disableShortcuts: false, 806 807 // Disable initial browser getUserMedia requests. 808 // This is useful for scenarios where users might want to start a conference for screensharing only 809 // disableInitialGUM: false, 810 811 // Enabling the close page will ignore the welcome page redirection when 812 // a call is hangup. 813 enableClosePage: true, 814 815 // Disable hiding of remote thumbnails when in a 1-on-1 conference call. 816 // Setting this to null, will also disable showing the remote videos 817 // when the toolbar is shown on mouse movements 818 // disable1On1Mode: null | false | true, 819 820 // Default local name to be displayed 821 // defaultLocalDisplayName: 'me', 822 823 // Default remote name to be displayed 824 // defaultRemoteDisplayName: 'Fellow Jitster', 825 826 // Hides the display name from the participant thumbnail 827 // hideDisplayName: false, 828 829 // Hides the dominant speaker name badge that hovers above the toolbox 830 // hideDominantSpeakerBadge: false, 831 832 // Default language for the user interface. Cannot be overwritten. 833 defaultLanguage: 'en', 834 835 // Disables profile and the edit of all fields from the profile settings (display name and email) 836 // disableProfile: false, 837 838 // Hides the email section under profile settings. 839 hideEmailInSettings: true, 840 841 // When enabled the password used for locking a room is restricted to up to the number of digits specified 842 // default: roomPasswordNumberOfDigits: false, 843 // roomPasswordNumberOfDigits: 10, 844 845 // Message to show the users. Example: 'The service will be down for 846 // maintenance at 01:00 AM GMT, 847 // noticeMessage: '', 848 849 // Enables calendar integration, depends on googleApiApplicationClientID 850 // and microsoftApiApplicationClientID 851 // enableCalendarIntegration: false, 852 853 // Configs for prejoin page. 854 prejoinConfig: { 855 // // When 'true', it shows an intermediate page before joining, where the user can configure their devices. 856 // // This replaces `prejoinPageEnabled`. 857 enabled: true, 858 // // Hides the participant name editing field in the prejoin screen. 859 // // If requireDisplayName is also set as true, a name should still be provided through 860 // // either the jwt or the userInfo from the iframe api init object in order for this to have an effect. 861 hideDisplayName: false, 862 // // List of buttons to hide from the extra join options dropdown. 863 // hideExtraJoinButtons: ['no-audio', 'by-phone'], 864 }, 865 866 // When 'true', the user cannot edit the display name. 867 // (Mainly useful when used in conjunction with the JWT so the JWT name becomes read only.) 868 // readOnlyName: false, 869 870 // If etherpad integration is enabled, setting this to true will 871 // automatically open the etherpad when a participant joins. This 872 // does not affect the mobile app since opening an etherpad 873 // obscures the conference controls -- it's better to let users 874 // choose to open the pad on their own in that case.
875 // openSharedDocumentOnJoin: false, 876 877 // If true, shows the unsafe room name warning label when a room name is 878 // deemed unsafe (due to the simplicity in the name) and a password is not 879 // set or the lobby is not enabled. 880 // enableInsecureRoomNameWarning: false, 881 882 // Whether to automatically copy invitation URL after creating a room. 883 // Document should be focused for this option to work 884 // enableAutomaticUrlCopy: false, 885 886 // Array with avatar URL prefixes that need to use CORS. 887 // corsAvatarURLs: [ 'https://www.gravatar.com/avatar/' ], 888 889 // Base URL for a Gravatar-compatible service. Defaults to Gravatar. 890 // DEPRECATED! Use `gravatar.baseUrl` instead. 891 // gravatarBaseURL: 'https://www.gravatar.com/avatar/', 892 893 // Setup for Gravatar-compatible services. 894 gravatar: { 895 // // Defaults to Gravatar. 896 // baseUrl: 'https://www.gravatar.com/avatar/', 897 // // True if Gravatar should be disabled. 898 disabled: true, 899 }, 900 901 // App name to be displayed in the invitation email subject, as an alternative to 902 // interfaceConfig.APP_NAME. 903 // inviteAppName: null, 904 905 // Moved from interfaceConfig(TOOLBAR_BUTTONS). 906 // The name of the toolbar buttons to display in the toolbar, including the 907 // "More actions" menu. If present, the button will display. Exceptions are 908 // "livestreaming" and "recording" which also require being a moderator and 909 // some other values in config.js to be enabled. Also, the "profile" button will 910 // not display for users with a JWT. 911 // Notes: 912 // - it's impossible to choose which buttons go in the "More actions" menu 913 // - it's impossible to control the placement of buttons 914 // - 'desktop' controls the "Share your screen" button 915 // - if `toolbarButtons` is undefined, we fallback to enabling all buttons on the UI 916 toolbarButtons: [ 917 'camera', 918 'chat', 919 'closedcaptions', 920 'desktop', 921 // 'download', 922 // 'embedmeeting', 923 'etherpad', 924 'feedback', 925 'filmstrip', 926 'fullscreen', 927 'hangup', 928 // 'help', 929 'highlight', 930 'invite', 931 // 'linktosalesforce', 932 'livestreaming', 933 'microphone', 934 'noisesuppression', 935 'participants-pane', 936 'profile', 937 'raisehand', 938 // 'recording', 939 'security', 940 'select-background', 941 'settings', 942 // 'shareaudio', 943 // 'sharedvideo', 944 'shortcuts', 945 // 'stats', 946 'tileview', 947 'toggle-camera', 948 'videoquality', 949 'whiteboard', 950 ], 951 952 // Holds values related to toolbar visibility control. 953 // toolbarConfig: { 954 // // Moved from interfaceConfig.INITIAL_TOOLBAR_TIMEOUT 955 // // The initial number of milliseconds for the toolbar buttons to be visible on screen. 956 // initialTimeout: 20000, 957 // // Moved from interfaceConfig.TOOLBAR_TIMEOUT 958 // // Number of milliseconds for the toolbar buttons to be visible on screen. 959 // timeout: 4000, 960 // // Moved from interfaceConfig.TOOLBAR_ALWAYS_VISIBLE 961 // // Whether toolbar should be always visible or should hide after x milliseconds. 962 // alwaysVisible: false, 963 // // Indicates whether the toolbar should still autohide when chat is open 964 // autoHideWhileChatIsOpen: false, 965 // }, 966 967 // Toolbar buttons which have their click/tap event exposed through the API on 968 // `toolbarButtonClicked`. Passing a string for the button key will 969 // prevent execution of the click/tap routine; passing an object with `key` and 970 // `preventExecution` flag on false will not prevent execution of the click/tap 971 // routine. Below array with mixed mode for passing the buttons. 972 // buttonsWithNotifyClick: [ 973 // 'camera', 974 // { 975 // key: 'chat', 976 // preventExecution: false 977 // }, 978 // { 979 // key: 'closedcaptions', 980 // preventExecution: true 981 // }, 982 // 'desktop', 983 // 'download', 984 // 'embedmeeting', 985 // 'end-meeting', 986 // 'etherpad', 987 // 'feedback', 988 // 'filmstrip', 989 // 'fullscreen', 990 // 'hangup', 991 // 'hangup-menu', 992 // 'help', 993 // { 994 // key: 'invite', 995 // preventExecution: false 996 // }, 997 // 'livestreaming', 998 // 'microphone', 999 // 'mute-everyone', 1000 // 'mute-video-everyone', 1001 // 'noisesuppression', 1002 // 'participants-pane', 1003 // 'profile', 1004 // { 1005 // key: 'raisehand', 1006 // preventExecution: true 1007 // }, 1008 // 'recording', 1009 // 'security', 1010 // 'select-background', 1011 // 'settings', 1012 // 'shareaudio', 1013 // 'sharedvideo', 1014 // 'shortcuts', 1015 // 'stats', 1016 // 'tileview', 1017 // 'toggle-camera', 1018 // 'videoquality', 1019 // // The add passcode button from the security dialog. 1020 // { 1021 // key: 'add-passcode', 1022 // preventExecution: false 1023 // }, 1024 // 'whiteboard', 1025 // ], 1026 1027 // Participant context menu buttons which have their click/tap event exposed through the API on 1028 // `participantMenuButtonClick`. Passing a string for the button key will 1029 // prevent execution of the click/tap routine; passing an object with `key` and 1030 // `preventExecution` flag on false will not prevent execution of the click/tap 1031 // routine. Below array with mixed mode for passing the buttons. 1032 // participantMenuButtonsWithNotifyClick: [ 1033 // 'allow-video', 1034 // { 1035 // key: 'ask-unmute', 1036 // preventExecution: false 1037 // }, 1038 // 'conn-status', 1039 // 'flip-local-video', 1040 // 'grant-moderator', 1041 // { 1042 // key: 'kick', 1043 // preventExecution: true 1044 // }, 1045 // { 1046 // key: 'hide-self-view', 1047 // preventExecution: false 1048 // }, 1049 // 'mute', 1050 // 'mute-others', 1051 // 'mute-others-video', 1052 // 'mute-video', 1053 // 'pinToStage', 1054 // 'privateMessage', 1055 // { 1056 // key: 'remote-control', 1057 // preventExecution: false 1058 // }, 1059 // 'send-participant-to-room', 1060 // 'verify', 1061 // ], 1062 1063 // List of pre meeting screens buttons to hide. The values must be one or more of the 5 allowed buttons: 1064 // 'microphone', 'camera', 'select-background', 'invite', 'settings' 1065 // hiddenPremeetingButtons: [], 1066 1067 // An array with custom option buttons for the participant context menu 1068 // type: Array<{ icon: string; id: string; text: string; }> 1069 // customParticipantMenuButtons: [], 1070 1071 // An array with custom option buttons for the toolbar 1072 // type: Array<{ icon: string; id: string; text: string; backgroundColor?: string; }> 1073 // customToolbarButtons: [], 1074 1075 // Stats 1076 // 1077 1078 // Whether to enable stats collection or not in the TraceablePeerConnection. 1079 // This can be useful for debugging purposes (post-processing/analysis of 1080 // the webrtc stats) as it is done in the jitsi-meet-torture bandwidth 1081 // estimation tests. 1082 gatherStats: false, 1083 1084 // The interval at which PeerConnection.getStats() is called. Defaults to 10000 1085 // pcStatsInterval: 10000, 1086 1087 // To enable sending statistics to callstats.io you must provide the 1088 // Application ID and Secret. 1089 // callStatsID: '', 1090 // callStatsSecret: '', 1091 // callStatsApplicationLogsDisabled: false, 1092
1093 // The callstats initialize config params as described in the API: 1094 // https://docs.callstats.io/docs/javascript#callstatsinitialize-with-app-secret 1095 // callStatsConfigParams: { 1096 // disableBeforeUnloadHandler: true, // disables callstats.js's window.onbeforeunload parameter. 1097 // applicationVersion: "app_version", // Application version specified by the developer. 1098 // disablePrecalltest: true, // disables the pre-call test, it is enabled by default. 1099 // siteID: "siteID", // The name/ID of the site/campus from where the call/pre-call test is made. 1100 // additionalIDs: { // additionalIDs object, contains application related IDs. 1101 // customerID: "Customer Identifier. Example, walmart.", 1102 // tenantID: "Tenant Identifier. Example, monster.", 1103 // productName: "Product Name. Example, Jitsi.", 1104 // meetingsName: "Meeting Name. Example, Jitsi loves callstats.", 1105 // serverName: "Server/MiddleBox Name. Example, jvb-prod-us-east-mlkncws12.", 1106 // pbxID: "PBX Identifier. Example, walmart.", 1107 // pbxExtensionID: "PBX Extension Identifier. Example, 5625.", 1108 // fqExtensionID: "Fully qualified Extension Identifier. Example, +71 (US) +5625.", 1109 // sessionID: "Session Identifier. Example, session-12-34", 1110 // }, 1111 // collectLegacyStats: true, //enables the collection of legacy stats in chrome browser 1112 // collectIP: true, //enables the collection localIP address 1113 // }, 1114 1115 // Enables sending participants' display names to callstats 1116 // enableDisplayNameInStats: false, 1117 1118 // Enables sending participants' emails (if available) to callstats and other analytics 1119 // enableEmailInStats: false, 1120 1121 faceLandmarks: { 1122 // // Enables sharing your face coordinates. Used for centering faces within a video. 1123 // enableFaceCentering: false, 1124 1125 // // Enables detecting face expressions and sharing data with other participants 1126 // enableFaceExpressionsDetection: false, 1127 1128 // // Enables displaying face expressions in speaker stats 1129 // enableDisplayFaceExpressions: false, 1130 1131 // // Enable rtc stats for face landmarks 1132 enableRTCStats: false, 1133 1134 // // Minimum required face movement percentage threshold for sending new face centering coordinates data. 1135 // faceCenteringThreshold: 10, 1136 1137 // // Milliseconds for processing a new image capture in order to detect face coordinates if they exist. 1138 // captureInterval: 1000, 1139 }, 1140 1141 // Controls the percentage of automatic feedback shown to participants when callstats is enabled. 1142 // The default value is 100%. If set to 0, no automatic feedback will be requested 1143 // feedbackPercentage: 100, 1144 1145 // Privacy 1146 // 1147 1148 // If third party requests are disabled, no other server will be contacted. 1149 // This means avatars will be locally generated and callstats integration 1150 // will not function. 1151 disableThirdPartyRequests: true, 1152 1153 1154 // Peer-To-Peer mode: used (if enabled) when there are just 2 participants. 1155 // 1156 1157 p2p: { 1158 // Enables peer to peer mode. When enabled the system will try to 1159 // establish a direct connection when there are exactly 2 participants 1160 // in the room. If that succeeds the conference will stop sending data 1161 // through the JVB and use the peer to peer connection instead. When a 1162 // 3rd participant joins the conference will be moved back to the JVB 1163 // connection. 1164 enabled: false, 1165 1166 // Sets the ICE transport policy for the p2p connection. At the time 1167 // of this writing the list of possible values are 'all' and 'relay', 1168 // but that is subject to change in the future. The enum is defined in 1169 // the WebRTC standard: 1170 // https://www.w3.org/TR/webrtc/#rtcicetransportpolicy-enum. 1171 // If not set, the effective value is 'all'. 1172 // iceTransportPolicy: 'all', 1173 1174 // Provides a way to set the codec preference on mobile devices, both on RN and mobile browser based 1175 // endpoints. 1176 // mobileCodecPreferenceOrder: [ 'H264', 'VP8', 'VP9' ], 1177 // 1178 // Provides a way to set the codec preference on desktop based endpoints. 1179 // codecPreferenceOrder: [ 'VP9', 'VP8', 'H264 ], 1180 1181 // How long we're going to wait, before going back to P2P after the 3rd 1182 // participant has left the conference (to filter out page reload). 1183 // backToP2PDelay: 5, 1184 1185 // The STUN servers that will be used in the peer to peer connections 1186 stunServers: [ 1187 1188 // { urls: 'stun:meet.epicenter.works:3478' }, 1189 { urls: 'stun:meet.epicenter.works:5349' }, 1190 ], 1191 1192 // DEPRECATED! Use `codecPreferenceOrder/mobileCodecPreferenceOrder` instead. 1193 // Provides a way to set the video codec preference on the p2p connection. Acceptable 1194 // codec values are 'VP8', 'VP9' and 'H264'. 1195 // preferredCodec: 'H264', 1196 1197 // DEPRECATED! Use `codecPreferenceOrder/mobileCodecPreferenceOrder` instead. 1198 // Provides a way to prevent a video codec from being negotiated on the p2p connection. 1199 // disabledCodec: '', 1200 }, 1201 1202 analytics: { 1203 // True if the analytics should be disabled 1204 disabled: true, 1205 1206 // The Google Analytics Tracking ID: 1207 // googleAnalyticsTrackingId: 'your-tracking-id-UA-123456-1', 1208 1209 // Matomo configuration: 1210 // matomoEndpoint: 'https://your-matomo-endpoint/', 1211 // matomoSiteID: '42', 1212 1213 // The Amplitude APP Key: 1214 // amplitudeAPPKey: '<APP_KEY>', 1215 1216 // Enables Amplitude UTM tracking: 1217 // Default value is false.
1218 // amplitudeIncludeUTM: false, 1219 1220 // Obfuscates room name sent to analytics (amplitude, rtcstats) 1221 // Default value is false. 1222 // obfuscateRoomName: false, 1223 1224 // Configuration for the rtcstats server: 1225 // By enabling rtcstats server every time a conference is joined the rtcstats 1226 // module connects to the provided rtcstatsEndpoint and sends statistics regarding 1227 // PeerConnection states along with getStats metrics polled at the specified 1228 // interval. 1229 // rtcstatsEnabled: false, 1230 // rtcstatsStoreLogs: false, 1231 1232 // In order to enable rtcstats one needs to provide a endpoint url. 1233 // rtcstatsEndpoint: wss://rtcstats-server-pilot.jitsi.net/, 1234 1235 // The interval at which rtcstats will poll getStats, defaults to 10000ms. 1236 // If the value is set to 0 getStats won't be polled and the rtcstats client 1237 // will only send data related to RTCPeerConnection events. 1238 // rtcstatsPollInterval: 10000, 1239 1240 // This determines if rtcstats sends the SDP to the rtcstats server or replaces 1241 // all SDPs with an empty string instead. 1242 // rtcstatsSendSdp: false, 1243 1244 // Array of script URLs to load as lib-jitsi-meet "analytics handlers". 1245 // scriptURLs: [ 1246 // "libs/analytics-ga.min.js", // google-analytics 1247 // "https://example.com/my-custom-analytics.js", 1248 // ], 1249 1250 // By enabling watchRTCEnabled option you would want to use watchRTC feature 1251 // This would also require to configure watchRTCConfigParams. 1252 // Please remember to keep rtcstatsEnabled disabled for watchRTC to work. 1253 // watchRTCEnabled: false, 1254 }, 1255 1256 // Logs that should go be passed through the 'log' event if a handler is defined for it 1257 // apiLogLevels: ['warn', 'log', 'error', 'info', 'debug'], 1258 1259 // Information about the jitsi-meet instance we are connecting to, including 1260 // the user region as seen by the server. 1261 // deploymentInfo: { 1262 // shard: "shard1", 1263 // region: "europe", 1264 // userRegion: "asia", 1265 // }, 1266 1267 // Array<string> of disabled sounds. 1268 // Possible values: 1269 // - 'ASKED_TO_UNMUTE_SOUND' 1270 // - 'E2EE_OFF_SOUND' 1271 // - 'E2EE_ON_SOUND' 1272 // - 'INCOMING_MSG_SOUND' 1273 // - 'KNOCKING_PARTICIPANT_SOUND' 1274 // - 'LIVE_STREAMING_OFF_SOUND' 1275 // - 'LIVE_STREAMING_ON_SOUND' 1276 // - 'NO_AUDIO_SIGNAL_SOUND' 1277 // - 'NOISY_AUDIO_INPUT_SOUND' 1278 // - 'OUTGOING_CALL_EXPIRED_SOUND' 1279 // - 'OUTGOING_CALL_REJECTED_SOUND' 1280 // - 'OUTGOING_CALL_RINGING_SOUND' 1281 // - 'OUTGOING_CALL_START_SOUND' 1282 // - 'PARTICIPANT_JOINED_SOUND' 1283 // - 'PARTICIPANT_LEFT_SOUND' 1284 // - 'RAISE_HAND_SOUND' 1285 // - 'REACTION_SOUND' 1286 // - 'RECORDING_OFF_SOUND' 1287 // - 'RECORDING_ON_SOUND' 1288 // - 'TALK_WHILE_MUTED_SOUND' 1289 // disabledSounds: [], 1290 1291 // DEPRECATED! Use `disabledSounds` instead. 1292 // Decides whether the start/stop recording audio notifications should play on record. 1293 // disableRecordAudioNotification: false, 1294 1295 // DEPRECATED! Use `disabledSounds` instead. 1296 // Disables the sounds that play when other participants join or leave the 1297 // conference (if set to true, these sounds will not be played). 1298 // disableJoinLeaveSounds: false, 1299 1300 // DEPRECATED! Use `disabledSounds` instead. 1301 // Disables the sounds that play when a chat message is received. 1302 // disableIncomingMessageSound: false, 1303 1304 // Information for the chrome extension banner 1305 // chromeExtensionBanner: { 1306 // // The chrome extension to be installed address 1307 // url: 'https://chrome.google.com/webstore/detail/jitsi-meetings/kglhbbefdnlheedjiejgomgmfplipfeb', 1308 // edgeUrl: 'https://microsoftedge.microsoft.com/addons/detail/jitsi-meetings/eeecajlpbgjppibfledfihobcabccihn', 1309 1310 // // Extensions info which allows checking if they are installed or not 1311 // chromeExtensionsInfo: [ 1312 // { 1313 // id: 'kglhbbefdnlheedjiejgomgmfplipfeb', 1314 // path: 'jitsi-logo-48x48.png', 1315 // }, 1316 // // Edge extension info 1317 // { 1318 // id: 'eeecajlpbgjppibfledfihobcabccihn', 1319 // path: 'jitsi-logo-48x48.png', 1320 // }, 1321 // ] 1322 // }, 1323 1324 // e2ee: { 1325 // labels: { 1326 // description: '', 1327 // label: '', 1328 // tooltip: '', 1329 // warning: '', 1330 // }, 1331 // externallyManagedKey: false, 1332 // }, 1333
1334 // Options related to end-to-end (participant to participant) ping. 1335 // e2eping: { 1336 // // Whether ene-to-end pings should be enabled. 1337 // enabled: false, 1338 // 1339 // // The number of responses to wait for. 1340 // numRequests: 5, 1341 // 1342 // // The max conference size in which e2e pings will be sent. 1343 // maxConferenceSize: 200, 1344 // 1345 // // The maximum number of e2e ping messages per second for the whole conference to aim for. 1346 // // This is used to control the pacing of messages in order to reduce the load on the backend. 1347 // maxMessagesPerSecond: 250, 1348 // }, 1349 1350 // If set, will attempt to use the provided video input device label when 1351 // triggering a screenshare, instead of proceeding through the normal flow 1352 // for obtaining a desktop stream. 1353 // NOTE: This option is experimental and is currently intended for internal 1354 // use only. 1355 // _desktopSharingSourceDevice: 'sample-id-or-label', 1356 1357 // DEPRECATED! Use deeplinking.disabled instead. 1358 // If true, any checks to handoff to another application will be prevented 1359 // and instead the app will continue to display in the current browser. 1360 // disableDeepLinking: false, 1361 1362 // The deeplinking config. 1363 // For information about the properties of 1364 // deeplinking.[ios/android].dynamicLink check: 1365 // https://firebase.google.com/docs/dynamic-links/create-manually 1366 // deeplinking: { 1367 // 1368 // // The desktop deeplinking config. 1369 // desktop: { 1370 // appName: 'Jitsi Meet' 1371 // }, 1372 // // If true, any checks to handoff to another application will be prevented 1373 // // and instead the app will continue to display in the current browser. 1374 // disabled: false, 1375 1376 // // whether to hide the logo on the deep linking pages. 1377 // hideLogo: false, 1378 1379 // // The ios deeplinking config. 1380 // ios: { 1381 // appName: 'Jitsi Meet', 1382 // // Specify mobile app scheme for opening the app from the mobile browser. 1383 // appScheme: 'org.jitsi.meet', 1384 // // Custom URL for downloading ios mobile app. 1385 // downloadLink: 'https://itunes.apple.com/us/app/jitsi-meet/id1165103905', 1386 // dynamicLink: { 1387 // apn: 'org.jitsi.meet', 1388 // appCode: 'w2atb', 1389 // customDomain: undefined, 1390 // ibi: 'com.atlassian.JitsiMeet.ios', 1391 // isi: '1165103905' 1392 // } 1393 // }, 1394 1395 // // The android deeplinking config. 1396 // android: { 1397 // appName: 'Jitsi Meet', 1398 // // Specify mobile app scheme for opening the app from the mobile browser. 1399 // appScheme: 'org.jitsi.meet', 1400 // // Custom URL for downloading android mobile app. 1401 // downloadLink: 'https://play.google.com/store/apps/details?id=org.jitsi.meet', 1402 // // Android app package name. 1403 // appPackage: 'org.jitsi.meet', 1404 // fDroidUrl: 'https://f-droid.org/en/packages/org.jitsi.meet/', 1405 // dynamicLink: { 1406 // apn: 'org.jitsi.meet', 1407 // appCode: 'w2atb', 1408 // customDomain: undefined, 1409 // ibi: 'com.atlassian.JitsiMeet.ios', 1410 // isi: '1165103905' 1411 // } 1412 // } 1413 // }, 1414 1415 // // The terms, privacy and help centre URL's. 1416 // legalUrls: { 1417 // helpCentre: 'https://web-cdn.jitsi.net/faq/meet-faq.html', 1418 // privacy: 'https://jitsi.org/meet/privacy', 1419 // terms: 'https://jitsi.org/meet/terms' 1420 // }, 1421 1422 // A property to disable the right click context menu for localVideo 1423 // the menu has option to flip the locally seen video for local presentations 1424 // disableLocalVideoFlip: false, 1425 1426 // A property used to unset the default flip state of the local video. 1427 // When it is set to 'true', the local(self) video will not be mirrored anymore. 1428 // doNotFlipLocalVideo: false, 1429 1430 // Mainly privacy related settings 1431 1432 // Disables all invite functions from the app (share, invite, dial out...etc) 1433 // disableInviteFunctions: true, 1434 1435 // Disables storing the room name to the recents list. When in an iframe this is ignored and 1436 // the room is never stored in the recents list. 1437 doNotStoreRoom: true, 1438 1439 // Deployment specific URLs.
1440 // deploymentUrls: { 1441 // // If specified a 'Help' button will be displayed in the overflow menu with a link to the specified URL for 1442 // // user documentation. 1443 // userDocumentationURL: 'https://docs.example.com/video-meetings.html', 1444 // // If specified a 'Download our apps' button will be displayed in the overflow menu with a link 1445 // // to the specified URL for an app download page. 1446 // downloadAppsUrl: 'https://docs.example.com/our-apps.html', 1447 // }, 1448 1449 // Options related to the remote participant menu. 1450 // remoteVideoMenu: { 1451 // // Whether the remote video context menu to be rendered or not. 1452 // disabled: true, 1453 // // If set to true the 'Kick out' button will be disabled. 1454 // disableKick: true, 1455 // // If set to true the 'Grant moderator' button will be disabled. 1456 // disableGrantModerator: true, 1457 // // If set to true the 'Send private message' button will be disabled. 1458 // disablePrivateChat: true, 1459 // }, 1460 1461 // Endpoint that enables support for salesforce integration with in-meeting resource linking 1462 // This is required for: 1463 // listing the most recent records - salesforceUrl/records/recents 1464 // searching records - salesforceUrl/records?text=${text} 1465 // retrieving record details - salesforceUrl/records/${id}?type=${type} 1466 // and linking the meeting - salesforceUrl/sessions/${sessionId}/records/${id} 1467 // 1468 // salesforceUrl: 'https://api.example.com/', 1469 1470 // If set to true all muting operations of remote participants will be disabled. 1471 // disableRemoteMute: true, 1472 1473 // Enables support for lip-sync for this client (if the browser supports it). 1474 // enableLipSync: false, 1475 1476 /** 1477 External API url used to receive branding specific information. 1478 If there is no url set or there are missing fields, the defaults are applied. 1479 The config file should be in JSON. 1480 None of the fields are mandatory and the response must have the shape: 1481 { 1482 // The domain url to apply (will replace the domain in the sharing conference link/embed section) 1483 inviteDomain: 'example-company.org, 1484 // The hex value for the colour used as background 1485 backgroundColor: '#fff', 1486 // The url for the image used as background 1487 backgroundImageUrl: 'https://example.com/background-img.png', 1488 // The anchor url used when clicking the logo image 1489 logoClickUrl: 'https://example-company.org', 1490 // The url used for the image used as logo 1491 logoImageUrl: 'https://example.com/logo-img.png', 1492 // Overwrite for pool of background images for avatars 1493 avatarBackgrounds: ['url(https://example.com/avatar-background-1.png)', '#FFF'], 1494 // The lobby/prejoin screen background
1495 premeetingBackground: 'url(https://example.com/premeeting-background.png)', 1496 // A list of images that can be used as video backgrounds. 1497 // When this field is present, the default images will be replaced with those provided. 1498 virtualBackgrounds: ['https://example.com/img.jpg'], 1499 // Object containing customized icons that should replace the default ones. 1500 // The keys need to be the exact same icon names used in here: 1501 // https://github.com/jitsi/jitsi-meet/blob/master/react/features/base/icons/svg/index.ts 1502 // To avoid having the icons trimmed or displayed in an unexpected way, please provide svg 1503 // files containing svg xml icons in the size that the default icons come in. 1504 customIcons: { 1505 IconArrowUp: 'https://example.com/arrow-up.svg', 1506 IconDownload: 'https://example.com/download.svg', 1507 IconRemoteControlStart: 'https://example.com/remote-start.svg', 1508 }, 1509 // Object containing a theme's properties. It also supports partial overwrites of the main theme. 1510 // For a list of all possible theme tokens and their current defaults, please check: 1511 // https://github.com/jitsi/jitsi-meet/tree/master/resources/custom-theme/custom-theme.json 1512 // For a short explanations on each of the tokens, please check: 1513 // https://github.com/jitsi/jitsi-meet/blob/master/react/features/base/ui/Tokens.ts 1514 // IMPORTANT!: This is work in progress so many of the various tokens are not yet applied in code 1515 // or they are partially applied. 1516 customTheme: { 1517 palette: { 1518 ui01: "orange !important", 1519 ui02: "maroon", 1520 surface02: 'darkgreen', 1521 ui03: "violet", 1522 ui04: "magenta", 1523 ui05: "blueviolet", 1524 action01: 'green', 1525 action01Hover: 'lightgreen', 1526 disabled01: 'beige', 1527 success02: 'cadetblue', 1528 action02Hover: 'aliceblue', 1529 }, 1530 typography: { 1531 labelRegular: { 1532 fontSize: 25, 1533 lineHeight: 30, 1534 fontWeight: 500, 1535 } 1536 } 1537 } 1538 } 1539 */ 1540 // dynamicBrandingUrl: '', 1541 1542 // Options related to the participants pane. 1543 // participantsPane: { 1544 // // Hides the moderator settings tab. 1545 // hideModeratorSettingsTab: false, 1546 // // Hides the more actions button. 1547 // hideMoreActionsButton: false, 1548 // // Hides the mute all button.
1549 // hideMuteAllButton: false, 1550 // }, 1551 1552 // Options related to the breakout rooms feature. 1553 // breakoutRooms: { 1554 // // Hides the add breakout room button. This replaces `hideAddRoomButton`. 1555 // hideAddRoomButton: false, 1556 // // Hides the auto assign participants button. 1557 // hideAutoAssignButton: false, 1558 // // Hides the join breakout room button. 1559 // hideJoinRoomButton: false, 1560 // }, 1561 1562 // When true, virtual background feature will be disabled. 1563 // disableVirtualBackground: false, 1564 1565 // When true the user cannot add more images to be used as virtual background. 1566 // Only the default ones from will be available. 1567 // disableAddingBackgroundImages: false, 1568 1569 // Disables using screensharing as virtual background. 1570 // disableScreensharingVirtualBackground: false, 1571 1572 // Sets the background transparency level. '0' is fully transparent, '1' is opaque. 1573 // backgroundAlpha: 1, 1574 1575 // The URL of the moderated rooms microservice, if available. If it 1576 // is present, a link to the service will be rendered on the welcome page, 1577 // otherwise the app doesn't render it. 1578 // moderatedRoomServiceUrl: 'https://moderated.meet.epicenter.works', 1579 1580 // If true, tile view will not be enabled automatically when the participants count threshold is reached. 1581 // disableTileView: true, 1582 1583 // If true, the tiles will be displayed contained within the available space rather than enlarged to cover it, 1584 // with a 16:9 aspect ratio (old behaviour). 1585 // disableTileEnlargement: true, 1586 1587 // Controls the visibility and behavior of the top header conference info labels. 1588 // If a label's id is not in any of the 2 arrays, it will not be visible at all on the header. 1589 // conferenceInfo: { 1590 // // those labels will not be hidden in tandem with the toolbox. 1591 // alwaysVisible: ['recording', 'raised-hands-count'], 1592 // // those labels will be auto-hidden in tandem with the toolbox buttons. 1593 // autoHide: [ 1594 // 'subject', 1595 // 'conference-timer', 1596 // 'participants-count', 1597 // 'e2ee', 1598 // 'transcribing', 1599 // 'video-quality', 1600 // 'insecure-room', 1601 // 'highlight-moment', 1602 // 'top-panel-toggle', 1603 // ] 1604 // }, 1605 1606 // Hides the conference subject 1607 // hideConferenceSubject: false, 1608 1609 // Hides the conference timer. 1610 // hideConferenceTimer: false, 1611 1612 // Hides the recording label 1613 // hideRecordingLabel: false, 1614 1615 // Hides the participants stats 1616 hideParticipantsStats: true, 1617 1618 // Sets the conference subject 1619 // subject: 'Conference Subject', 1620 1621 // Sets the conference local subject 1622 // localSubject: 'Conference Local Subject', 1623 1624 // This property is related to the use case when jitsi-meet is used via the IFrame API. When the property is true 1625 // jitsi-meet will use the local storage of the host page instead of its own. This option is useful if the browser 1626 // is not persisting the local storage inside the iframe. 1627 // useHostPageLocalStorage: true, 1628 1629 // Etherpad ("shared document") integration. 1630 // 1631 // If set, add a "Open shared document" link to the bottom right menu that 1632 // will open an etherpad document. 1633 // etherpad_base: 'https://your-etherpad-installati.on/p/', 1634 1635 // To enable information about dial-in access to meetings you need to provide 1636 // dialInNumbersUrl and dialInConfCodeUrl. 1637 // dialInNumbersUrl returns a json array of numbers that can be used for dial-in. 1638 // {"countryCode":"US","tollFree":false,"formattedNumber":"+1 123-456-7890"} 1639 // dialInConfCodeUrl is the conference mapper converting a meeting id to a PIN used for dial-in 1640 // or the other way around (more info in resources/cloud-api.swagger) 1641 1642 // List of undocumented settings used in jitsi-meet 1643 /** 1644 _immediateReloadThreshold 1645 debug 1646 debugAudioLevels 1647 deploymentInfo 1648 dialOutAuthUrl 1649 dialOutCodesUrl 1650 dialOutRegionUrl 1651 disableRemoteControl 1652 displayJids 1653 firefox_fake_device 1654 googleApiApplicationClientID 1655 iAmRecorder 1656 iAmSipGateway 1657 microsoftApiApplicationClientID 1658 peopleSearchQueryTypes 1659 peopleSearchUrl 1660 requireDisplayName 1661 tokenAuthUrl 1662 tokenAuthUrlAutoRedirect 1663 tokenLogoutUrl 1664 */ 1665 1666 /** 1667 * This property can be used to alter the generated meeting invite links (in combination with a branding domain
1668 * which is retrieved internally by jitsi meet) (e.g. https://meet.jit.si/someMeeting 1669 * can become https://brandedDomain/roomAlias) 1670 */ 1671 // brandingRoomAlias: null, 1672 1673 // List of undocumented settings used in lib-jitsi-meet 1674 /** 1675 _peerConnStatusOutOfLastNTimeout 1676 _peerConnStatusRtcMuteTimeout 1677 avgRtpStatsN 1678 callStatsConfIDNamespace 1679 callStatsCustomScriptUrl 1680 desktopSharingSources 1681 disableAEC 1682 disableAGC 1683 disableAP 1684 disableHPF 1685 disableLocalStats 1686 disableNS 1687 enableTalkWhileMuted 1688 forceJVB121Ratio 1689 forceTurnRelay 1690 hiddenDomain 1691 hiddenFromRecorderFeatureEnabled 1692 ignoreStartMuted 1693 websocketKeepAlive 1694 websocketKeepAliveUrl 1695 */ 1696 1697 /** 1698 * Default interval (milliseconds) for triggering mouseMoved iframe API event 1699 */ 1700 mouseMoveCallbackInterval: 1000, 1701 1702 /** 1703 Use this array to configure which notifications will be shown to the user 1704 The items correspond to the title or description key of that notification 1705 Some of these notifications also depend on some other internal logic to be displayed or not, 1706 so adding them here will not ensure they will always be displayed 1707 1708 A falsy value for this prop will result in having all notifications enabled (e.g null, undefined, false) 1709 */ 1710 // notifications: [ 1711 // 'connection.CONNFAIL', // shown when the connection fails, 1712 // 'dialog.cameraNotSendingData', // shown when there's no feed from user's camera 1713 // 'dialog.kickTitle', // shown when user has been kicked 1714 // 'dialog.liveStreaming', // livestreaming notifications (pending, on, off, limits) 1715 // 'dialog.lockTitle', // shown when setting conference password fails 1716 // 'dialog.maxUsersLimitReached', // shown when maximmum users limit has been reached 1717 // 'dialog.micNotSendingData', // shown when user's mic is not sending any audio 1718 // 'dialog.passwordNotSupportedTitle', // shown when setting conference password fails due to password format 1719 // 'dialog.recording', // recording notifications (pending, on, off, limits) 1720 // 'dialog.remoteControlTitle', // remote control notifications (allowed, denied, start, stop, error) 1721 // 'dialog.reservationError', 1722 // 'dialog.serviceUnavailable', // shown when server is not reachable 1723 // 'dialog.sessTerminated', // shown when there is a failed conference session 1724 // 'dialog.sessionRestarted', // show when a client reload is initiated because of bridge migration 1725 // 'dialog.tokenAuthFailed', // show when an invalid jwt is used 1726 // 'dialog.tokenAuthFailedWithReasons', // show when an invalid jwt is used with the reason behind the error 1727 // 'dialog.transcribing', // transcribing notifications (pending, off) 1728 // 'dialOut.statusMessage', // shown when dial out status is updated. 1729 // 'liveStreaming.busy', // shown when livestreaming service is busy 1730 // 'liveStreaming.failedToStart', // shown when livestreaming fails to start 1731 // 'liveStreaming.unavailableTitle', // shown when livestreaming service is not reachable 1732 // 'lobby.joinRejectedMessage', // shown when while in a lobby, user's request to join is rejected 1733 // 'lobby.notificationTitle', // shown when lobby is toggled and when join requests are allowed / denied 1734 // 'notify.chatMessages', // shown when receiving chat messages while the chat window is closed 1735 // 'notify.disconnected', // shown when a participant has left 1736 // 'notify.connectedOneMember', // show when a participant joined 1737 // 'notify.connectedTwoMembers', // show when two participants joined simultaneously 1738 // 'notify.connectedThreePlusMembers', // show when more than 2 participants joined simultaneously 1739 // 'notify.leftOneMember', // show when a participant left 1740 // 'notify.leftTwoMembers', // show when two participants left simultaneously 1741 // 'notify.leftThreePlusMembers', // show when more than 2 participants left simultaneously 1742 // 'notify.grantedTo', // shown when moderator rights were granted to a participant 1743 // 'notify.hostAskedUnmute', // shown to participant when host asks them to unmute 1744 // 'notify.invitedOneMember', // shown when 1 participant has been invited 1745 // 'notify.invitedThreePlusMembers', // shown when 3+ participants have been invited 1746 // 'notify.invitedTwoMembers', // shown when 2 participants have been invited 1747 // 'notify.kickParticipant', // shown when a participant is kicked 1748 // 'notify.linkToSalesforce', // shown when joining a meeting with salesforce integration 1749 // 'notify.moderationStartedTitle', // shown when AV moderation is activated 1750 // 'notify.moderationStoppedTitle', // shown when AV moderation is deactivated 1751 // 'notify.moderationInEffectTitle', // shown when user attempts to unmute audio during AV moderation 1752 // 'notify.moderationInEffectVideoTitle', // shown when user attempts to enable video during AV moderation 1753 // 'notify.moderationInEffectCSTitle', // shown when user attempts to share content during AV moderation 1754 // 'notify.mutedRemotelyTitle', // shown when user is muted by a remote party 1755 // 'notify.mutedTitle', // shown when user has been muted upon joining, 1756 // 'notify.newDeviceAudioTitle', // prompts the user to use a newly detected audio device 1757 // 'notify.newDeviceCameraTitle', // prompts the user to use a newly detected camera 1758 // 'notify.participantWantsToJoin', // shown when lobby is enabled and participant requests to join meeting 1759 // 'notify.passwordRemovedRemotely', // shown when a password has been removed remotely 1760 // 'notify.passwordSetRemotely', // shown when a password has been set remotely 1761 // 'notify.raisedHand', // shown when a partcipant used raise hand, 1762 // 'notify.startSilentTitle', // shown when user joined with
1762no audio 1763 // 'notify.unmute', // shown to moderator when user raises hand during AV moderation 1764 // 'notify.videoMutedRemotelyTitle', // shown when user's video is muted by a remote party, 1765 // 'prejoin.errorDialOut', 1766 // 'prejoin.errorDialOutDisconnected', 1767 // 'prejoin.errorDialOutFailed', 1768 // 'prejoin.errorDialOutStatus', 1769 // 'prejoin.errorStatusCode', 1770 // 'prejoin.errorValidation', 1771 // 'recording.busy', // shown when recording service is busy 1772 // 'recording.failedToStart', // shown when recording fails to start 1773 // 'recording.unavailableTitle', // shown when recording service is not reachable 1774 // 'toolbar.noAudioSignalTitle', // shown when a broken mic is detected 1775 // 'toolbar.noisyAudioInputTitle', // shown when noise is detected for the current microphone 1776 // 'toolbar.talkWhileMutedPopup', // shown when user tries to speak while muted 1777 // 'transcribing.failedToStart', // shown when transcribing fails to start 1778 // ], 1779 1780 // List of notifications to be disabled. Works in tandem with the above setting. 1781 // disabledNotifications: [], 1782 1783 // Prevent the filmstrip from autohiding when screen width is under a certain threshold 1784 // disableFilmstripAutohiding: false, 1785 1786 // filmstrip: { 1787 // // Disable the vertical/horizonal filmstrip. 1788 // disabled: false, 1789 // // Disables user resizable filmstrip. Also, allows configuration of the filmstrip 1790 // // (width, tiles aspect ratios) through the interfaceConfig options. 1791 // disableResizable: false, 1792 1793 // // Disables the stage filmstrip 1794 // // (displaying multiple participants on stage besides the vertical filmstrip) 1795 // disableStageFilmstrip: false, 1796 1797 // // Default number of participants that can be displayed on stage. 1798 // // The user can change this in settings. Number must be between 1 and 6. 1799 // stageFilmstripParticipants: 1, 1800 1801 // // Disables the top panel (only shown when a user is sharing their screen). 1802 // disableTopPanel: false, 1803 1804 // // The minimum number of participants that must be in the call for 1805 // // the top panel layout to be used. 1806 // minParticipantCountForTopPanel: 50, 1807 // }, 1808 1809 // Tile view related config options. 1810 // tileView: { 1811 // // Whether tileview should be disabled. 1812 // disabled: false, 1813 // // The optimal number of tiles that are going to be shown in tile view. Depending on the screen size it may 1814 // // not be possible to show the exact number of participants specified here. 1815 // numberOfVisibleTiles: 25, 1816 // }, 1817 1818 // Specifies whether the chat emoticons are disabled or not 1819 // disableChatSmileys: false, 1820 1821 // Settings for the GIPHY integration. 1822 // giphy: { 1823 // // Whether the feature is enabled or not. 1824 // enabled: false, 1825 // // SDK API Key from Giphy. 1826 // sdkKey: '', 1827 // // Display mode can be one of: 1828 // // - tile: show the GIF on the tile of the participant that sent it. 1829 // // - chat: show the GIF as a message in chat 1830 // // - all: all of the above. This is the default option 1831 // displayMode: 'all', 1832 // // How long the GIF should be displayed on the tile (in milliseconds). 1833 // tileTime: 5000, 1834 // // Limit results by rating: g, pg, pg-13, r. Default value: g. 1835 // rating: 'pg', 1836 // // The proxy server url for giphy requests in the web app. 1837 // proxyUrl: 'https://giphy-proxy.example.com', 1838 // }, 1839 1840 // Logging 1841 // logging: { 1842 // // Default log level for the app and lib-jitsi-meet. 1843 // defaultLogLevel: 'trace', 1844 // // Option to disable LogCollector (which stores the logs on CallStats). 1845 // //disableLogCollector: true, 1846 // // Individual loggers are customizable. 1847 // loggers: { 1848 // // The following are too verbose in their logging with the default level. 1849 // 'modules/RTC/TraceablePeerConnection.js': 'info', 1850 // 'modules/statistics/CallStats.js': 'info', 1851 // 'modules/xmpp/strophe.util.js': 'log', 1852 // }, 1853 1854 // Application logo url 1855 // defaultLogoUrl: 'images/watermark.svg', 1856 1857 // Settings for the Excalidraw whiteboard integration. 1858 // whiteboard: { 1859 // // Whether the feature is enabled or not. 1860 // enabled: true, 1861 // // The server used to support whiteboard collaboration. 1862 // // https://github.com/jitsi/excalidraw-backend 1863 // collabServerBaseUrl: 'https://excalidraw-backend.example.com', 1864 // }, 1865 1866 // The watchRTC initialize config params as described : 1867 // https://testrtc.com/docs/installing-the-watchrtc-javascript-sdk/#h-set-up-the-sdk 1868 // https://www.npmjs.com/package/@testrtc/watchrtc-sdk 1869 // watchRTCConfigParams: { 1870 // /** Watchrtc api key */ 1871 // rtcApiKey: string; 1872 // /** Identifier for the session */ 1873 // rtcRoomId?: string; 1874 // /** Identifier for the current peer */ 1875 // rtcPeerId?: string; 1876 // /** 1877 // * ["tag1", "tag2", "tag3"] 1878 // * @deprecated use 'keys' instead 1879 // */ 1880 // rtcTags?: string[]; 1881 // /** { "key1": "value1", "key2": "value2"} */ 1882 // keys?: any; 1883 // /** Enables additional logging */ 1884 // debug?: boolean; 1885 // rtcToken?: string; 1886 // /** 1887 // * @deprecated No longer needed. Use "proxyUrl" instead. 1888 // */ 1889 // wsUrl?: string; 1890 // proxyUrl?: string; 1891 // console?: { 1892 // level: string; 1893 // override: boolean; 1894 // }; 1895 // allowBrowserLogCollection?: boolean; 1896 // collectionInterval?: number;
1897 // logGetStats?: boolean; 1898 // }, 1899}; 1900 1901// Temporary backwards compatibility with old mobile clients. 1902config.flags = config.flags || {}; 1903config.flags.sourceNameSignaling = true; 1904config.flags.sendMultipleVideoStreams = true; 1905config.flags.receiveMultipleVideoStreams = true; 1906 1907// Set the default values for JaaS customers 1908if (enableJaaS) { 1909 config.dialInNumbersUrl = 'https://conference-mapper.jitsi.net/v1/access/dids'; 1910 config.dialInConfCodeUrl = 'https://conference-mapper.jitsi.net/v1/access'; 1911 config.roomPasswordNumberOfDigits = 10; // skip re-adding it (do not remove comment) 1912} 1913</script>
1913<!-- adapt to your needs, i.e. set hosts and bosh path --> 1914
1914<script>/* eslint-disable no-unused-vars, no-var, max-len */ 1915/* eslint sort-keys: ["error", "asc", {"caseSensitive": false}] */ 1916 1917/** 1918 * !!!IMPORTANT!!! 1919 * 1920 * This file is considered deprecated. All options will eventually be moved to 1921 * config.js, and no new options should be added here. 1922 */ 1923 1924var interfaceConfig = { 1925 APP_NAME: 'Jitsi Meet', 1926 AUDIO_LEVEL_PRIMARY_COLOR: 'rgba(255,255,255,0.4)', 1927 AUDIO_LEVEL_SECONDARY_COLOR: 'rgba(255,255,255,0.2)', 1928 1929 /** 1930 * A UX mode where the last screen share participant is automatically 1931 * pinned. Valid values are the string "remote-only" so remote participants 1932 * get pinned but not local, otherwise any truthy value for all participants, 1933 * and any falsy value to disable the feature. 1934 * 1935 * Note: this mode is experimental and subject to breakage. 1936 */ 1937 AUTO_PIN_LATEST_SCREEN_SHARE: 'remote-only', 1938 BRAND_WATERMARK_LINK: '', 1939 1940 CLOSE_PAGE_GUEST_HINT: false, // A html text to be shown to guests on the close page, false disables it 1941 1942 DEFAULT_BACKGROUND: '#040404', 1943 DEFAULT_WELCOME_PAGE_LOGO_URL: 'images/watermark.svg', 1944 1945 DISABLE_DOMINANT_SPEAKER_INDICATOR: false, 1946 1947 /** 1948 * If true, notifications regarding joining/leaving are no longer displayed. 1949 */ 1950 DISABLE_JOIN_LEAVE_NOTIFICATIONS: false, 1951 1952 /** 1953 * If true, presence status: busy, calling, connected etc. is not displayed. 1954 */ 1955 DISABLE_PRESENCE_STATUS: false, 1956 1957 /** 1958 * Whether the speech to text transcription subtitles panel is disabled. 1959 * If {@code undefined}, defaults to {@code false}. 1960 * 1961 * @type {boolean} 1962 */ 1963 DISABLE_TRANSCRIPTION_SUBTITLES: false, 1964 1965 /** 1966 * Whether or not the blurred video background for large video should be 1967 * displayed on browsers that can support it. 1968 */ 1969 DISABLE_VIDEO_BACKGROUND: false, 1970 1971 DISPLAY_WELCOME_FOOTER: true, 1972 DISPLAY_WELCOME_PAGE_ADDITIONAL_CARD: false, 1973 DISPLAY_WELCOME_PAGE_CONTENT: false, 1974 DISPLAY_WELCOME_PAGE_TOOLBAR_ADDITIONAL_CONTENT: false, 1975 1976 ENABLE_DIAL_OUT: true, 1977 1978 FILM_STRIP_MAX_HEIGHT: 120, 1979 1980 GENERATE_ROOMNAMES_ON_WELCOME_PAGE: true, 1981 1982 /** 1983 * Hide the invite prompt in the header when alone in the meeting. 1984 */ 1985 HIDE_INVITE_MORE_HEADER: false, 1986 1987 JITSI_WATERMARK_LINK: 'https://jitsi.org', 1988 1989 LANG_DETECTION: true, // Allow i18n to detect the system language 1990 LOCAL_THUMBNAIL_RATIO: 16 / 9, // 16:9 1991 1992 /** 1993 * Maximum coefficient of the ratio of the large video to the visible area 1994 * after the large video is scaled to fit the window. 1995 * 1996 * @type {number} 1997 */ 1998 MAXIMUM_ZOOMING_COEFFICIENT: 1.3, 1999 2000 /** 2001 * Whether the mobile app Jitsi Meet is to be promoted to participants 2002 * attempting to join a conference in a mobile Web browser. If 2003 * {@code undefined}, defaults to {@code true}. 2004 * 2005 * @type {boolean} 2006 */ 2007 MOBILE_APP_PROMO: true, 2008 2009 // Names of browsers which should show a warning stating the current browser 2010 // has a suboptimal experience. Browsers which are not listed as optimal or 2011 // unsupported are considered suboptimal. Valid values are: 2012 // chrome, chromium, electron, firefox , safari, webkit 2013 OPTIMAL_BROWSERS: [ 'chrome', 'chromium', 'firefox', 'electron', 'safari', 'webkit' ], 2014 2015 POLICY_LOGO: null, 2016 PROVIDER_NAME: 'Jitsi', 2017 2018 /** 2019 * If true, will display recent list 2020 * 2021 * @type {boolean} 2022 */ 2023 RECENT_LIST_ENABLED: true, 2024 REMOTE_THUMBNAIL_RATIO: 1, // 1:1 2025 2026 SETTINGS_SECTIONS: [ 'devices', 'language', 'moderator', 'profile', 'calendar', 'shortcuts', 'sounds', 'more' ], 2027 2028 /** 2029 * Specify which sharing features should be displayed. If the value is not set 2030 * all sharing features will be shown. You can set [] to disable all. 2031 */ 2032 // SHARING_FEATURES: ['email', 'url', 'dial-in', 'embed'], 2033 2034 SHOW_BRAND_WATERMARK: false, 2035 2036 /** 2037 * Decides whether the chrome extension banner should be rendered on the landing page and during the meeting. 2038 * If this is set to false, the banner will not be rendered at all. If set to true, the check for extension(s) 2039 * being already installed is done before rendering. 2040 */ 2041 SHOW_CHROME_EXTENSION_BANNER: false, 2042 2043 SHOW_JITSI_WATERMARK: true, 2044 SHOW_POWERED_BY: false, 2045 SHOW_PROMOTIONAL_CLOSE_PAGE: false, 2046 2047 /* 2048 * If indicated some of the error dialogs may point to the support URL for 2049 * help. 2050 */ 2051 SUPPORT_URL: 'https://community.jitsi.org/', 2052 2053 // Browsers, in addition to those which do not fully support WebRTC, that 2054 // are not supported and should show the unsupported browser page. 2055 UNSUPPORTED_BROWSERS: [], 2056 2057 /** 2058 * Whether to show thumbnails in filmstrip as a column instead of as a row. 2059 */ 2060 VERTICAL_FILMSTRIP: true, 2061 2062 // Determines how the video would fit the screen. 'both' would fit the whole 2063 // screen, 'height' would fit the original video height to the height of the 2064 // screen, 'width' would fit the original video width to the width of the 2065 // screen respecting ratio, 'nocrop' would make the video as large as 2066 // possible and preserve aspect ratio without cropping. 2067 VIDEO_LAYOUT_FIT: 'both', 2068 2069 /** 2070 * If true, hides the video quality label indicating the resolution status 2071 * of the current large video. 2072 * 2073 * @type {boolean} 2074 */ 2075 VIDEO_QUALITY_LABEL_DISABLED: false, 2076 2077 /** 2078 * How many columns the tile view can expand to. The respected range is 2079 * between 1 and 5. 2080 */ 2081 // TILE_VIEW_MAX_COLUMNS: 5, 2082 2083 // List of undocumented settings 2084 /** 2085 INDICATOR_FONT_SIZES 2086 PHONE_NUMBER_REGEX 2087 */ 2088 2089 // -----------------DEPRECATED CONFIGS BELOW THIS LINE----------------------------- 2090 2091 /** 2092 * Specify URL for downloading ios mobile app. 2093 */ 2094 // MOBILE_DOWNLOAD_LINK_IOS: 'https://itunes.apple.com/us/app/jitsi-meet/id1165103905', 2095 2096 /** 2097 * Specify custom URL for downloading android mobile app. 2098 */ 2099 // MOBILE_DOWNLOAD_LINK_ANDROID: 'https://play.google.com/store/apps/details?id=org.jitsi.meet', 2100 2101 /** 2102 * Specify mobile app scheme for opening the app from the mobile browser. 2103 */ 2104 // APP_SCHEME: 'org.jitsi.meet', 2105 2106 // NATIVE_APP_NAME: 'Jitsi Meet', 2107 2108 /** 2109 * Hide the logo on the deep linking pages. 2110 */ 2111 // HIDE_DEEP_LINKING_LOGO: false, 2112 2113 /** 2114 * Specify the Android app package name. 2115 */
2116 // ANDROID_APP_PACKAGE: 'org.jitsi.meet', 2117 2118 /** 2119 * Specify custom URL for downloading f droid app. 2120 */ 2121 // MOBILE_DOWNLOAD_LINK_F_DROID: 'https://f-droid.org/packages/org.jitsi.meet/', 2122 2123 // Connection indicators ( 2124 // CONNECTION_INDICATOR_AUTO_HIDE_ENABLED, 2125 // CONNECTION_INDICATOR_AUTO_HIDE_TIMEOUT, 2126 // CONNECTION_INDICATOR_DISABLED) got moved to config.js. 2127 2128 // Please use disableModeratorIndicator from config.js 2129 // DISABLE_FOCUS_INDICATOR: false, 2130 2131 // Please use defaultLocalDisplayName from config.js 2132 // DEFAULT_LOCAL_DISPLAY_NAME: 'me', 2133 2134 // Please use defaultLogoUrl from config.js 2135 // DEFAULT_LOGO_URL: 'images/watermark.svg', 2136 2137 // Please use defaultRemoteDisplayName from config.js 2138 // DEFAULT_REMOTE_DISPLAY_NAME: 'Fellow Jitster', 2139 2140 // Moved to config.js as `toolbarConfig.initialTimeout`. 2141 // INITIAL_TOOLBAR_TIMEOUT: 20000, 2142 2143 // Please use `liveStreaming.helpLink` from config.js 2144 // Documentation reference for the live streaming feature. 2145 // LIVE_STREAMING_HELP_LINK: 'https://jitsi.org/live', 2146 2147 // Moved to config.js as `toolbarConfig.alwaysVisible`. 2148 // TOOLBAR_ALWAYS_VISIBLE: false, 2149 2150 // This config was moved to config.js as `toolbarButtons`. 2151 // TOOLBAR_BUTTONS: [], 2152 2153 // Moved to config.js as `toolbarConfig.timeout`. 2154 // TOOLBAR_TIMEOUT: 4000, 2155 2156 // Allow all above example options to include a trailing comma and 2157 // prevent fear when commenting out the last value. 2158 // eslint-disable-next-line sort-keys 2159 makeJsonParserHappy: 'even if last key had a trailing comma' 2160 2161 // No configuration value should follow this line. 2162}; 2163 2164/* eslint-enable no-unused-vars, no-var, max-len */ 2165</script>
2165 2166
2166<script src="libs/lib-jitsi-meet.min.js?v=9365"></script>
2166 2167
2167<script src="libs/app.bundle.min.js?v=9365"></script>
2167 2168 <title>Jitsi Meet</title> 2169<meta property="og:title" content="Jitsi Meet"/> 2170<meta property="og:image" content="images/jitsilogo.png?v=1"/> 2171<meta property="og:description" content="Join a WebRTC video conference powered by the Jitsi Videobridge"/> 2172<meta description="Join a WebRTC video conference powered by the Jitsi Videobridge"/> 2173<meta itemprop="name" content="Jitsi Meet"/> 2174<meta itemprop="description" content="Join a WebRTC video conference powered by the Jitsi Videobridge"/> 2175<meta itemprop="image" content="images/jitsilogo.png?v=1"/> 2176<link rel="icon" href="images/favicon.svg?v=1"> 2177 2178 <template id = "welcome-page-additional-content-template"></template> 2179 2180 <template id = "welcome-page-additional-card-template"></template> 2181 2182 <template id="settings-toolbar-additional-content-template"></template> 2183 2184 </head> 2185 <body> 2186 <noscript aria-hidden="true"> 2187 <div>JavaScript is disabled. </br>For this site to work you have to enable JavaScript.</div> 2188 </noscript> 2189 2190 <div id="react" role="main"></div> 2191 </body> 2192</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.