Can I block the ability of one participant to turn on the microphone, turn on the camera and share the screen in the same room and leave this ability to other users?
Yep @wwweb2401 so something like this is possible with owner-only broadcasts, which are possible with the plugin.
In this case, only users with a meeting owner token will be able to turn on the camera, unmute the mic, and share the screen. All other users wonât have this ability. They will just be viewers. Hereâs a sample editor and demo
To enable someone to speak when they join a room, youâll need to set the room itself to yes for owner-only broadcast
\
For the people who can speak, youâll create an owner-meeting token
and then share that token when they join the room
Thanks, Lola.
Hi @lola,
Love your plugin, super simple to integrate - awesome stuff!
Was hoping you could help me with two things:
A. By using the âget recording / get recording linkâ workflow, I am currently able to get the s3 download link / URL - but is it possible to download the file directly into the Bubble File Manager? Or do you have any ideas around how to do that?
B. Also (less important than A); Iâd like to record all meetings - is it possible to have meeting pre-set to record, rather than having to click the ârecord screenâ button each time?
Thank you again!
Kind regards,
Here are some answers.
A. Youâll get a download link from the get recording call, it doesnât currently support a file format that you can place directly into your bubble storage but you can specify a custom s3 bucket if you want to use your own Amazon storage instead of Dailyâs. Hereâs a piece about using a custom amazon S3 bucket and settingthat up. Youâll do that on the domain level so once you set it up all your recordings will go to your own Amazon storage.
B.
If youâd like a room to automatically start recording once a user enters the room then youâd use the meeting token action and set start cloud recording to yes and recording type to cloud
and then share that created token when creating the room, in this workflow itâs happening in sequence but you can store the token in your bubble database to use for later
and then you could the recording will start once the user with that token enters the room.
Hereâs what that workflow editor looks like.
Ok amazing. All clear to me. Iâve got quite a bit to work with here.
Leave me with it, thank you @lola!
Hi!
This plugin is great. However I need some help! I want user B to be told when user A invites him to a voice call, and to let him join.
My app will let people text message each other in a chat (single and group chats), and from there, give the user the ability to start a voice call with the other participant(s). This other participant(s) needs to get an indication that thereâs a voice call invitation.
I realise there is a Join Room action, but how does the other participant get informed automatically?
I wonder if an action would be to check a state of a âvoice call requestedâ boolean field in the database every n seconds, and if itâs yes then look up the roomâs token in a Join Room action? I think this would be costly in database access, and slow.
Any suggestions? Thanks!
Hi @andrew36! Thanks for checking out the plugin. The bubble database way is a good bet, some folks have recreated voice calling features that way.
You could have a check every n seconds workflow or you could instead send a message or notification to the other participants as part of the request a voice chat workflow for the first user who requests that. The latter is more in line with how some others have implemented in the past. You would still need an entry in the Bubble database that has the room URL and connects it to the correct chat. And youâre correct, that would be all Bubble, as you mentioned. There isnât a built-in mechanism for sending invitations or requesting other users to join through the plugin or Dailyâs APIs.
However, one thing that the plugin and Daily APIs have is a meeting join webhook that triggers whenever someone joins a room. Hereâs a guide on setting it up with Zapier and slack and a general guide on using webhooks with Daily. I havenât tried setting the webhook destinations to Bubble, but should work too.
Youâll set up the meeting-join-webhook URL when creating the room
and hereâs a preview of what you can expect response-wise from the webhook, note that usernames and userids have to be set when creating meeting tokens and passed when joining the room.
From there, you could set up a set of actions which might include sending a notification to a user once someone like a room owner has joined the room, and that would all be a backend workflow.
Hope some of this helps!
Lola
Hi Lola, thanks so much. I actually did it another way: when someone creates a room, the user is added to a list of audio call participants. When the list >0, a conditional âjoin ongoing callâ button appears for the other chat participants to join the call. The joining users get added to the list, and they can leave with another button and have their name taken away from the list. It seems to work fine.
Hi, Iâm wondering how a user can rejoin a room automatically when he or she refreshes the page.
I currently have a âwhen page is loaded, join this roomâ workflow. The roomâs URL is stored in a field. However, it doesnât work! The room isnât joined, for some reason. Oddly, the room can be joined by manually clicking on a button that has an identical join room workflow. I just donât get it!
Any suggestions?
@lola, hi. Just spent a few days getting to know your plugin and Iâm a huge fan. Well done!
I decided to use it in my app, there is just one thing that is puzzling me and I was hoping you might have a suggestion.
I put people into 1:1 rooms, (created on Bubble), but Iâd like to have the Daily rooms generated on demand, as people join (rather than beforehand).
Iâm trying to conditionally set the join button to be a âjoin Dailyâ OR âcreate a Daily roomâ button, depending on who clicks it first. But if they both click at the same time it often results in error.
Hereâs what Iâve come up with so far, and it only works with a bit of time difference between clicks.
User 1: clicks join button (first to do so) â Create Daily room â Save URL to Bubble Room â Join Daily (URL)
User 2: clicks join button (second to do so) â (Pause 3 seconds waiting for the other user to create a Daily room) â Join Daily (URL)
Any help would be much appreciated!
Josh
Hellooo @andrew36 !
Glad you got an approach working for the audio participants the conditional with the numbers makes a ton of sense! As for automatically joining the audio call. Hereâs a working demo and the editor of joining an audio-only call on page load, the only thing to potentially check is that Group conversation in your URL is in fact a daily URL and that itâs not a private room or a broadcast which will require a meeting token as well.
Lola
Hey @josh19!
Thanks for reaching out! Instead of the pause, you could add a conditional to ensure that the room URL isnât empty when youâre trying to join it. Hereâs a spartan demo editor and demo. If there happens to be a case where a user tries to join a room that hasnât finished creating, then the flow would default to a âdo whenâ action to join the room once the URL isnât empty anymore.
Lola
Thank you @lola - Iâve borrowed some ideas from your example and it seems to have done the trick! Do you know if I should anticipate any delays when a significant amount of people (Say 100-150) try to create Daily rooms on my account at the same time?
@josh19 Shouldnât be! On the free plan, you have 50 rooms simultaneously, but if you enter a credit card you can have up to 100,000 rooms. 10,000 minutes is free each month. Hereâs more on how Dailyâs pricing works
@lola Hi, My app is a single page webapp, so I use alot of visibility and pop ups instead of pages. so when a guest enters my meeting there really is no page load so I canât go the (When page loads) Workflow trigger.
When A users clicks to enter my meeting it shows a hidden group element containing an iframe. Currently it shows guest" for each participant.
I need help using the token in order to allow users to join the meeting and automatically add their names.
Iâm heavily relying on embed or iframe. how do I go about using the token with my one page setup. Thanks
I was able to solve this. Instead of page load to the meeting, I used a button to simultaneously create a token, and enter the meeting with the attendeesâ information, apparently, I didnât need to embed daily, since it somehow miraculously appears (overlay) when âenter Meetingâ is activated.
Imagine something so easy itâs complicated.
Oh Joy happy to hear that itâs sorted, do let me know if you have any other questions @lightedcandle2018!
Hi Lola, everything is working great so far, however I do have some minor issues tho.
-
Highlight speaker.
I donât see the accent color appear around the person who is speaking when in grid mode. -
Iâm using daily on mobile and altho I have the meeting set to start in grid mode it doesnât do that on mobile but it does on desktopâŚ
-
No grid
It seems on mobile I donât have any grid mode at all. Instead, daily creates pages that have 3 attendees each in one column. Isnât a Grid view supposed to have multi column and multi rows where I can scroll down. Having a scroll down multi column grid would be preferred instead of continuously swiping right. -
Whenever I select AUDIO ONLY as the view, daily does not load. Or im not sure what Iâm supposed to seeâŚ
-
Token only works when meeting is public. When meeting is private meeting starts in view only mode.
-
Color selections are a little confusing having multiple labels called background, multiple labels called
accent, multiple labels called text, is at task to customize color. -
When I create a room from bubble, Iâm not able to give the room my own name nor am I able to add any relative information to the created room in daily, It becomes difficult to track using 30 digit room idâs. *****Critical. A dynamic field for a non unique label would be awesome.
-
Chime on entry / exit
I would like this option, and of course the switch to activate and deactivate it when needed.
Thanks again for your support.
Joel.
Hey everyone! Thank you for all the plugin comments! I wanted to share a quick how-to on using the Daily events element in this thread, since itâs newer than some of the other updates. It can be helpful for customizing the experience when users take certain actions.
You can listen to events for tasks such as redirecting users to a different page upon leaving a call, changing the active speaker for audio-only calls, and making changes to your database when users leave or join.
The events that are included in the plugin are:
-
Joined - meeting
Emitted once the local participant has joined the call. At this point, the call is considered connected. -
left-meeting
Fires once the local participant has left the call. From the local userâs perspective, this means the call has disconnected. -
participant-joined
Fires when a new remote participant has joined the call. -
participant-left
A remote participant leaves the call. -
recording-started
Emitted for all participants when a recording starts. -
recording-stopped
Emitted for all participants when a recording stops. -
active-speaker-change
Fires when the person currently talking has changed. Helpful for audion-only use-cases of the plugin if you want to change the UI when users change
The daily event elements bring call events into your bubble app. Events give you a heads-up when something interesting happens during your call. Hereâs a demo bubble editor with events.
To use events, youâll just need the element somewhere on the page. I usually put it in a hidden popup that never triggers, so itâs hidden and out of the way.
Once you add the element, youâll have access to a few events joined-meeting and left-meetings trigger when the current user joins or leaves a call, and participant-left and participant-joined trigger when someone else joins or leaves the call.
Youâll also want to add the begin listening action after you join a room so that Bubble knows to start listening for events.
Events can be helpful for things like executing actions only after a user has joined a call or want to redirect them to a separate page once theyâve left the call.