Parar de dizer às pessoas para adicionar o provedor de texto que já adicionaram
Informado de uma verdadeira armação, e o relatório estava certo. Uma organização em execução O FreePBX adicionou Telnyx como provedor de texto, abriu a janela S...
Diz a um membro que falta o número, não que o seu PBX não possa enviar texto
Reportado de uma configuração real: uma organização adicionou Telnyx como provedor de texto, abriu a janela SMS, e foi dito "Este servidor de telefone é um PBX ...
Uma verificação congelada bloqueou cada provedor Telnyx e JustCall de ser criado
Adicionando um provedor de texto Telnyx 500'd. O registo chamou-o claramente e a tela disse nada útil: restrição **************************** Linha falhada con...
Perguntar se este número pode escrever, não se a org pode
O SmsGateway cresceu uma disponibilidade consciente de número() quando o roteamento se moveu para o número, e então nada chamou com um número — ambos os sites d...
A mensagem "você não pode enviar texto" parou um passo a menos da correção
FreePBX e Equipes disseram a um membro para adicionar um provedor de SMS no telefone → Fornecedores. Isso foi um conselho completo até que os números ganharam s...
Somente a operadora que possui um URL webhook pode verificar seus posts
O caminho de entrada do servidor de telefone adicionado no commit anterior verificado contra Qualquer fornecedor que tenha o número. Isso é uma superfície falsi...
Um servidor de telefone Telnyx poderia enviar mensagens e nunca receber uma
Telnyx é um servidor de telefone e uma operadora, e um perfil de mensagens Telnyx tem exatamente um URL webhook. Então uma organização que adicionou Telnyx como...
Popular um novo número antes de o persistir, não depois
save () construiu um OrgPhoneNumber vazio, persistiu nele, e então preencheu E164 e PHONE CANON — ambos NÃO NULL. Ele funciona hoje porque o gerador UUID não pr...
Um envia contrato através de todos os cinco fornecedores, e parar de cair textos de entrada
A camada de abstração SMS tinha cinco provedores discordando sobre como falhar e um caminho de entrada que descartou mensagens reais do cliente em silêncio. En...
Prove a implantação por digest, não por tag
O commit anterior para `set image' sendo um no-op silencioso. Isto afirma que resultado: após o lançamento, a tag é resolvida para uma digest As cápsulas em exe...
A reconstrução do mesmo commit não implantou nada e relatou sucesso
A imagem é marcada com o commit SHA, então reconstruir o mesmo commit produz uma referência de imagem idêntica. `kubectl set image` então não muda nada, o A imp...
Impeça um usuário de serviço ruim JWT de desativar o softphone de cada membro
Minting do próprio JWT de um membro chamado configFactory.require(inst), que insiste O servidor de telefone SERVICE-USER JWT está presente e bem formado. Essa c...
Fixo a mensagem de erro de entrada carregada de volta no redirecionamento
O callback do RingCentral coloca a sentença do próprio servidor na string de pesquisa assim a aba do membro pode dizer o que realmente deu errado — quase sempre...
Revogar a inscrição do RingCentral de um membro reatribuído, não se esqueça
Offboarding apagou a linha de credencial do membro quando eles foram removidos de um telefone servidor. Esse era o trabalho todo, enquanto a credencial só poder...
Deixe um membro RingCentral entrar em vez de cunhar um JWT
A aba de ajuste de telefone de um membro pediu uma credencial JWT, e essa foi a única Uma maneira de os ligar. Um RingCentral JWT pertence a um usuário e é cunh...
Diga a um RingCentral JWT das credenciais do aplicativo coladas em sua caixa
Um org colou as credenciais da sua aplicação RingCentral JSON — the {"clientId": ..., "clientSecret": ..., "server": ...} blob a consola de desenvolvimento most...
Deixe um lançamento terminar o que o velho pod estava fazendo
Implantes substituiu o único pod de cada serviço com nada para pegar os pedidos em Voo. Três configurações, aplicadas em toda a frota: - preStop dorme 10s ante...
Codificar os valores da consulta JustCall exatamente uma vez
O cliente construiu sua consulta com build(true), que declara os valores já codificado — por isso nada escapou. O personagem que importa é "+": cada filtro Just...
Aplicar a configuração do FreePBX após cada gravação, ou a extensão nunca atinge o Asterisco
Extensão 8777 (Aiden Perry, kamocrm) foi criada a partir de KamoCRM em 2026-09-02 e nunca mais tocou. A mutação FreePBX GraphQL `addExtension` havia escrito «us...
An account with no number to text from is a 409, not a 500
Starting a text threw IllegalStateException when neither the member nor the instance had an outbound number, which Spring turned into a 500 with a stack trace. ...
Uma fonte de verdade para as configurações da plataforma
"Conexão de teste" relatou "sem id de conta mestre" em um servidor de telefone cujo O provisionamento tinha acabado de ter sucesso, minutos antes, usando o mesm...
Um servidor de telefone semi-provisionado nunca poderia ser terminado, e disse a coisa errada
Um servidor KamoPBX de um org tem estado a reportar Erro: A instância do provedor de telefone não foi encontrada: **************************** desde que foi c...
Outbound external calls were missing from FreePBX call history
On an outbound external call FreePBX rewrites the CDR `src` to the trunk's outbound caller ID — the org's own DID — so a call ext 8080 placed to 9493747110 is r...
Uma gravação cujos bytes se foram responde 410, não 500
A mesma divisão do proxy de imagem e do download dos documentos. Uma gravação de chamada que é não no armazenamento está permanentemente não lá, e um jogador en...
A varredura de extensão não apaga mais cada atribuição de membro
MemberVoipConfigController.put escreve uma atribuição para dois lugares - - e Em seguida, limpou o segundo no seu próximo passe. Não provedor armazena IDs de me...
Dê ao codificador de texto-conversas um tiebreaker para que as datas amarradas não sejam deixadas cair
lastActivityAt, então uma conversação compartilhando que o timestamp exato foi excluído do perdido da lista permanentemente, não apenas desordenado. Atingível n...
Gate the voicemail nav conta com View VOiceMAIL
Entreguei qualquer membro autenticado mantendo uma linha do MemberVoipConfig com a contagem de mensagens de voz não lidas sem direitos, mesmo que VoipVoicemailC...
Pare RingCentral OAuth assinando inquilinos de marca branca para fora
Dois defeitos, ambos no mesmo salto, e cada um esconde o outro. RingCentral rejeita todos os valores de escopo que este aplicativo pode pedir — "invalid reques...
Tamanho da cápsula acima de seu próprio teto de pilha JVM [skip ci]
A imagem inicia a JVM com -XX:MaxRAMPercentagem=70 -XX:+ Sempre PreTouch, assim o heap sozinho pode tomar 70% do limite do recipiente e pré-toque mantém cada co...
Trabalhar com voicemail toma uma direita, não apenas lidar com PHI
VoipVoicemailController requer VER CALL LOGS em exatamente um caminho — reprodução, e apenas quando a organização lida com PHI. Listando mensagens de voz com se...
Isolar chamada ingerir por linha e link somente depois de commits
Duas falhas com uma raiz: a ingestão participou na transação da varredura. Um lançamento dentro de uma transação participante marca a transação PARTIDA Só para...
Pular extensões soft-eliminadas na varredura chamada-história
syncExtensions soft-deletes ao virar o estado para UNKNOWN em vez de remover a linha, então a lista acumula cada extensão que uma instância já teve. Cada um cus...
Feche um buraco cross-mailbox e mais seis defeitos de equipes
A revisão adversa de 6df0008 confirmou 24 achados. Os mais importantes: CRÍTICA — qualquer membro pode apagar o correio de um colega. Os identificadores de cor...
Digitalizar os repositórios MFA partilhados
O MfaEnrollmentService é um @Service na biblioteca compartilhada com kamo, então o wildcard @ComponentScan("com.kamo") nesta aplicação constrói-se isto ou não s...
Endureça o download do kubectl contra a saída flácida [skip ci]
dl.k8s.io sobre a saída do corredor diminui intermitentemente no meio da transferência: curl: (56) OpenSSL SSL read: a descriptografia falhou ou o mac de regist...
Parar de fixar o segredo wildcard-kamocrm-com expirado
wildcard-kamocrm-com era um legado multi-SAN secreto que cert-manager órfão quando o seu certificado foi remarcado para um segredo por host. Nada o renovou e ex...
Guard /internal/voip com o InternalAuthFilter conforme documentado — ele 401'd on session auth
VoipInternalSyncController sempre documentou InternalAuthFilter como sua guarda, mas /interno/voip nunca foi em PROTECTED PREFIXES nem excluído da OTK filtro de...
Comparação secreta de tempo constante (oráculo de chegada)
Substituir String.equals com MessageDigest.isIqual para que a latência da resposta não possa Vazamento do X-Internal-Auth compartilhado byte-by-byte. Varredura ...
Devolver 200 todos Falso para recursos de org não configurados
GET /api/voip/capacidades lançadas ProviderNotConfiguredException (422) quando um org não tinha provedor de telefone, registrando um erro de console vermelho em...
Excluir /api/voip/sms/templates do filtro de sessão OTK
Os terminais de modelo doc-07 SMS são chamadas internas sem sessão guardadas por InternalAuthFilter (X-Internal- Auth), mas OTKValidation O filtro ainda funcion...
Implementar POST /api/bulktext/enviar SMS transacional interno
SecurityService's BulkTextSmsClient (password-recovery + conta-settings SMS) Sempre foi postado para enviar, mas o controlador nunca foi construído, então cada ...
Construir gravação MinIO chave de objeto como fluxo de imagem
Omitir a extensão quando o FILE EXT é nulo/vazio para que o nome do objeto corresponda RecordingImagingService e ImagingController. Java string concat com null ...
Resolver a extensão do histórico de chamadas de member voip config, não phone extension
************* foi NULL para algumas extensões mesmo quando member voip config mapeou corretamente o membro para sua extensão. Utilização member voip config (a m...
Surface imaging fallback when provider has no call history
KamoPBXProvider.getCallHistory now returns null instead of throwing **************** so the 501 response no longer bypasses the imaging fallback. The provider c...
Resolve member→extension before VM/CDR provider lookup
CallController was passing memberId where FreePBX (and other PBX-style providers) expect an extension number — voicemail listing returned empty because no PBX e...
Capture o novoExtNumber como final para captura lambda no MemberVoipConfigController
o novoExtNumber é atribuído condicionalmente dentro do if (isVoipEnabled && ...) bloco, o que não torna efetivamente final. O bloco de sincronização do membro d...
Não apagar a atribuição de membros na sincronização de provedores que não possuem metadados
**************************** Sobrescrito incondicionalmente TelefoneExtension.associadoMembro com o que o provedor retornou. FreePBX (e qualquer provedor que nã...
Use extensionId as external ID, not Relay node id
FreePBX returns the same Relay id (ZXh0ZW5zaW9uOg== = "extension:") for every extension because the id field is not populated. Using it caused all extensions to...
Reescreva todas as consultas/mutações do GQL contra a introspecção do esquema ao vivo
Verifiquei cada nome e tipo de campo contra o esquema atual do FreePBX 17. Conjunto completo de correcções: Consultas: - obterAllExtensions: remover o campo 'v...
Correct GraphQL field name to fetchAsteriscoDetalhes
A API do FreePBX retorna "Você quis dizer fetchAsteriscoDetalhes?" — renomear a saúde verificar consulta e seu acessor caminho de dados em conformidade.
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.