WebRTC Softphone Initialization Fails in Architect Flow During Zendesk Migration

Quick question about migrating our digital channel architecture from Zendesk Talk to Genesys Cloud. We are currently in the final stages of a Zendesk-to-GC migration and trying to replicate the seamless voice experience we had with Zendesk’s native web widget. In Zendesk, the softphone just worked out of the box for our agents, but here in Genesys Cloud, we are hitting a wall with the WebRTC softphone initialization.

We are using the Genesys Cloud Webchat SDK v2.4.1 and have integrated the softphone component into our custom agent desktop. The goal is to allow agents to answer voice calls directly from the digital interface, similar to how Zendesk handled unified communications. However, when an agent clicks ‘Answer’ on an incoming voice interaction routed through a specific Architect flow, the call fails to establish.

Here is the exact reproduction path:

  1. Agent logs into the custom desktop app (embedded GC iframe).
  2. Architect flow routes an inbound PSTN call to the agent’s queue.
  3. Agent clicks the ‘Answer’ button in the UI.
  4. The UI shows a ‘Connecting…’ state for 3 seconds, then throws a MediaConnectionError: ICE Gathering Timeout in the browser console.
  5. The call drops, and the interaction is marked as ‘Missed’ in the reporting dashboard.

This is particularly confusing because standard voice calls via the native GC desktop app work perfectly fine. It seems like the WebRTC handshake is failing specifically when triggered from our custom interface. We have verified that the webRtc permissions are enabled in the org settings and that the agents have the voice:call:answer role permissions.

In Zendesk, we didn’t need to worry about ICE candidates or STUN/TURN servers for internal web widgets, so this level of network configuration is new to our migration scope. Are there specific STUN server configurations required for the WebRTC softphone to function within a custom iframe environment? Or is there a known incompatibility with the v2.4.1 SDK regarding voice media streams? Any insights on how to debug the ICE failure would be greatly appreciated, as this is blocking our go-live date.

The initialization failure typically stems from mismatched media server regions. Verify the media_server_region parameter aligns with your instance’s data residency.

WebSocket connection to 'wss://media-eu-1.genesis.com' failed: 403 Forbidden

Adjust the SDK configuration to match the correct regional endpoint.

Hi there.

I usually solve this by ensuring the media_server_region in the SDK config matches the actual instance location. Mismatched regions cause immediate 403s on the WebSocket handshake, so double-check that media-eu-1 is correct for your tenant.