Closed JoshWho closed 1 month ago
Says I need to install something and gives these options
Options found here linked
https://developer.8x8.com/jaas/docs/meet-components-telephony-access
This is what it looks like
OMG this will change the game to have this enabled. Super excited.
Also can you enable the break rooms as well and every invited starts hidden? This will make it when guest call in or join vial link they start in there until we bring them to to main meeting.
How to use the jitsi numbers that already exist
Answer
To use existing Jitsi call-in numbers on a self-hosted Jitsi server or to integrate them into your use of Jitsi Meet, here's a general approach based on the information available:
Enable Dial-In Feature: If you're using a Docker setup for Jitsi, ensure you've set ENABLE_JAAS_COMPONENTS=1 in your .env file.
This setting is crucial for integrating telephony features which include dial-in capabilities.
For non-Docker setups (like on Debian or Ubuntu), during the installation or configuration process, you might be prompted to enable additional features or components related to JaaS (Jitsi as a Service), which includes dial-in numbers.
Answering 'Yes' to these prompts or configuring your setup to include these components will activate dial-in features. Configuration for Authentication and Authorization:
Ensure your Jitsi setup has authentication enabled (ENABLE_AUTH=1) and choose an authentication type (AUTH_TYPE) like internal, ldap, or jwt depending on your user management preference.
This step is necessary if you want to control who can start meetings that others can dial into.
Check Your Setup for Telephony Integration: If you've enabled the necessary components, your Jitsi interface should now show an option for inviting participants through a phone number.
This typically appears as a telephone icon or an "Invite" option that provides dial-in details.
Using the Dial-In Numbers: When you start a meeting, look for the invite or share options.
There should be a feature to show dial-in numbers.
These numbers are what participants can use to call into the meeting from a regular phone. Participants will dial the provided phone number, and they might need to enter a conference ID or pin, which should also be provided in your Jitsi meeting invite interface.
Ensure Proper Firewall and Port Configuration: Make sure that the necessary ports for Jitsi (like 443 for HTTPS, 10000 for WebRTC, etc., and any additional ports for telephony if specified) are open in your firewall.
This ensures external users can call in without issues.
Testing: Test the dial-in feature by initiating a call from a phone to one of the provided numbers to ensure everything is working as expected.
Remember, the exact steps might slightly differ based on updates to Jitsi or specific configurations of your self-hosted environment.
If you're encountering issues or if there's no straightforward option for enabling dial-in, it might be worth checking the latest documentation or community forums on X or Jitsi's official channels for any new guides or updates related to using or troubleshooting dial-in features.
Also, ensure your Jitsi server has a valid SSL certificate, as this is often required for features involving external communication like telephony.
If this is not possible in the self hosted how can we just integrate the free version of Jitsi Meet? I seen it on other apps like Delta chat. It just uses the free version and has this invite built in free.
I figured out a way to make a public server call check this out @DanielnetoDotCom
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Create a Meeting Room</title>
</head>
<body>
<h1>Click to Start a Meeting room</h1>
<button id="joinButton">Join Meeting</button>
<script>
document.getElementById('joinButton').addEventListener('click', function() {
const domain = 'meet.jit.si';
// Function to generate a random string for meeting name
function generateRandomString(length) {
let result = '';
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
for (let i = 0; i < length; i++) {
result += characters.charAt(Math.floor(Math.random() * characters.length));
}
return result;
}
// Generate a random room name
const roomName = generateRandomString(10);
// Construct the URL for the new tab
const url = `https://${domain}/${roomName}`;
// Open the Jitsi Meet in a new tab
window.open(url, '_blank');
});
</script>
</body>
</html>
Example script above
and boom
and when you go live just use your StreamKeyURL2 one that is both combined and it works perfect on the avideo website.
Made it look even better like this
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Create a JoshWho Meeting Room</title>
<style>
body {
font-family: 'Arial', sans-serif;
background: url('https://images.unsplash.com/photo-1557683311-eac922347aa1?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2015&q=80') no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
color: #fff;
}
.content {
text-align: center;
background: rgba(0, 0, 0, 0.5);
padding: 2rem;
border-radius: 10px;
}
h1 {
margin-bottom: 2rem;
text-shadow: 2px 2px 4px #000000;
}
#joinButton {
padding: 15px 30px;
font-size: 18px;
background-color: #2ECC71;
color: white;
border: none;
border-radius: 25px;
cursor: pointer;
transition: all 0.3s ease 0s;
box-shadow: 0 5px 15px rgba(0,0,0,0.3);
}
#joinButton:hover {
background-color: #27AE60;
transform: translateY(-2px);
box-shadow: 0 7px 20px rgba(0,0,0,0.4);
}
@keyframes pulse {
0% { transform: scale(1); }
50% { transform: scale(1.05); }
100% { transform: scale(1); }
}
#joinButton {
animation: pulse 2s infinite;
}
</style>
</head>
<body>
<div class="content">
<h1>Click "Join Meeting" to Start a JoshWho Meeting Room</h1>
<button id="joinButton">Join JoshWho Meeting</button>
</div>
<script>
document.getElementById('joinButton').addEventListener('click', function() {
const domain = 'meet.jit.si';
function generateRandomString(length) {
let result = '';
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
for (let i = 0; i < length; i++) {
result += characters.charAt(Math.floor(Math.random() * characters.length));
}
return result;
}
// Ensure there are no spaces in the prefix or concatenated result
const roomName = 'JoshWhoMeet-' + generateRandomString(10);
const url = `https://${domain}/${roomName}`;
window.open(url, '_blank');
});
</script>
</body>
</html>
Hello,
Here's the information regarding JaaS dial-in capabilities and our meeting setup:
Jitsi announced what use to be a paid feature for call ins, now uses there public telephony system free. They didn't update the language for this in the documents but it is what they are saying now this year for it to use the public numbers it now has free.
I am literally using it for free in my example https://www.joshwho.net/meeting.php
This should now also work once calls are enabled
says it is ready for the one we have by you on the ftj ypt domain
Access token I am not understanding what it is asking to test this though
Why not just use the free jitsi for the site? This is how I have this one setup https://www.joshwho.net/meeting.php
Using code
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Create Free video conference with free guests calling by phone, or join in browser.</title>
<!-- Basic Meta Tags -->
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Create free video conference Allow guest to call in by phone for free, or join in browser.">
<meta name="keywords" content="JoshWho, video conference, meeting room, free call, global numbers">
<meta name="author" content="JoshWho">
<meta name="rating" content="general">
<!-- Robots Meta Tag -->
<meta name="robots" content="index, follow">
<meta name="revisit-after" content="1 days">
<!-- Open Graph / Facebook -->
<meta property="og:type" content="website">
<meta property="og:url" content="https://joshwho.net/meeting.php">
<meta property="og:title" content="Create Free video conference with free guests calling by phone, or join in browser.">
<meta property="og:description" content="Create free video conference Allow guest to call in by phone for free, or join in browser.">
<meta property="og:image" content="https://joshwho.net/meetog.jpg">
<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@JoshWhoX">
<meta name="twitter:title" content="Create Free video conference with free guests calling by phone, or join in browser.">
<meta name="twitter:description" content="Allow guest to call in by phone for free, or join Conf in browser.">
<meta name="twitter:image" content="https://joshwho.net/meetog.jpg">
<meta name="twitter:image:alt" content="Image describing a meeting room setup or video conference interface">
<link rel="manifest" href="https://www.joshwho.net/superpwa-manifest.json">
<script>
// In service-worker.js
self.addEventListener('fetch', (event) => {
event.respondWith(
caches.match(event.request).then((response) => {
return response || fetch(event.request);
})
);
});
// Register this service worker in your main JS or HTML
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/service-worker.js').then(function(registration) {
console.log('Service Worker registered with scope:', registration.scope);
}).catch(function(error) {
console.log('Service worker registration failed:', error);
});
}
</script>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9946323153137862"
crossorigin="anonymous"></script>
<style>
body {
font-family: 'Arial', sans-serif;
background: url('meetingbg.jpg') no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
color: #fff;
}
.content {
text-align: center;
background: rgba(0, 0, 0, 0.5);
padding: 2rem;
border-radius: 10px;
}
h1 {
margin-bottom: 2rem;
text-shadow: 2px 2px 4px #000000;
}
#joinButton, #installApp {
padding: 15px 30px;
font-size: 18px;
color: white;
border: none;
border-radius: 25px;
cursor: pointer;
transition: all 0.3s ease 0s;
box-shadow: 0 5px 15px rgba(0,0,0,0.3);
}
#joinButton {
background-color: #2ECC71;
}
#joinButton:hover {
background-color: #27AE60;
transform: translateY(-2px);
box-shadow: 0 7px 20px rgba(0,0,0,0.4);
}
#installApp {
background-color: #007bff;
top: 10px;
right: 10px;
position: fixed;
display: none;
}
@keyframes pulse {
0% { transform: scale(1); }
50% { transform: scale(1.05); }
100% { transform: scale(1); }
}
#joinButton {
animation: pulse 2s infinite;
}
.logo {
max-width: 100%;
height: auto;
margin-bottom: 20px;
}
footer {
position: fixed;
bottom: 0;
width: 100%;
text-align: center;
background-color: rgba(0, 0, 0, 0.7);
padding: 10px 0;
}
</style>
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//analytics.joshwho.net/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '2']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- End Matomo Code -->
</head>
<body>
<div class="content">
<img src="https://joshwho.net/logo.png" alt="JoshWho Logo" class="logo">
<h1>Click "Join Meeting" to start a conference</h1>
<center><p>Create an instant live video conference room,<br> <b>Allow guest to call in by phone for free, or join in browser.</b></p></center><br>
<button id="joinButton">Join Meeting</button>
</div>
<button id="installApp">Install App</button>
<script>
var a2a_config = a2a_config || {};
a2a_config.templates = a2a_config.templates || {};
a2a_config.templates.twitter = {
text: " ${title} ${link} by @JoshWhoX",
};
</script>
<div class="a2a_kit a2a_kit_size_32 a2a_floating_style a2a_vertical_style" style="right:0px; top:150px;">
<a class="a2a_button_facebook"></a>
<a class="a2a_button_twitter"></a>
<a class="a2a_button_pinterest"></a>
<a class="a2a_button_telegram"></a>
<a class="a2a_dd" href="https://www.addtoany.com/share"></a>
</div>
<script async src="https://static.addtoany.com/menu/page.js"></script>
<script>
document.getElementById('joinButton').addEventListener('click', function() {
const domain = 'meet.jit.si';
function generateRandomString(length) {
let result = '';
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
for (let i = 0; i < length; i++) {
result += characters.charAt(Math.floor(Math.random() * characters.length));
}
return result;
}
const roomName = 'JoshWhoMeet-' + generateRandomString(10);
const url = `https://${domain}/${roomName}`;
window.open(url, '_blank');
});
let deferredPrompt;
window.addEventListener('beforeinstallprompt', (e) => {
e.preventDefault();
deferredPrompt = e;
document.getElementById('installApp').style.display = 'block';
});
document.getElementById('installApp').addEventListener('click', (e) => {
document.getElementById('installApp').style.display = 'none';
if(deferredPrompt) {
deferredPrompt.prompt();
deferredPrompt.userChoice.then((choiceResult) => {
if (choiceResult.outcome === 'accepted') {
console.log('User accepted the A2HS prompt');
} else {
console.log('User dismissed the A2HS prompt');
}
deferredPrompt = null;
});
}
});
window.addEventListener('appinstalled', (evt) => {
console.log('PWA was installed');
});
</script>
</body>
<!-- Matomo Image Tracker-->
<img referrerpolicy="no-referrer-when-downgrade" src="https://analytics.joshwho.net/matomo.php?idsite=2&rec=1" style="border:0" alt="" />
<!-- End Matomo -->
</html>
When I got to https://ftjmedia.ypt.me/TelephonyCall
I get this and it shows the Invite button
Enabled, I hope it works without cost
Hold on I guess the meet plugin need some updates
The problem is, for security reasons you are not supposed to access the meeting thru https://ftjmedia.ypt.me/TelephonyCall
I guess the caller will direct you to this meeting, but I am not sure if it will work, you must test it
Looks beautiful @DanielnetoDotCom Thank you so much
The problem is, for security reasons you are not supposed to access the meeting thru https://ftjmedia.ypt.me/TelephonyCall
I guess the caller will direct you to this meeting, but I am not sure if it will work, you must test it
It works great
Just realised there is no longer a Start Live streaming option anymore. Does that need reconfigured?
Checking
I will need more time to findout, maybe i will need to rebuild it.
I will need more time to findout, maybe i will need to rebuild it.
K no probs. Yeah I noticed the call thing was gone again. Can't wait to see it all working super excited.
Everything I have searched say to check Permissions: Ensure that your user account has the necessary permissions to go live. Sometimes, only certain roles can access this feature.
Done, I guess it is all back now.
Excellent thank you so much Looks great.
I am rebooting now, it may be back in 5 min
Also Breakout Rooms should be working now
That is really awesome. Thank you.
Today we’re launching a new way to quickly connect to the public telephone network and offer dial-in capabilities to your users without the need for hosting and managing the entire telephony infrastructure: JaaS components. You can give it a try today!
Are you running Jitsi Meet on a Debian instance or are you using Docker? Either way, you can opt-in for this feature and it will be automatically set up. A new JaaS account will be created for you and you’re good to… call.
If you’re running Jitsi Meet on Debian all you need to do is to answer ‘Yes’ to this question and you will have dial-in capability on your Jitsi instance.
Telephony as a service is our first Jitsi Meet component offered as a service, which allows your self-hosted Jitsi to connect to a cloud Jigasi and offer dial-in capabilities to your customers without the need of hosting and managing the entire telephony infrastructure (the Jigasi instance). Check out more details here on how to connect your self-hosted Jitsi Meet installation to the 8x8 public cloud telephone network.