Hi Lola, Thanks for your quick response. Like a leaderboard, I am trying to show the list of active participants of the video call in a separate container with their respective game points (have a field linked with each user). What approach do you suggest ?
Got it, there’s isn’t a super easy way to display that information without joining a call. The meeting information data would be the closest bet, but the data calls won’t refresh without refreshing the page. I
If they are in the call, the daily events element will actually be the most accurate and real-time info for who is in the call. To connect that information to a user in your database, you’ll need to create a meeting token for each user and include a user id. Here’s a demo of that . You’ll just need the daily events element somewhere on your page. In the demo, I put it in a hidden variables popup.
With the Daily events element, you could use that information, add a field to your user whether they’re in a call or out of a call and use that to update the status of who is active or not, so that could be an approach.
Thanks a lot Lola. This worked like magic
Hello,
I am recording video calls in the RTP-Tracks mode.
When trying to retrieve I follow:
- Get Recordings
- Get Recording Links
This then delivers a URL but when clicked receives an error - “This XML file does not appear to have any style information associated with it. The document tree is shown below.”
Looking at the documentation I imagine it has something to do with not providing the Track ID.
I believe the workflow should go Recording ID → Tracks array IDs → URL for each track… however I’m not sure this is possible with the Bubble plugin at the moment?
Hi @lola Your plugin seems ideal for our idea but I would like to know if I would be able to capture video / audio call minutes? as we will be charging users per minute of call.
Hi @josh.gain, Thanks for reaching out! You are correct for the RTP tracks, the plugin doesn’t yet support composites and retrieving them. There is an additional step and a few more API calls that are not included in the plugin at the moment.
Here’s a guide that describes the process. And here are steps 5-7, which would cover getting the URL
- Create a compositing “recipe” using the track ids from the recording info struct, and POST the recipe to
/recordings/:recording_id/composites
REST API endpoint - Get info for the new composited video from the REST API
/recordings/:recording_id/composites
- Download the recording via the
download_url
in the composited video’s info struct
Hello @phrase9! There are some workarounds, meeting information is available and if you set a userid for your participants you can filter meeting information in order to get the call duration
Here’s what is looks like to create a meeting token you’ll want something unique in the user id field
Then there’s a data source called meeting information which you can use to filter the participants duration (number is returned in seconds so be sure to divide by 60 for minutes)
and here is what it looks like to filter the list by the participant
Here’s a demo of what it looks like in the editor if you want to try it out, since meeting information is only available in the plugin as a data source it will only update on page refresh. If you want to grab the info on demand to store in a database or use in a workflow you can copy the daily add-on that’s in the plugins tab under API connector and that’s all you need to use meeting information as an action (in workflows)
Thanks for this explanation Lola, it seems straight forward enough. Another related question I forgot to ask you is whether there is either a native or work-around method to show a live call duration clock (count-up) for both video and audio calls?
@phrase9 There’s not a way to modify the UI natively to add a timer but you could add an element alongside a call that has a timer.
Here’s an example editor and here’s a demo of adding buttons alongside a call while using the call in the “custom” position. Then you can use the Daily - join meeting and Daily - left meetings event to show and hide the call elements accordingly
There is a Daily Events element that includes things like left-event and joined event, it just needs to be on the page. In the demo I hid it in a popup. Once you add that to the page you’ll have access to new events.
Once a user joins a room you’ll also want to add the start listening action that comes with the element so that the app knows to start listening for joining and leaving
Then you can use the daily left meeting and join meeting events to show and hide extra buttons accordingly.
Hey @lola - thanks for this - I am nearly finished with the manual API connector but falling at the final hurdle!!
Steps 5 & 6 are working and I get to the point where I have a Download URL for a composite.
I am then trying to run a GET request as an Action to download the mp4 file:
However I keep getting this error:
This confuses me as it is saying the problem is in authorisation but I have the previous API calls working using the Authorisation header:
Any ideas?!
@josh.gain Let me try to recreate that and i’ll have an answer by end of day tomorrow!
@josh.gain looks like you can’t actually download the file locally to your computer from the API connector with Bubble but it will work in postman or terminal. Below is the curl command, that will download the file to your computer (file name would be 00856c9-5d52-427f-cdf9-56fc0fd2d483.mp4 in the example below) so you’ll need to use an external program for that. Curious about your use case, why RTP-Tracks instead of cloud or local recording?
curl -H "Authorization: Bearer $API_KEY" 'https://api.daily.co/v1/recordings/3ab6318e-bd2d-4d9d-837a-a3a36ae7b58b/composites/00856c9-5d52-427f-cdf9-56fc0fd2d483.mp4'
Thanks Lola, what’s the limitation on the Bubble API connector side that stops this?
My app is a community where we run live interview-style virtual events into the app. I need to be able to take the individual tracks for post-edit to be reformated and styled for other platforms like our podcast and socials etc.
I was previously using Riverside.fm which was a great tool but getting the event to happen locally in our app through Daily was appealing as opposed to an external platform.
@josh.gain It has to do with this particular method since it’s saving the file directly to your home directory it’s not prompting a browser download. Actually, i most browsers won’t let you download to a file/directory without a user specifically permitting it (ie first interacting with something like the File System Access API ) for security reasons.
The recording methods that have an access link actually provide a direct link to an .mp4 file stored on Amazon S3, and that’s part of why it can be downloaded from the browser (this is the process for cloud recording)
Thanks for sharing more about your use case. Sounds like you’ll be downloading the files locally to then edit? In that case, running the call from a terminal window (mac) or your command window in windows will put the file on your computer for you to work with.
I just downloaded the plugin and it works great! I have one question, is it possible to define the theme/colors for a room so that when I send the link via mail to the user they see the right colors? Or would that only work inside of bubble with the join action?
Hi @michael.schmid!
Thanks for reaching out. The colors are only defined through the join action with this plugin, If you sent a direct link to your domain (yourdomain.daily.co/roomname), the colors wouldn’t show in that instance.
Lola
element DailyCustomVideoCall - doesnt work this element now.
https://bubble.io/page?name=index&id=nocodevideochat&tab=tabs-1 - DOESNT WORK PREVIEW
@epifanovartem Looks like it’s just the domain nocodevideochat.com that’s currently offline. The custom video element does work! Here’s a working demo (Nocodedemos | Bubble Editor). Click “join” to join a call with the custom element
Hello. Does your plugin support slideshow during a video call?
Hey @wwweb2401 you can screen share with the plugin so, so long that the slideshow is on your screen, you’d be able to share it!
Lola