@natyapp/meta 1.6.6 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/.github/copilot-instructions.md +1540 -0
  2. package/README.md +513 -40
  3. package/dist/elements/index.d.ts +1 -0
  4. package/dist/elements/index.js +1 -0
  5. package/dist/elements/mediaTemplate.d.ts +45 -0
  6. package/dist/elements/mediaTemplate.js +47 -0
  7. package/dist/elements/textTemplate.d.ts +12 -1
  8. package/dist/elements/textTemplate.js +13 -6
  9. package/dist/index.d.ts +7 -2
  10. package/dist/index.js +11 -2
  11. package/dist/interfaces/IConnection.d.ts +2 -2
  12. package/dist/interfaces/ILog.d.ts +2 -2
  13. package/dist/interfaces/ILogger.d.ts +62 -0
  14. package/dist/interfaces/ILogger.js +2 -0
  15. package/dist/interfaces/ISdk.d.ts +4 -2
  16. package/dist/interfaces/IWebhook.d.ts +2 -2
  17. package/dist/interfaces/index.d.ts +1 -0
  18. package/dist/interfaces/index.js +1 -0
  19. package/dist/queue/messageQueue.d.ts +1 -1
  20. package/dist/queue/messageQueue.js +45 -0
  21. package/dist/routes/webhooks/methods/connection.js +78 -11
  22. package/dist/routes/webhooks/methods/messages.js +18 -3
  23. package/dist/services/axiosInstances.d.ts +14 -5
  24. package/dist/services/axiosInstances.js +111 -23
  25. package/dist/services/middlewares/validations.d.ts +2 -2
  26. package/dist/services/middlewares/validations.js +1 -2
  27. package/dist/services/mutations/connection.js +1 -1
  28. package/dist/services/mutations/logs.js +1 -1
  29. package/dist/services/mutations/messages.js +1 -1
  30. package/dist/services/mutations/validation.d.ts +1 -1
  31. package/dist/services/mutations/validation.js +1 -1
  32. package/dist/services/mutations/webhooks.js +1 -1
  33. package/dist/types/logs.d.ts +1 -1
  34. package/dist/types/requestTypes.d.ts +2 -0
  35. package/dist/useCases/connection/index.d.ts +9 -9
  36. package/dist/useCases/connection/index.js +156 -7
  37. package/dist/useCases/events/NatyEvents.d.ts +4 -2
  38. package/dist/useCases/events/NatyEvents.js +13 -1
  39. package/dist/useCases/log/index.d.ts +5 -5
  40. package/dist/useCases/log/index.js +65 -3
  41. package/dist/useCases/message/whatsappResponse.d.ts +48 -22
  42. package/dist/useCases/message/whatsappResponse.js +672 -105
  43. package/dist/useCases/messages/index.d.ts +5 -5
  44. package/dist/useCases/messages/index.js +66 -3
  45. package/dist/useCases/sdk/index.d.ts +8 -4
  46. package/dist/useCases/sdk/index.js +38 -6
  47. package/dist/useCases/webhook/index.d.ts +9 -9
  48. package/dist/useCases/webhook/index.js +154 -7
  49. package/dist/utils/consoleLogger.d.ts +20 -0
  50. package/dist/utils/consoleLogger.js +51 -0
  51. package/dist/utils/index.d.ts +6 -0
  52. package/dist/utils/index.js +6 -0
  53. package/dist/utils/loggerContext.d.ts +57 -0
  54. package/dist/utils/loggerContext.js +90 -0
  55. package/dist/utils/methodContext.d.ts +34 -0
  56. package/dist/utils/methodContext.js +48 -0
  57. package/dist/utils/parseError.d.ts +12 -0
  58. package/dist/utils/parseError.js +27 -3
  59. package/dist/utils/pinoAdapter.d.ts +30 -0
  60. package/dist/utils/pinoAdapter.js +68 -0
  61. package/dist/utils/sanitize.d.ts +42 -0
  62. package/dist/utils/sanitize.js +120 -0
  63. package/dist/utils/tryCatch.d.ts +10 -1
  64. package/dist/utils/tryCatch.js +40 -5
  65. package/docs/01-visao-geral.md +355 -0
  66. package/docs/02-contexto-negocio.md +596 -0
  67. package/docs/03-arquitetura.md +925 -0
  68. package/docs/04-fluxos-funcionais.md +887 -0
  69. package/docs/05-integracoes.md +960 -0
  70. package/docs/06-entidades.md +849 -0
  71. package/docs/07-guia-pratico.md +1133 -0
  72. package/docs/08-troubleshooting.md +816 -0
  73. package/docs/README.md +125 -0
  74. package/examples/logger-example.ts +279 -0
  75. package/package.json +2 -2
  76. /package/dist/{Entities → entities}/Logs.d.ts +0 -0
  77. /package/dist/{Entities → entities}/Logs.js +0 -0
  78. /package/dist/{Entities → entities}/connection.d.ts +0 -0
  79. /package/dist/{Entities → entities}/connection.js +0 -0
  80. /package/dist/{Entities → entities}/errorLogs.d.ts +0 -0
  81. /package/dist/{Entities → entities}/errorLogs.js +0 -0
  82. /package/dist/{Entities → entities}/index.d.ts +0 -0
  83. /package/dist/{Entities → entities}/index.js +0 -0
  84. /package/dist/{Entities → entities}/messages.d.ts +0 -0
  85. /package/dist/{Entities → entities}/messages.js +0 -0
  86. /package/dist/{Entities → entities}/webhooks.d.ts +0 -0
  87. /package/dist/{Entities → entities}/webhooks.js +0 -0
  88. /package/dist/{Entities → entities}/whatsappMessage.d.ts +0 -0
  89. /package/dist/{Entities → entities}/whatsappMessage.js +0 -0
  90. /package/dist/{Errors → errors}/Either.d.ts +0 -0
  91. /package/dist/{Errors → errors}/Either.js +0 -0
  92. /package/dist/{Errors → errors}/ErrorHandling.d.ts +0 -0
  93. /package/dist/{Errors → errors}/ErrorHandling.js +0 -0
  94. /package/dist/{Errors → errors}/index.d.ts +0 -0
  95. /package/dist/{Errors → errors}/index.js +0 -0
