Genesys Cloud Embeddable SDK: Microphone mute state not persisting on WebRTC call

Working on a custom desktop widget using the Genesys Cloud Embeddable Client App SDK (v2.45). We’re building a quick-action toolbar that allows agents to toggle their microphone mute status without leaving the current screen pop context.

The issue is that while the muteMicrophone method appears to execute successfully, the UI state doesn’t reflect the change, and the audio stream continues to send data to the platform.

Here’s the relevant snippet from our TypeScript component:

import { GenesysCloudEmbeddableClient } from '@genesyscloud/embeddable-sdk';

const client = GenesysCloudEmbeddableClient.getInstance();

async function toggleMicMute(isMuted: boolean) {
 try {
 console.log('Attempting to set mic mute state:', isMuted);
 await client.calling.muteMicrophone(isMuted);
 console.log('Mute command sent successfully');
 // Update local UI state
 setLocalMuteState(isMuted);
 } catch (error) {
 console.error('Failed to mute microphone:', error);
 }
}

The console logs show “Mute command sent successfully” with no errors thrown. However, when I check the call details via the API or look at the network traffic, the audio packets are still flowing. If I use the native Genesys Cloud softphone controls to mute, it works fine. But programmatically triggering it via the SDK seems to have no effect on the actual media stream.

I’ve verified that the calling module is initialized correctly and that the agent is in an active conversation state. The muteMicrophone method is documented in the SDK reference, but there’s no example showing how to verify the result or handle potential async race conditions.

Has anyone else encountered this behavior? Is there a specific event I need to listen for to confirm the mute state has been applied to the WebRTC peer connection? Or is this a known limitation with the embeddable SDK’s calling module?