[mhosseinab/skills]: client handshake failure means the relay or proxy is broken: wrong scheme, a thrown exception, or upstream refusal. Upstream refused websocket with status 4xx is a URL, path, or key problem at DashScope: 401 or 403 means the key or a wrong-region key, 404 means the wrong path. ModelNotFound is a region or catalog mismatch, and AccessDenied is usually a region mismatch for legacy models. If the session is created but no transcripts arrive, check the audio path: 16 kHz mono PCM16, Base64-in-JSON not binary, and VAD threshold and silence settings. Verify credentials and endpoint independently with a minimal script before debugging app code.

Context: Realtime speech errors appear in a fixed order. Each layer names the next thing to fix, so climb the ladder instead of guessing.