Services Plugins FAQs

Agora livestream connected to room but no video or sound

Hello. I don’t know why but as title says, the livestream says connected to room but no video or sound shows when trying to view as audience from another device.

Starting the stream is fine, the camera shows after getting the token and joining the stream. Every time I have it set to create a new stream and give it a room name (name and numbers) and then also save the token. I can join the stream fine using this as a host. However, for some reason when trying to join as audience nothing shows on the audience Agora. I checked and both are joining the same room name and with their own token, and it does say connected. See workflows:

Joining a stream as audience (doesn’t work):


So that doesn’t work. I do this of course after the livestream has been created. When I enable audio or camera, it shows the camera of the audience instead of the stream of the host at the moment (Yes, the agora is set to stream and audience).

On the other hand, joining/starting a stream as a host is fine from mobile and desktop (works):



I don’t know why the audience side can’t connect to it. It seems to be set up the same as on the demo editor as well. I’m trying for others to be able to join the stream from their own devices and be able to watch it. I would appreciate any help on why this doesn’t work.

Hi @user10 ,

Thank you for reporting the issue.

We are currently investigating the problem with joining the stream as an audience.
I’ll keep you updated on any progress and let you know as soon as we have a solution.

We appreciate your patience!

Best regards,
Support Team
Browse all Zeroqode Plugins for bubble
Banner_Last3

Thank you Constantin.

1 Like

Hi @user10 ,

Thank you for your patience.

Our team has checked the plugin and confirmed that it’s working correctly.

The issue on the demo page was caused by an incorrect mode selection when generating the token, which has now been fixed (deployment is pending).

We recommend double-checking your app settings, including certificates, generated room numbers, and connection modes.
All the necessary instructions are detailed in our updated documentation: Agora Streaming & Video Conference Plugin Docs.

Please review these settings and let us know if you still experience any issues.

Best regards,
Support Team
Browse all Zeroqode Plugins for bubble
Banner_Last3

Hi Constantin,

Thanks for getting back.

I’ve tried joining using a real time token as audience as suggested in switching the mode, but this is slightly confusing as we mean to do a livestream with multiple audience visitors at once instead of a 1-1 conference hence our setup with generating a stream audience token. I did try it however, but this didn’t work and showed this error:

I assume this happens because it’s generating a real time audience token while joining a room whose token was generated as Stream. The error doesn’t show when I join using a Stream audience token, which is what my setup in the post shows. I have checked the updated docs and everything seems the same. I can connect to the room as a host and see it in the debugger, but not as audience when generating a audience stream token and joining using the same room name. The only difference is the host joins using a host stream token, rather than an audience token.

So again, our setup joining as audience is:

Which is the same as the docs:

Do you have any other pointers?

Hi @user10 ,

Thanks for the detailed screenshots - that helps a lot.

For a multi-viewer livestream, you’re right to use Stream mode:

  • Host joins with Stream / Host.
  • Audience joins with Stream / Audience.
    The Mode and Role must match both in the element and in the Generate Agora Token action for everyone using the same room.

The error you’re seeing (TypeError … first argument must be of type string …) usually means the Token passed into the “Join AgoraRTC (audience)” step isn’t a plain text string (often empty, or an object). Please double-check:

  1. In the “Join” step, the Token field references Result of step X → Agora Temp Token (the text value), not the whole object/state.
  2. Channel/Room name is identical in both the token action and element (letters/numbers/underscore only).
  3. API Key + Certificate are set in the plugin settings, and Privilege Expired is a number (e.g., 0 or 3600).
  4. Add a short pause (100–300ms) after token generation before Join (you’ve added one - good).
  5. Update to the latest plugin version and test on a minimal page (Generate → Join only).

As an additional step, please also try the streaming functionality on our live demo page using the same devices and browsers. This will help confirm if the issue is setup-specific or reproducible on our side.

If it still fails, could you run one test with the debugger and share:

  • The exact value you get back for Agora Temp Token,
  • The Room name used in both steps,
  • A short console log/recording showing the Join step input values.

Happy to assist you further!

Best regards,
Support Team
Browse all Zeroqode Plugins for bubble
Banner_Last3

Thank you Constantin, let me give this a try and hopefully it all works well.

Hi @user10,

Sounds good :+1:
Please let us know how it goes once you test it.
If anything still doesn’t work as expected, share the details, and we’ll be glad to help further.

Best regards,
Support Team
Browse all Zeroqode Plugins for bubble
Banner_Last3

Hi Constantin,

Thanks again for your help. I tried connecting using the demonstration page as suggested and I was able to start a livestream and join it using my computer and mobile device, which is positive. However, I still don’t know where the fault is on my set up as everything looks to be the same.

Below is a text of the the token and room name used to connect. It turns green once connected to the room. The above is a repeating group with livestreams with a Join button, showing room name and the original host’s token:

To start a livestream as a host uses this workflow, which works:

/

