Correção falha na migration da ultima atualização

This commit is contained in:
2026-08-24 17:46:24 -03:00
parent 479c1481f4
commit 9451467b0a
3 changed files with 90 additions and 14 deletions

View File

@@ -1,9 +1,11 @@
# app/services/notificacao/teste_whatsapp.rb
#
# Dispara um WhatsApp de teste pelo Twilio para o número administrativo e
# traduz o código de erro da API para uma instrução acionável em português —
# os erros de Sandbox (opt-in) são de longe os mais comuns e o código cru
# ("63003") não diz nada para quem está configurando.
# Dispara um WhatsApp de teste para o número administrativo, pelo provedor
# escolhido na tela (QR/Baileys ou Twilio).
#
# No Twilio, traduz o código de erro da API para uma instrução acionável em
# português — os erros de Sandbox (opt-in) são de longe os mais comuns e o
# código cru ("63003") não diz nada para quem está configurando.
module Notificacao
class TesteWhatsapp
MENSAGENS = {
@@ -26,7 +28,8 @@ module Notificacao
def initialize(config = ConfiguracaoNotificacao.instancia, destino: nil)
@config = config
@destino = ConfiguracaoNotificacao.canal(destino.presence || config.whatsapp_admin)
@numero = ConfiguracaoNotificacao.normalizar_telefone(destino.presence || config.whatsapp_admin)
@destino = @numero && ConfiguracaoNotificacao.canal(@numero)
end
def executar
@@ -35,6 +38,21 @@ module Notificacao
'(ex.: 11 92005-1157) antes de testar.')
end
@config.baileys? ? via_qr : via_twilio
end
private
# Modo QR: quem responde é a ponte Baileys (container `whatsapp`). Os erros
# dela já vêm traduzidos pelo ClienteWhatsapp.
def via_qr
resposta = ClienteWhatsapp.padrao.enviar(para: @numero, texto: corpo)
return Resultado.falha(resposta.erro.to_s) unless resposta.ok?
Resultado.sucesso("WhatsApp de teste enviado para #{@numero} pela ponte QR.")
end
def via_twilio
credenciais = @config.credenciais_whatsapp
if credenciais.blank?
return Resultado.falha('Marque "Ativar WhatsApp" e preencha Account SID, Auth Token e o ' \
@@ -63,11 +81,9 @@ module Notificacao
Resultado.falha("Falha inesperada ao enviar (#{e.class}).", e.message)
end
private
def corpo
"✅ Teste do Reem Notas\n" \
"Se você recebeu esta mensagem, a integração com o Twilio está funcionando.\n" \
"Se você recebeu esta mensagem, o envio de WhatsApp está funcionando.\n" \
"Enviado em #{Time.current.strftime('%d/%m/%Y às %H:%M')}."
end
end