- Shipped
- 26 Aprili 2026, 17:00 UTC
- Author
- Kamo
- Commit
- 84b462c
The /api/voip/sip/credentials endpoint now returns credentials a browser-side SIP stack can actually use: WSS transport, public domain, and a wsServers URL. - SipController resolves the member's MemberVoipConfig, validates VOIP is enabled and an extension is assigned, then routes to the member's specific instance (not the org's primary). Returns descriptive 409s when the member isn't configured rather than producing empty credentials. - SipInfo gains wsServers for SIP-over-WebSocket; SipCredentialsResult gains provider so the frontend picks the right SDK adapter (RingCentral WebPhone vs SIP.js for FreePBX/KamoPBX). - FreePBXProvider derives the SIP domain from the configured baseUrl and defaults wsServers to wss://<host>:8089/ws. Per-instance overrides (sipDomain, sipWsServer, sipWssPort, sipTransport) read from configJson cover split deployments where SIP terminates on a different hostname or Traefik terminates TLS at /ws on port 443. - PhoneProviderFactory parses the new optional configJson fields and feeds them into a SipTransportConfig record on FreePBXProvider. - RingCentralProvider tags its credentials with provider=RING_CENTRAL.