Then this is the workflow to join, using the blue Join button from the repeating group shown above (doesn’t work):

Then below is the workflow debugged. The pink text is a snapshot of the same green text shown above.

I believe everything is set up about the same. When the room is joined then the token is different, which I suppose is meant to happen. I don’t know what more I can try. It shouldn’t be an issue with the API keys either because I can connect to the room as a host (the text turns green using the conditional when Agora is connected to room), so the issue is only when joining as audience. I also don’t enable the video or audio when joining as audience since this turns on the audience’s camera on the Agora element rather than show the host’s video.

I can host a livestream from both mobile and desktop, but I can’t join as audience on either.

Please do let me know what you think.

Hi @user10,

Thanks a lot for sharing all these details and screenshots - they’re super helpful :pray:. It’s great that you confirmed the demo page works fine on your devices, so that helps us narrow things down to a setup/config mismatch on your side rather than a core issue.

From what you’ve shared, it looks like the audience Join workflow isn’t actually passing the token value through to the AgoraRTC element (debugger shows the token as empty, while your state text shows it correctly). That’s why it works for the host but fails for the audience. A couple of things to check:

  • In your “Join AgoraRTC (audience)” step, make sure the Token field references the text output of the Generate Token step directly (Result of step X → Agora Temp Token). Sometimes if you store it in a custom state or text element first, Bubble may still pass it as empty if the state update hasn’t propagated yet.
  • Try moving the “Set state” step (where you show the token for display) after the Join action, so the token is only handled once and directly consumed by the Join step.
  • Keep the short pause (100–300ms) between token generation and Join - this ensures the API request resolves before Bubble runs the Join action.
  • Double-check that your audience element is set to Stream/Audience mode in its properties (not just in the workflow).

If possible, could you also share a quick debugger screenshot of the Token input field inside the Join action (not the display text state) at runtime? That’ll confirm if Bubble is really passing it as empty.

Once we see that, we’ll be in a good place to pinpoint why the token is being lost only for the audience flow.

Best regards,
Support Team
Browse all Zeroqode Plugins for bubble
Banner_Last3

Hi Constantin,

Thanks for getting back.

I tried placing the Join workflow before the set state but this also yields the same result, which is how I had it originally (I only added the states after so I could see why it wasn’t working). I also had tried to use the Join action using the token from the custom state instead of directly from the Generate step, but this also didn’t work.

You can see below the result while now placing the Join step before the Set state step, while continuing to Join using the Generate step’s token:

Here you can also see the Agora element that is used for the audience, as well as a screenshot of it in debug mode during this test:

I am not sure what you mean by “Token input field”, do you mean the debugged workflow while it is in the Join step? Because if so, I believe this was in one of the screenshots I sent previously. If not it is also attached here again when the Join action uses the Generate step’s direct token, but please tell me if you are referring to something else. Thanks again.


I have tried it again just now directly after the test above, and for some reason it connected although with no video, but nothing is different from the first time and the setup above (I ran it directly after the test above). The only thing changed was the pause from 1,000ms to 500ms and switching the Join workflow to go first as you said (although it’s strange because you can see the first time I tried it above it didn’t connect). It is now doing this, this was the second test where it connected (the first I couldn’t catch):

The debugged steps are the same, as well as the workflows:

I have ran it through a few times after this, and it seems to be connecting but the video and audio aren’t displaying still, which is strange since the first time it didn’t work with the same setup. I also tried to check the “Enable video” during the Join workflow after but this turns on the audience’s camera instead so I turned it back off as it made no other difference.

I also tried placing the Set state workflow back to where it was again, before the Join step, to see if this was the cause of the issue but it’s still connecting, so I’m not sure what’s going on. See it now reverted:

I must add, I’m a bit nervous that this seems slightly inconsistent in terms of it being reproducible, as we would be deploying this to dozens of users on the audience side and eventually hundreds. Please tell me what you think Constantin.

Hi @user10,

Thanks for the detailed follow-up and screenshots. I’ve also shared this inconsistency inquiry with our devs, and they’ll be looking into it.

In the meantime, could you please create a minimal test page that follows the docs exactly:
Workflow Example → How to setup a stream → Setup for Audience

First, check if the same problem appears there.

  • If it works fine, try gradually attaching your desired workflows and/or other plugins until the issue reappears - this will help identify what’s interfering.
  • If the issue still persists even on the minimal page, please share that page with us (you can add support@zeroqode.com as a collaborator) so we can investigate directly.

Best regards,
Support Team
Browse all Zeroqode Plugins for bubble
Banner_Last3

Hi again @user10,

I just wanted to let you know that we’ve updated the demo page.

Please check out the updated setup for both the host and the audience pages.
We’d like to ask if you could use these as a reference when setting up your minimal test page.

Once you’ve done that, please check if the issue persists. If it does, kindly share the test page with us as a collaborator, and we’ll investigate further.

Best regards,
Support Team
Browse all Zeroqode Plugins for bubble
Banner_Last3