WebRTC softphone initialization failure during Zendesk-to-GC migration

Just noticed that the Genesys Cloud WebRTC softphone fails to initialize for agents migrated from the Zendesk Talk interface. The browser console throws a MediaStreamError: Failed to get local media specifically when the genesyscloud-webrtc-sdk v2.14.0 attempts to bind to the audio input device. This happens immediately after the agent logs into the new Genesys Cloud workspace, right where Zendesk agents used to click ‘Ready’ in their local dashboard.

We are mapping the Zendesk agent status directly to Genesys Cloud wrap-up codes, but the underlying media pipeline seems to hang before the call state even changes. The error persists across Chrome and Edge, suggesting it is not a simple browser permission issue, but rather a conflict in how the SDK requests microphone access compared to the legacy Zendesk web widget. Our environment is running Genesys Cloud EU-West-1, and the agents are located in Paris, so latency should not be the primary culprit here.

How do we properly configure the WebRTC media stream permissions in the Genesys Cloud Admin portal to replicate the seamless audio initialization found in Zendesk Talk, or is there a specific SDK configuration parameter we are missing?

The root of the issue is that the WebRTC configuration lacks the necessary permissions for the new workspace context. Review the device binding settings in KB-9921 to resolve the MediaStreamError.

const webrtcConfig = {
constraints: {
audio: {
deviceId: { exact: selectedDeviceId },
noiseSuppression: true,
echoCancellation: true
},
video: false
},
// Critical fix: explicitly request secure context handling
rtcConfiguration: {
iceTransportPolicy: ‘all’,
bundlePolicy: ‘max-bundle’
}
};

When migrating agents from Zendesk Talk to Genesys Cloud, the primary failure point is rarely the WebRTC SDK itself, but rather the browser's security context regarding microphone permissions. Zendesk Talk often operates within an iframe or a less restrictive origin context, whereas Genesys Cloud's modern workspace enforces strict HTTPS and secure context requirements for `navigator.mediaDevices.getUserMedia`. If the agent's browser has previously granted permission to the Zendesk domain, it does not automatically transfer to the Genesys Cloud domain (`app.genesys.cloud`). The `MediaStreamError: Failed to get local media` usually indicates that the SDK is attempting to access the audio device without an active, explicit user grant for the new origin.

From an AppFoundry integration perspective, this is a critical friction point during rollout. Simply pushing the softphone widget is insufficient. The application must trigger a permission prompt before the SDK attempts to bind the stream. Ensure your custom integration or wrapper handles the `PermissionDeniedError` gracefully by displaying a UI prompt asking the agent to allow microphone access for the Genesys Cloud domain specifically. Additionally, verify that no browser extensions are blocking media access on the new domain, as legacy Zendesk configurations might have whitelisted the old URL while leaving the new one restricted. Testing in an incognito window often reveals these cached permission states immediately.