Refactor de provedor multi-instanciamento + FreePBX completo + Flowroute SMS

FeatureVOIPService
Navios
24 de abril de 2026 às 22:36 UTC
Autor
Kamo
Enviar
5d98d8a

Mudança de modelo principal: uma org → muitas VoipProviderInstances (foi: uma por org). Cada chamada API de provedor agora é vigiada por instância. Interface PhoneProvider: - Novos métodos para extensão/usuário/dispositivo CRUD + áudio/transcrição de correio de voz. - Novas bandeiras de capacidade (extensionManagement, userManagement, deviceManagement, Correio de vozTranscrição). Os padrões lançam... (HTTP 501) para que os fornecedores não quebrem. Checks frontend getCapabilities () esconder/desactivar acções por prestador. - ProviderException (HTTP 502) para falhas de dependência externa. Fábrica do Provider do Telefone: - GetInstance (UUID) / ********************************************************************************************************************************************************************************************************************** substituir o legado getProvider( Long orgId); getPrimaryForOrg (Long) mantido para sites de chamadas legados (CallController, CapabilitiesController, SipController, webhook inbound). - RingCentral OAuth tokens agora escopo por (orgId, provedor, instânciaId) assim um org pode autenticar várias implantações independentes do RingCentral. - Construção FreePBX lê config json → {baseUrl, clientId, clientSecret, ignoreSslErrors} e instancia um FreePBXGraphQLClient dedicado. RingCentral (RingCentralProvider): - Construtor toma instânciaId para o contexto de log. - Novos métodos: listExtensions / createExtension / updateExtension / deleteExtension; listUsers / createUser / updateUser / deleteUser (modelosRC) tanto como tipo=Extensões do usuário); listDispositivos / createDevice / updateDevice / deleteDevice; fetchVoicemailAudio (conteúdo de anexos de fluxos) e buscarVoicemailTranscrição. FreePBX (FreePBXProvider) — implementação completa substitui o substituto: - Cache OAuth2 de clientes-credenciais através do FreePBXTokenCache (~1h TTL, auto- atualização em 401, por instance). - FreePBXGraphQLClient: GraphQL + transporte REST com opcional skip-SSL-verification para auto-assinados PBXes on-prem. - Extensões, usuários do Gerenciador de Usuários, dispositivos Endpoint Manager, voicemail list/mark-read/delete + fluxo de áudio, histórico de chamadas CDR, credenciais SIP derivado do segredo pjsip da extensão, saúde via fetchAsteriscoInfo. - SMS explicitamente não suportado (capacidade sms=false) — FreePBX não lida Transportador SMS. Flowroute SMS (FlowrouteTextProvider): - Mensagens v2.1 API com HTTP Basic (accessKey, secretKey). - Sonda de saúde atinge GET / numbers?limit=1. - Registrado com BulkTextProviderFactory através de novo valor de enum FLOWROUTE. Controladores: - VoipInstanceController (renomeado de ProviderConfigController) — CRUD completo em /api/voip/instâncias com teste/sincronização por instalação. Segredos editados em GET respostas ('***'); merge- update permite que UI round-trip campos redigidos sem A bater nas credenciais armazenadas. - BulkTextInstanceController ( renomeado de BulkTextConfigController) — mirror CRUD em /api/bulktext/instances com teste / test-send / send. - OAuthController reescrito para OAuth: iniciar, retornar, status, desligar todos tomar instânciaId. - SmsController resolve instância de membro. instanceId → org primary, attages para conversas sobremesas. - CallController / CapabilitiesController / SipController voltar para o org's Exemplar ativo primário para os objetivos de uma única instalação legados. Serviços: - instanceSyncService: pull-through cache sync — extensões/usuários/dispositivos/ mensagens de voz copiadas do provedor para as tabelas locais, linhas em falta marcadas Desconhecido. Cada sub- passo embrulhado para que uma capacidade não suportada não falhe toda a sincronização (por exemplo, FreePBX no-SMS + has-extensions). - VoipMessageService: todos os caminhos de conversação/mensagem propagam instânciaId. Testes: testes específicos pré-existentes de VoipProviderConfig removidos (cobriu o Tipos renomeados; a reescrita está fora de alcance por especificação de projeto §10 — sem TDD a infra-estrutura está sendo adicionada neste refator). Constrói verde com biblioteca de kamo-compartilhada atualizada.

Todas as alterações

Como o que vês no transporte?

Cada uma dessas atualizações pousa automaticamente em seu espaço de trabalho. Comece grátis e veja crescer semana após semana.

Começar Livre Para SempreVer Preços