- Shipped
- 6 de setembro de 2026 às 22:03 UTC
- Author
- Kamo
- Commit
- 8eaebfb
Três lacunas, e a primeira foi a característica não funcionar em tudo. TELNYX PROVISIONING FOI DEFINIDO E CHAMADO POR NADA TelnyxProvider.provision(), assegurarMemberCredential() e Todos existiam e não tinham chamadas. Então... administrador colou uma chave API, salvo, foi dito que o servidor de telefone foi criado, e nada foi criado em sua conta Telnyx - depois do que o provedor relatou vozCalls=false e sms=false com um remédio dizendo-lhes para Pressione Save, que não teria feito nada para sempre. TelnyxSetupService agora é executado em criar e em cada atualização, de forma idempotente, o caminho O registo do JustCall já faz. Ele escreve a conexão e messaging-profile ids back into configJson, por isso é um serviço e não uma linha no provedor: um provedor é construído a partir dessa configuração e não tem repositório. Atribuir um número agora menta a credencial SIP desse membro e atribui o número ao perfil de mensagens — o passo manual mais perdido, e aquele sem sintoma, porque um número não unido envia perfeitamente e nunca recebe. MMS Telnyx leva media urls, nunca bytes. JustCall já tinha resolvido exatamente isso com um link público apoiado por Redis; foi simplesmente nomeado para JustCall. Agora se estende um OutboundMediaHandoff neutro, então um bean serve tanto e nenhum site de chamada JustCall ou o teste foi alterado. Ambos os trilhos de Telnyx transportam meios de comunicação social, e cada recusa é declarada — não MMS na operadora, nenhuma transferência configurada, ou um arquivo que o editor rejeita — assim um membro nunca vê um texto chegar com o quadro silenciosamente faltando. UMA ORG CARRIER-ONly pode agora manter uma conversa Este é o limite do commit anterior documentado em vez de corrigido. VOIP CONVERSATIONS.INSTÂNCE ID é nulável (kamo-shared-library ae95b01e), então um org com números e uma operadora e nenhum servidor de telefone pode Deixá-la cair. Duas coisas que tiveram de mudar com ela: - O dedupe. SQL trata NULLs como DISTINCT, então o índice único existente pára cobrindo exatamente as linhas que isso introduz. Um índice único parcial sobre (ORG ID, MEMBRO ID, EXTERNA PHONE NUMBER) - Dois NPEs à espera do primeiro nulo. O evento NATS foi construído com Map.of, que lança um valor nulo — capturado pelo manipulador em baixo e registado em alerta, assim a janela SMS do membro simplesmente nunca atualizaria. SmsController chamado .toString() nele diretamente. DDL para ambos está em docs/sql/ e aplicado à mão; InicializerService não está implantado neste cluster.