@@ -0,0 +1,355 @@
1
+ # 01 - Visão Geral do Projeto
2
+
3
+ [⬅️ Voltar ao Índice](README.md)
4
+
5
+ ---
6
+
7
+ ## 📋 Sumário
8
+ - [Apresentação](#-apresentação)
9
+ - [Propósito e Valor de Negócio](#-propósito-e-valor-de-negócio)
10
+ - [Casos de Uso Principais](#-casos-de-uso-principais)
11
+ - [Público-Alvo](#-público-alvo)
12
+ - [Stack Tecnológico](#-stack-tecnológico)
13
+ - [Requisitos](#-requisitos)
14
+ - [Quick Start](#-quick-start)
15
+ - [Arquitetura de Alto Nível](#-arquitetura-de-alto-nível)
16
+
17
+ ---
18
+
19
+ ## 🎯 Apresentação
20
+
21
+ **@natyapp/meta** é um SDK (Software Development Kit) desenvolvido em TypeScript que simplifica a integração com a **WhatsApp Business API da Meta** (anteriormente Facebook).
22
+
23
+ O SDK atua como uma camada de abstração que encapsula a complexidade da API oficial da Meta, oferecendo aos desenvolvedores uma interface limpa, type-safe e orientada a eventos para construir soluções de comunicação empresarial via WhatsApp.
24
+
25
+ ### O que é este SDK?
26
+
27
+ É uma biblioteca que permite que aplicações Node.js/TypeScript:
28
+ - 📤 **Enviem mensagens** de texto, mídia, botões interativos e listas para clientes via WhatsApp
29
+ - 📥 **Recebam mensagens** de clientes através de webhooks configuráveis
30
+ - 🔗 **Gerenciem múltiplas conexões** WhatsApp Business de forma isolada (multi-tenancy)
31
+ - 🔐 **Automatizem gestão de credenciais** (tokens, refresh automático)
32
+ - 📊 **Monitorem e registrem** todas as interações e erros
33
+
34
+ ---
35
+
36
+ ## 💼 Propósito e Valor de Negócio
37
+
38
+ ### Problema que Resolve
39
+
40
+ A API oficial do WhatsApp Business da Meta possui:
41
+ - ❌ Estrutura de endpoints complexa e verbosa
42
+ - ❌ Gestão manual de tokens de autenticação (curta e longa duração)
43
+ - ❌ Payloads JSON complexos para mensagens interativas
44
+ - ❌ Necessidade de infraestrutura para webhooks
45
+ - ❌ Tratamento de erros não padronizado
46
+ - ❌ Falta de type safety em JavaScript
47
+
48
+ ### Solução Oferecida
49
+
50
+ O SDK Naty Meta oferece:
51
+ - ✅ **Interface simplificada** - Métodos intuitivos para cada tipo de mensagem
52
+ - ✅ **Gestão automática de tokens** - Refresh transparente de access tokens
53
+ - ✅ **Type Safety** - Totalmente tipado em TypeScript, reduzindo erros em desenvolvimento
54
+ - ✅ **Sistema de eventos** - Arquitetura event-driven para processar mensagens recebidas
55
+ - ✅ **Multi-tenancy nativo** - Suporte a múltiplas empresas e números WhatsApp
56
+ - ✅ **Tratamento de erros robusto** - Pattern Either Monad para controle de fluxo
57
+ - ✅ **Webhooks integrados** - Rotas Express prontas para uso
58
+ - ✅ **Logging completo** - Rastreamento de todas operações e erros
59
+
60
+ ### Valor para o Negócio
61
+
62
+ - **Redução de Time-to-Market:** Desenvolvedores implementam chatbots e automações 10x mais rápido
63
+ - **Menor Custo de Manutenção:** Abstração reduz dependência direta da API Meta (que muda frequentemente)
64
+ - **Escalabilidade:** Suporta múltiplos clientes/tenants com isolamento de dados
65
+ - **Confiabilidade:** Retry logic, error handling e logging profissional
66
+ - **Conformidade:** Segue best practices da Meta para WhatsApp Business
67
+
68
+ ---
69
+
70
+ ## 🎯 Casos de Uso Principais
71
+
72
+ ### 1. **Chatbots de Atendimento ao Cliente**
73
+ Automatize respostas a perguntas frequentes, triagem de atendimento e suporte 24/7.
74
+
75
+ **Exemplo:**
76
+ - Cliente envia "Olá" → Bot responde com menu de opções via botões interativos
77
+ - Cliente seleciona opção → Bot direciona para fluxo específico
78
+
79
+ ### 2. **Notificações Transacionais**
80
+ Envie confirmações de pedido, atualizações de status, alertas importantes.
81
+
82
+ **Exemplo:**
83
+ - Pedido confirmado → Envio automático de mensagem com número do pedido e prazo
84
+ - Pedido saiu para entrega → Mensagem com link de rastreamento
85
+
86
+ ### 3. **Campanhas de Marketing Interativas**
87
+ Crie listas de produtos, promoções com botões de ação rápida.
88
+
89
+ **Exemplo:**
90
+ - Envio de lista de produtos em promoção
91
+ - Cliente seleciona produto → Bot envia detalhes e link de compra
92
+
93
+ ### 4. **Agendamento e Lembretes**
94
+ Confirmações de consultas, lembretes de pagamento, follow-ups.
95
+
96
+ **Exemplo:**
97
+ - 24h antes da consulta → Mensagem de lembrete com botões "Confirmar" / "Reagendar"
98
+
99
+ ### 5. **Coleta de Feedback**
100
+ Pesquisas de satisfação pós-atendimento via mensagens interativas.
101
+
102
+ **Exemplo:**
103
+ - Após fechamento do ticket → Mensagem com escala de satisfação (botões 1-5 estrelas)
104
+
105
+ ### 6. **Integração com CRM/ERP**
106
+ Conecte sistemas legados para comunicação via WhatsApp.
107
+
108
+ **Exemplo:**
109
+ - Novo lead no CRM → Mensagem automática de boas-vindas
110
+ - Boleto vencendo → Notificação via WhatsApp com link de pagamento
111
+
112
+ ---
113
+
114
+ ## 👥 Público-Alvo
115
+
116
+ ### Desenvolvedores
117
+ - Backend developers construindo APIs de comunicação
118
+ - Frontend developers integrando chatbots em aplicações web
119
+ - Full-stack developers em startups e empresas de SaaS
120
+
121
+ ### Empresas
122
+ - **SaaS de Atendimento:** Plataformas de customer service
123
+ - **E-commerce:** Lojas online com comunicação via WhatsApp
124
+ - **Fintechs:** Notificações bancárias e de pagamento
125
+ - **Healthtech:** Agendamentos e lembretes médicos
126
+ - **Educação:** Comunicação com alunos e responsáveis
127
+
128
+ ### Perfil Técnico Esperado
129
+ - Conhecimento intermediário de **Node.js** e **TypeScript**
130
+ - Familiaridade com **REST APIs** e **webhooks**
131
+ - Experiência com **Express.js** (para webhook setup)
132
+ - Conceitos básicos de **assincronismo** (Promises, async/await)
133
+
134
+ ---
135
+
136
+ ## 🛠 Stack Tecnológico
137
+
138
+ ### Core
139
+ - **Linguagem:** TypeScript 4.9+
140
+ - **Runtime:** Node.js ≥14.x
141
+ - **HTTP Client:** Axios 1.7
142
+ - **Event System:** Node.js EventEmitter
143
+
144
+ ### Integração Opcional
145
+ - **Web Framework:** Express.js 4.x (para webhooks)
146
+ - **UI Components:** React 18.x (componente de cadastro)
147
+
148
+ ### Desenvolvimento
149
+ - **Testes:** Jest 29
150
+ - **Build:** TypeScript Compiler
151
+ - **Lint:** ESLint
152
+ - **Package Manager:** npm, yarn ou pnpm
153
+
154
+ ### APIs Externas
155
+ - **Meta Graph API v18.0** - WhatsApp Business API
156
+ - **Naty Meta API** - Backend proprietário para gestão de conexões
157
+
158
+ ---
159
+
160
+ ## ✅ Requisitos
161
+
162
+ ### Pré-requisitos de Negócio
163
+ 1. **Conta Meta Business** - Você precisa ter uma conta no Meta Business Manager
164
+ 2. **Aplicação Meta** - Criar uma app no Meta for Developers com WhatsApp Business API ativada
165
+ 3. **Número WhatsApp Business** - Número de telefone verificado e associado à aplicação
166
+ 4. **Credenciais de Acesso:**
167
+ - App ID e App Secret (da aplicação Meta)
168
+ - Access Token (gerado no Meta for Developers)
169
+ - Phone Number ID (identificador do número WhatsApp)
170
+
171
+ ### Pré-requisitos Técnicos
172
+ - **Node.js:** Versão 14 ou superior
173
+ - **TypeScript:** Versão 4.9 ou superior (para desenvolvimento)
174
+ - **App Token Naty:** Credencial fornecida pela plataforma Naty (para autenticação no SDK)
175
+
176
+ ### Variáveis de Ambiente
177
+ ```bash
178
+ # Obrigatória
179
+ API_META=https://api.meta.naty.app/v1 # URL da API Naty Meta
180
+
181
+ # Opcional (para desenvolvimento local)
182
+ NODE_ENV=development
183
+ PORT=3000
184
+ ```
185
+
186
+ ---
187
+
188
+ ## 🚀 Quick Start
189
+
190
+ ### Instalação
191
+
192
+ ```bash
193
+ # Usando npm
194
+ npm install @natyapp/meta
195
+
196
+ # Usando pnpm
197
+ pnpm add @natyapp/meta
198
+
199
+ # Usando yarn
200
+ yarn add @natyapp/meta
201
+ ```
202
+
203
+ ### Exemplo Básico - Enviar Mensagem
204
+
205
+ ```typescript
206
+ import { NatyMeta } from '@natyapp/meta';
207
+
208
+ // 1. Inicializar SDK
209
+ const sdk = new NatyMeta();
210
+ await sdk.connect({ appToken: 'seu-app-token-aqui' });
211
+
212
+ // 2. Criar instância de resposta WhatsApp
213
+ const whatsapp = sdk.Message.WhatsappResponse({
214
+ companyId: 'id-da-sua-empresa',
215
+ phone_number_id: 'id-do-numero-whatsapp'
216
+ });
217
+
218
+ // 3. Enviar mensagem de texto
219
+ const result = await whatsapp.send_text({
220
+ to: '5511999999999', // Número do destinatário (formato E.164)
221
+ message: 'Olá! Esta é uma mensagem de teste.'
222
+ });
223
+
224
+ if (result.isRight()) {
225
+ console.log('Mensagem enviada:', result.value);
226
+ } else {
227
+ console.error('Erro ao enviar:', result.value);
228
+ }
229
+ ```
230
+
231
+ ### Exemplo - Receber Mensagens
232
+
233
+ ```typescript
234
+ import express from 'express';
235
+ import { NatyMeta } from '@natyapp/meta';
236
+
237
+ const app = express();
238
+ app.use(express.json());
239
+
240
+ // Inicializar SDK com Express
241
+ const sdk = new NatyMeta();
242
+ await sdk.connect({
243
+ appToken: 'seu-app-token',
244
+ app: app, // Integra rotas de webhook
245
+ pathname: '/webhooks' // Base path para webhooks
246
+ });
247
+
248
+ // Escutar eventos de mensagens recebidas
249
+ sdk.on('message', async (data) => {
250
+ console.log('Mensagem recebida:', data.message);
251
+
252
+ // Responder automaticamente
253
+ const whatsapp = data.whatsappResponse;
254
+ await whatsapp.send_text({
255
+ to: data.sender,
256
+ message: 'Recebi sua mensagem!'
257
+ });
258
+ });
259
+
260
+ app.listen(3000, () => {
261
+ console.log('Servidor rodando na porta 3000');
262
+ });
263
+ ```
264
+
265
+ 👉 **Para exemplos completos, consulte:** [Guia Prático](07-guia-pratico.md)
266
+
267
+ ---
268
+
269
+ ## 🏗 Arquitetura de Alto Nível
270
+
271
+ ```mermaid
272
+ graph TB
273
+ subgraph "Aplicação do Cliente"
274
+ APP[Aplicação Node.js/TypeScript]
275
+ end
276
+
277
+ subgraph "SDK Naty Meta"
278
+ SDK[NatyMeta SDK]
279
+ CONN[Connection Manager]
280
+ MSG[Message Handler]
281
+ WEBHOOK[Webhook Routes]
282
+ EVENTS[Event Emitter]
283
+ end
284
+
285
+ subgraph "APIs Externas"
286
+ NATY_API[Naty Meta API<br/>Gestão de Conexões]
287
+ META_API[Meta Graph API<br/>WhatsApp Business]
288
+ end
289
+
290
+ subgraph "Meta Infrastructure"
291
+ WHATSAPP[WhatsApp Business<br/>Platform]
292
+ end
293
+
294
+ APP -->|1. Inicializa| SDK
295
+ SDK -->|2. Valida appToken| NATY_API
296
+ APP -->|3. Envia mensagem| MSG
297
+ MSG -->|4. Busca credenciais| NATY_API
298
+ MSG -->|5. Envia via API| META_API
299
+ META_API -->|6. Entrega| WHATSAPP
300
+ WHATSAPP -->|7. Recebe resposta| META_API
301
+ META_API -->|8. Webhook POST| WEBHOOK
302
+ WEBHOOK -->|9. Emite evento| EVENTS
303
+ EVENTS -->|10. Notifica| APP
304
+
305
+ style SDK fill:#4CAF50,color:#fff
306
+ style NATY_API fill:#2196F3,color:#fff
307
+ style META_API fill:#FF9800,color:#fff
308
+ style WHATSAPP fill:#25D366,color:#fff
309
+ ```
310
+
311
+ ### Fluxo Simplificado
312
+
313
+ 1. **Inicialização:** Aplicação instancia SDK e valida credenciais
314
+ 2. **Envio de Mensagem:** SDK busca conexão, refresha token se necessário, envia via Meta API
315
+ 3. **Recepção de Mensagem:** Meta envia webhook → SDK processa → Emite evento → Aplicação responde
316
+
317
+ ### Camadas do Sistema
318
+
319
+ ```mermaid
320
+ graph LR
321
+ A[API Layer<br/>NatyMeta Class] --> B[Use Cases Layer<br/>WhatsappResponse]
322
+ B --> C[Services Layer<br/>Mutations & Axios]
323
+ C --> D[Integration Layer<br/>External APIs]
324
+
325
+ style A fill:#E3F2FD
326
+ style B fill:#BBDEFB
327
+ style C fill:#90CAF9
328
+ style D fill:#64B5F6
329
+ ```
330
+
331
+ 👉 **Para detalhes técnicos completos, consulte:** [Arquitetura Técnica](03-arquitetura.md)
332
+
333
+ ---
334
+
335
+ ## 📊 Estatísticas do Projeto
336
+
337
+ - **Linguagem:** TypeScript
338
+ - **Cobertura de Testes:** Jest configurado
339
+ - **Estrutura:** ~50+ arquivos organizados em módulos
340
+ - **Principais Dependências:** Axios, Express (opcional)
341
+ - **Suporte a Mensagens:** 10+ tipos (texto, mídia, botões, listas, templates, etc.)
342
+
343
+ ---
344
+
345
+ ## 🔗 Próximos Passos
346
+
347
+ Após entender a visão geral, recomendamos:
348
+
349
+ 1. **[Contexto de Negócio](02-contexto-negocio.md)** - Entenda as regras e políticas
350
+ 2. **[Guia Prático](07-guia-pratico.md)** - Comece a usar o SDK
351
+ 3. **[Fluxos Funcionais](04-fluxos-funcionais.md)** - Veja como tudo funciona internamente
352
+
353
+ ---
354
+
355
+ [⬅️ Voltar ao Índice](README.md) | [➡️ Próximo: Contexto de Negócio](02-contexto-negocio.md)