Controlori de resurse perintență + agregate org + sincronizare internă
Resurse perintentale CRUD (extensii / utilizatori / dispozitive / voicemail): - VoipExtensiiController la ************* - VoipUsersController la /api/voip/insta...
Refactor furnizor multi-stanță + full FreePBX + Flowroute SMS
Modificarea modelului de bază: un org → multe VoipProviderInstances (a fost: un per org). Fiecare furnizor de apeluri API este acum spectaculos. Interfață tele...
Rebuild for kamo-shared-library update (remove OrganizationType, adaugati isTopLevel)
Rebuild for kamo-shared-library update (remove OrganizationType, adaugati isTopLevel)
Reconstruiește pentru actualizarea kamo-shared-library (CREATE CHILD ORG dreapta + aplica-la steaguri)
Trage noul RolRightType.CREATE CHILD ORG (id 131), cele trei aplică-la steaguri pe ChildOrgSecurityModel, cele două supraîncărcari de servicii de 13 arg, și apl...
Reconstructie pentru updatare kamo-shared-bibrary (reparatie exclusiv upsert appConfig)
Trage de cărămidă ******************** care nu mai șterge rândurile de aplicațiiConfig ale căror tipuri de servicii sunt absente din sarcina utilă a apelantului...
Reconstrucție pentru actualizare kamo-împărțit-library (rezolvator eficient)
Picks up the new AppliedModeEnforcementService methods (computeAvailabilitysMap, isAppEfficientlyEnabled, getEfficientlyEnabledAppTypes, calculEfficientFatures)...
Bump kamo-shared-library la 1.5.0 pentru aplicarea modelului aplicat
Aduce acest serviciu pe kamo-shared-library 1.5.0 astfel încât să preia noul AplicatModelEnforcementService, ChildOrgSecurityModelAppConfigentity, ServiceAvaila...
Reconstruiește pentru actualizare kamo-shared-library (reguli de forță în timp + descindere DEFAULT în Serviciul Aplicat pentru Drepturile Membre)
Declanseaza o reconstructie astfel incat acest serviciu sa preia informatiile *************** care sa aplice regulile de forta ale machetei si decalajele de la ...
Reconstruiește pentru actualizare kamo-shared-library (model principal, șabloane de rol implicit, remixator de reguli de forță)
Declanseaza o reconstructie astfel incat acest serviciu sa traga noua revizie kamo-shared-library care contine Organizatie.IndustrieTypeID, Organization.masterM...
Bump kamo-shared-library la 1.4.0
Docker Stage 1 construiește kamo-shared-library main (acum 1.4.0) și instalează el la local .m2; pompa de serviciu încă referindu-se la 1.0.0 care Maven nu a pu...
Add InternalAuthFilter + POST /api/bulktext/send for service-to-service SMS (SP3)
Handle RC webhook validation token; make body optional for verification requests
Add MMS attachment support — multipart send, base64 storage, image display
- RingCentralProvider: override sendSms with multipart/form-data MMS path - VoipMessageService: accept attachment bytes, store base64 data URL in attachmentUrl ...
Add call event webhook pipeline; branch SMS vs telephony events before processing
Add capabilities, SIP credentials, and call management REST controllers
Implement RingCentral call management methods (sip, history, voicemail, presence, queues)
Extend PhoneProvider interface with call management methods; update stubs
Explicitly stringify Long IDs in SmsController responses
**************** Long-as-string approach was not taking effect. Directly call .toString() on all Long IDs in the controller flat-map responses to guarantee no J...
Serialize Long IDs as strings to prevent JS precision loss
CockroachDB unique_rowid() generates 64-bit integers larger than Number.MAX_SAFE_INTEGER (2^53-1). JS JSON.parse silently rounds them, causing conversation ID m...
Return flat map from send endpoint to prevent LazyInitializationException
VoipMessage.conversation is FetchType.LAZY; after @Transactional commits, Jackson serializing the entity would throw LazyInitializationException causing a 500, ...
Fall back to org mainPhoneNumber when member has no VOIP config
Members without an individual MemberVoipConfig (or no fromPhoneNumber set) now use the org's mainPhoneNumber from VoipProviderConfig as the outbound number, ins...
Remove getJwtKey() from WebhookController after OAuth migration
Signature validation used jwtKey as HMAC secret which no longer exists on VoipProviderConfig. Skip validation for now consistent with ****************
Refactor RingCentral to OAuth 2.0 Authorization Code flow
- New OAuthController: /oauth/start (returns authUrl), /oauth/callback (exchanges code, saves tokens), /oauth/status, DELETE /oauth/token - OTKValidationFilte...
Read RingCentral client-id/secret from platform config, not per-org DB
Client ID and Secret identify the Kamo app on RingCentral's platform — they are shared across all orgs. Inject them from Spring Boot properties (backed by the K...
Use correct session key casing for orgID and memberID
KSessionService stores keys as orgID and memberID (capital D). Both controllers were calling .get("orgId") and .get("memberId") which always returns null, causi...
Add Dockerfile for VOIPService
Matches the shared-library + service two-stage build pattern used by EmailService and other Java services.
Like what you see shipping?
All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.
