[New Free Plugin] Daily Video Chat

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?

1 Like

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

1 Like

Thanks, Lola.

1 Like

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,

1 Like

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
image 1
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
image 2
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.

1 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!

1 Like

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

1 Like

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.

1 Like

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!
image

Any suggestions?

1 Like

@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

1 Like

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

1 Like

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?

1 Like

@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

1 Like

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.

1 Like

Oh Joy happy to hear that it’s sorted, do let me know if you have any other questions @lightedcandle2018!

2 Likes

Hi Lola, everything is working great so far, however I do have some minor issues tho.

  1. Highlight speaker.
    I don’t see the accent color appear around the person who is speaking when in grid mode.

  2. 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…

  3. 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.

  4. Whenever I select AUDIO ONLY as the view, daily does not load. Or im not sure what I’m supposed to see…

  5. Token only works when meeting is public. When meeting is private meeting starts in view only mode.

  6. 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.

  7. 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.

  8. 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.

1 Like

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.

2 Likes