Twilio Integration - Lumina Flow Builder
Visão Geral
A integração Twilio do Lumina Flow Builder permite enviar SMS, MMS e realizar chamadas telefônicas automáticas usando a poderosa API do Twilio. Alcance qualquer pessoa no mundo através de comunicação tradicional (SMS/Voz) com automação completa.
O que é Twilio?
Twilio é a plataforma líder mundial para comunicação programável. Com ela você pode:
- Enviar SMS/MMS: Mensagens de texto simples ou com mídia para qualquer celular
- Fazer Chamadas: Ligações automatizadas com scripts TwiML (IVR, confirmações, pesquisas)
- Receber Chamadas/SMS: Webhooks para processar respostas de clientes
- WhatsApp API: Integração oficial do WhatsApp Business
- Verificação: Sistema de 2FA (autenticação de dois fatores)
Por que usar Twilio?
- Alcance Universal: SMS funciona em TODOS os celulares (7 bilhões de dispositivos)
- Alta Taxa de Leitura: 98% dos SMS são lidos em 3 minutos
- Confiabilidade: 99.95% uptime, entrega garantida
- Compliance: Certificado para saúde, finanças, governo
- Preço Competitivo: A partir de $0.0075 por SMS (Brasil)
Nodes Disponíveis
1. SMS Send - Envio de SMS/MMS
Envia mensagens de texto (SMS) ou mensagens com mídia (MMS) para qualquer número.
Casos de uso: - Códigos de verificação 2FA - Confirmações de pedidos - Alertas críticos - Campanhas de marketing - Notificações de entrega
Recursos: - Envio de SMS (até 1600 caracteres) - Envio de MMS (imagens, vídeos, áudio até 5MB) - Substituição de variáveis dinâmicas - Rastreamento via Message SID - Status de entrega em tempo real
Documentação Completa: SMS Send
2. Call Make - Chamadas Telefônicas Automáticas
Inicia chamadas telefônicas automatizadas com scripts TwiML personalizados.
Casos de uso: - IVR (menu telefônico interativo) - Confirmações de consultas - Pesquisas de satisfação (NPS) - Alertas de emergência - Lembretes por voz
Recursos: - Chamadas para qualquer país - Scripts TwiML (falar, gravar, coletar dígitos) - Callbacks de status da chamada - Vozes em português (pt-BR) - Roteamento inteligente
Documentação Completa: Call Make
Configuração Inicial
1. Criar Conta Twilio
- Acesse: https://www.twilio.com/try-twilio
- Crie conta gratuita (recebe $15 de crédito)
- Verifique seu número de telefone
- Acesse o Dashboard
2. Obter Credenciais
No Twilio Console Dashboard:
- Account SID:
ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(34 caracteres) - Auth Token: Clique no ícone de olho para revelar (32 caracteres)
IMPORTANTE: Nunca exponha estas credenciais! Use variáveis de ambiente.
3. Comprar Número Twilio
Para enviar SMS/Chamadas, você precisa de um número Twilio:
- Acesse: Console > Phone Numbers > Buy a Number
- Selecione país: Brazil (+55)
- Filtros: SMS, Voice (ou ambos)
- Compre o número (cerca de $1/mês)
Formato do número: +5511999887766
4. Configurar Variáveis no Lumina
{
"twilioAccountSid": "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"twilioAuthToken": "your_auth_token_here",
"twilioPhoneNumber": "+5511999887766"
}
Melhor prática: Use variáveis de ambiente:
TWILIO_ACCOUNT_SID=ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TWILIO_AUTH_TOKEN=your_auth_token_here
TWILIO_PHONE_NUMBER=+5511999887766
Exemplo Rápido: Primeiro SMS
{
"name": "Meu Primeiro SMS com Twilio",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "twilio_1",
"type": "twilio",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Enviar SMS",
"resource": "sms",
"operation": "send",
"from": "+5511999887766",
"to": "+5511988776655",
"message": "Olá! Este é meu primeiro SMS automático com Lumina Flow!",
"responseVariable": "smsResult",
"config": {
"accountSid": "{{twilioAccountSid}}",
"authToken": "{{twilioAuthToken}}"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Sucesso",
"parameters": {
"message": "SMS enviado com sucesso! SID: {{smsResult.messageSid}}"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 700, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "twilio_1" },
{ "source": "twilio_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Exemplo Rápido: Primeira Chamada
{
"name": "Minha Primeira Chamada com Twilio",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "twilio_1",
"type": "twilio",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Fazer Chamada",
"resource": "call",
"operation": "make",
"from": "+5511999887766",
"to": "+5511988776655",
"twimlUrl": "https://handler.twilio.com/twiml/EH1234567890abcdef",
"responseVariable": "callResult",
"config": {
"accountSid": "{{twilioAccountSid}}",
"authToken": "{{twilioAuthToken}}"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Sucesso",
"parameters": {
"message": "Chamada iniciada! Call SID: {{callResult.callSid}}"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 700, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "twilio_1" },
{ "source": "twilio_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
TwiML Simples (hospede em Twilio TwiML Bin):
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say voice="alice" language="pt-BR">Olá! Esta é uma chamada automática do Lumina Flow. Até logo!</Say>
<Hangup/>
</Response>
TwiML Básico
TwiML (Twilio Markup Language) é XML que controla chamadas. Principais tags:
Falar (<Say>)
<Say voice="alice" language="pt-BR">Olá, bem-vindo!</Say>
Vozes disponíveis em pt-BR:
- alice (melhor qualidade, feminina)
- man (masculina, básica)
- woman (feminina, básica)
Pausar (<Pause>)
<Pause length="2"/> <!-- 2 segundos -->
Coletar Dígitos (<Gather>)
<Gather numDigits="1" action="/resposta" method="POST" timeout="5">
<Say voice="alice" language="pt-BR">Pressione 1 para continuar.</Say>
</Gather>
Gravar (<Record>)
<Record maxLength="30" action="/gravacao" playBeep="true"/>
Discar (<Dial>)
<Dial timeout="20">+5511988776655</Dial>
Encerrar (<Hangup>)
<Hangup/>
Webhooks e Callbacks
Twilio envia webhooks para notificar eventos:
Status de SMS
Configure statusCallback no SMS Send:
POST https://lumina.app.br/webhooks/sms-status
Payload recebido:
{
"MessageSid": "SM1234567890abcdef",
"MessageStatus": "delivered",
"To": "+5511988776655",
"From": "+5511999887766",
"Body": "Mensagem enviada"
}
Status possíveis:
- queued: Fila de envio
- sent: Enviado para operadora
- delivered: Entregue
- undelivered: Não entregue
- failed: Falhou
Status de Chamada
Configure statusCallback no Call Make:
POST https://lumina.app.br/webhooks/call-status
Payload recebido:
{
"CallSid": "CA1234567890abcdef",
"CallStatus": "completed",
"CallDuration": "45",
"To": "+5511988776655",
"From": "+5511999887766"
}
Status possíveis:
- queued: Na fila
- ringing: Tocando
- in-progress: Em andamento
- completed: Completada
- busy: Ocupado
- no-answer: Não atendeu
- failed: Falhou
- canceled: Cancelada
Custos Twilio (Referência Brasil)
SMS
- SMS Enviado: $0.0075 USD por mensagem
- SMS Recebido: $0.0075 USD por mensagem
MMS
- MMS Enviado: $0.03 USD por mensagem
- MMS Recebido: $0.02 USD por mensagem
Chamadas
- Chamada Saída: $0.013 USD por minuto
- Chamada Entrada: $0.0085 USD por minuto
Números
- Número Local: $1 USD/mês
- Toll-Free (0800): $2 USD/mês
Nota: Preços aproximados. Consulte https://www.twilio.com/pricing para valores atualizados.
Limites e Rate Limits
Conta Trial (Gratuita)
- $15 de crédito inicial
- Só pode enviar para números verificados
- Marca d'água "Sent from your Twilio trial account"
Conta Paga
- SMS: 100 mensagens/segundo (padrão)
- Chamadas: 100 chamadas simultâneas (padrão)
- Sem marca d'água
- Pode solicitar aumento de limites
Solicitar aumento: 1. Console > Settings > General 2. Request Higher Rate Limits 3. Justifique caso de uso
Compliance e Boas Práticas
LGPD/GDPR
- Sempre obtenha consentimento explícito antes de enviar SMS/Chamadas
- Implemente opt-out fácil (responder STOP)
- Mantenha registro de consentimento com data/hora
- Respeite DNC (Do Not Call) lists
Horários
Permitido: - Segunda a Sexta: 9h - 18h - Sábado: 9h - 13h - Domingo/Feriados: Apenas emergências
Proibido: - Madrugada (0h - 8h) - Noite (21h - 23h59)
Conteúdo
Sempre incluir: - Nome da empresa no início - Motivo da mensagem/chamada - Forma de opt-out ("Responda STOP para cancelar")
Nunca: - Spam ou conteúdo enganoso - Informações sensíveis sem criptografia - Links encurtados suspeitos
Troubleshooting
Erro: "The 'From' number is not a valid Twilio phone number"
Causa: Número from não está registrado na sua conta.
Solução: 1. Verifique se digitou corretamente (+5511999887766) 2. Confirme que número existe em Console > Phone Numbers 3. Use formato E.164 (+ código país + número)
Erro: "Permission to send an SMS has not been enabled"
Causa: Conta trial tentando enviar para número não verificado.
Solução: 1. Verifique número em Console > Phone Numbers > Verified Caller IDs 2. Ou faça upgrade para conta paga
SMS não chega (status: undelivered)
Causas possíveis: - Número destinatário inválido - Operadora bloqueou (spam filter) - País não suportado para SMS
Solução: 1. Valide número com formato E.164 2. Verifique logs em Console > Monitor > Logs > Errors 3. Teste com seu próprio número primeiro
Chamada cai imediatamente
Causas possíveis: - TwiML URL retorna 404 ou timeout - XML mal formatado - Número bloqueado
Solução: 1. Teste TwiML URL no navegador (deve retornar XML) 2. Valide XML em https://www.twilio.com/docs/voice/twiml 3. Verifique logs em Console > Monitor > Logs > Calls
Erro: "Authentication Error"
Causa: Account SID ou Auth Token inválidos.
Solução: 1. Verifique credenciais em Console > Account 2. Confirme que não há espaços extras 3. Se rotacionou token, atualize configuração
Recursos Avançados
Messaging Services
Para envios em massa, use Messaging Service: - Distribui envios entre múltiplos números - Evita rate limit - Fallback automático
Verify API
Para 2FA robusto: - Gerencia expiração de códigos - Retentativas automáticas - Suporta SMS + Voz
Studio Flows
IVR visual no Twilio Console: - Arraste e solte widgets - Não precisa escrever TwiML - Exporta para produção
Programmable Messaging Insights
Analytics avançado: - Taxa de entrega por operadora - Tempo médio de entrega - Custos por campanha
Segurança
Proteger Credenciais
NUNCA:
const accountSid = "AC1234567890abcdef"; // ❌ Código hardcoded
SEMPRE:
const accountSid = process.env.TWILIO_ACCOUNT_SID; // ✅ Variável de ambiente
Validar Webhooks
Twilio assina webhooks com signature. Valide:
const twilio = require('twilio');
app.post('/webhook', (req, res) => {
const signature = req.headers['x-twilio-signature'];
const url = 'https://lumina.app.br/webhook';
if (twilio.validateRequest(authToken, signature, url, req.body)) {
// Webhook válido
} else {
// Webhook fraudulento
res.status(403).send('Forbidden');
}
});
IP Whitelist
Configure firewall para aceitar apenas IPs do Twilio: https://www.twilio.com/docs/infrastructure/ips
Integração com Outros Nodes
SMS + Condition
Enviar SMS e verificar status:
START → TWILIO SMS → CONDITION (status == "delivered") → MESSAGE "Entregue" / MESSAGE "Falhou"
Call + Webhook + Database
Receber resposta IVR e salvar:
START → TWILIO CALL → WEBHOOK (receber digits) → DATABASE SAVE → END
Loop + Delay + SMS
Campanha de SMS com intervalo:
START → LOOP (clientes) → TWILIO SMS → DELAY (5s) → END LOOP
Retry + SMS
Retentar SMS se falhar:
START → TWILIO SMS → CONDITION (failed?) → RETRY (max 3x) → END
Exemplos de Casos de Uso Reais
1. Sistema 2FA Banking
- Cliente solicita login
- Gera código 6 dígitos
- Envia SMS com código
- Valida código digitado
- Concede acesso se correto
2. Confirmação de Consultas Médicas
- 24h antes da consulta
- Liga para paciente
- Coleta confirmação via DTMF
- Se cancelar: libera horário
- Se confirmar: mantém agendamento
3. Alerta de Fraude em Cartão
- Sistema detecta transação suspeita
- Liga para cliente imediatamente
- Pergunta: "Você fez compra de R$ 5000?"
- Se não: Bloqueia cartão
- Se sim: Aprova transação
4. Pesquisa NPS Pós-Compra
- 7 dias após entrega
- Liga para cliente
- Coleta nota 0-10
- Agradece participação
- Registra no analytics
5. Lembrete de Boleto Vencendo
- 3 dias antes do vencimento
- Envia SMS com link de pagamento
- Se não pagar: SMS dia anterior
- Se pagar: SMS de confirmação
Links Úteis
- Twilio Console: https://console.twilio.com
- Documentação SMS: https://www.twilio.com/docs/sms
- Documentação Voice: https://www.twilio.com/docs/voice
- TwiML Reference: https://www.twilio.com/docs/voice/twiml
- Pricing: https://www.twilio.com/pricing
- Status Page: https://status.twilio.com
- Support: https://support.twilio.com
Próximos Passos
- Leia a documentação completa dos nodes:
- SMS Send
-
Crie conta Twilio e obtenha credenciais
-
Teste primeiro SMS/Chamada
-
Implemente caso de uso real
-
Configure webhooks para produção
-
Monitore analytics e otimize
Documentação criada em: 2025-01-15 Versão: 1.0 Última atualização: 2025-01-15