Per-member RingCentral OAuth identity + softphone SIP fixes

FeatureVOIPService
Shipped
July 8, 2026 at 9:50 PM UTC
Author
Kamo
Commit
99c2386

Softphone SIP credential fixes: - getSipCredentials: map outboundProxyBackup + stunServers (web-phone v2 needs them for WSS failover + ICE/media); throw ProviderException (502) instead of a bare RuntimeException (500) that SipController's catch missed; guard against a wrong-extension SIP identity. Per-member RingCentral connection: - RingCentralTokenResolver: resolve/refresh a member's own token with single-flight (RC rotates refresh tokens), needs-reconnect on a dead token, and revoke-on-disconnect. - OAuthController: **************** — memberId from the session only (self-serve), VoipCalling scope, PKCE; connect callback records the connected extension. - SipController + PhoneProviderFactory: the softphone registers as the member's OWN extension; returns a 200 needsMemberConnection discriminator when unconnected. - MemberVoipConfigController: expose connection status; revoke on reassignment. - New-table reads degrade gracefully if member_voip_oauth_token isn't migrated yet.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing