How to check if the **experience** has VoiceChat 'enabled' (not the player)

To check for players you use:

VoiceChatService:IsVoiceEnabledForUserIdAsync(localPlayerUserId)

How can you additionally check to see if the experience has VoiceChat set to ‘enabled’?

Currently IsVoiceEnabledForUserIdAsync returns true even if the experience has disabled VoiceChat. I’m looking for a way to check both game and player within a third-party-application to account for the new beta label properly:

image

7 Likes

I would suggest using Roblox API to get info of the game, but Roblox currently blocks requests to their own domain so it would need proxy

2 Likes

I can’t touch anything web-related as this is for TopbarPlus which needs to work straight outa the box for other developers. I’m ideally looking for an internal experience API related solution.

3 Likes

I don’t have voice enabled on my account, so I can’t actually test this but I do have an idea.

So as you probably know, if an experience has voice enabled & you’re in-game the little “BETA” symbol appears. From my assumption this button should appear under CoreGui, so perhaps you’d be able to check if said label exists?

1 Like

Afaik LocalScripts can’t access the CoreGui or any of its members.

The Roblox Core Scripts use game:GetEngineFeature("VoiceChatSupported") to check if VoiceChat is enabled however like so many topbar APIs this is restricted to an elevated level.

2 Likes

Without using the Web API, I don’t really believe it’s possible without some weird hacky method.

If this is for TBP (TopBarPlus), you could instead make it so the developer needs to specify if the game has voice chat is enabled with something like TBP:VoiceEnabled(boolean), however that’s probably not ideal considering how many games currently use TBP.

pointless beta tag is quite annouing

2 Likes

If it’s all we got I’ll take it :hidere:

This is one approach although I’d love to ideally automate it since third-party-applications like HD Admin, SuperBiz, etc also use TopbarPlus which can’t customize that.

the roblox topbar coregui is a horror story made worse with pennywise the dancing beta tag

4 Likes

A method would be that everytime someone joins the server, you would check with a for loop VoiceChatService:IsVoiceEnabledForUserIdAsync(localPlayerUserId) and if all returns are false, meaning no player has voice chat, then the “server” doesn’t have VC enabled.

1 Like

I’ve been tryna figure this out for about half an hour now and I can’t even find any hacky methods

  • I thought maybe using UserGameSettings may be an option since the Output Device & Input Device settings only appear when the user has access to Voice Chat in that game, however those two settings aren’t documented with UserGameSettings, so I assume you can’t get those settings.

  • I also tried finding the actual voice bubble, but that’s under CoreGUI with the Beta GUI :slightly_frowning_face:

  • Then I tried to see if you could access the actual game settings, I found this but it seems useless


Best solution until someone finds a way or until there is a way is probably either the one I mentioned earlier or depend on IsVoiceEnabledForUserIdAsync, even if it does return true if the game doesn’t have voice enabled, it’s better than everyone having an ugly gap between the chat button and the first TBP Icon.

2 Likes

I’m not sure how many places have their own VC service so I suggest reading this function

This wouldn’t work because if the experience has voice chat disabled, the API will still return true if the user does have voice chat enabled on their account, not necessarily if the game blocks access to it or not. It checks to see if they have it toggled in their settings page.

This is hogwash in my opinion mate.

Voicechat API needs to come out rather sooner than later. If we can’t have settings like ‘game.IsVoiceChatEnabled’ etc, then I’m assuming it’s coming with something like ‘VoiceChatService’. But realistically if they release VoiceChat without the API and no way to interact with it. It’s not very practical.