# n8n-nodes-uazapi-api

[![npm version](https://badge.fury.io/js/n8n-nodes-uazapi-api.svg)](https://badge.fury.io/js/n8n-nodes-uazapi-api)
[![Downloads](https://img.shields.io/npm/dm/n8n-nodes-uazapi-api.svg)](https://www.npmjs.com/package/n8n-nodes-uazapi-api)

N8N Community Node para integração com a API UAZAPI - WhatsApp Business

## Descrição

Este pacote contém um node customizado para o n8n que permite integrar com a API UAZAPI para envio e recebimento de mensagens do WhatsApp Business.

## Características

### 🔧 Operações de Instância
- **Get Status**: Verificar status da instância (conectado, desconectado, conectando)
- **Connect**: Conectar instância ao WhatsApp
- **Disconnect**: Desconectar instância do WhatsApp

### 💬 Envio de Mensagens
- **Send Text**: Enviar mensagens de texto
- **Send Media**: Enviar mídias (imagem, vídeo, áudio, documento)
- **Send Contact**: Enviar cartão de contato (vCard)
- **Send Location**: Enviar localização geográfica
- **Send Status**: Enviar Stories (Status)
- **Send Menu**: Enviar menus interativos (botões, carrossel, lista)

### 📥 Webhook e Busca
- **Get Messages**: Obter mensagens recebidas
- **Download Media**: Baixar arquivos de mídia

## Instalação

### Via NPM (Recomendado)

```bash
npm install n8n-nodes-uazapi-api
```

### Via Interface do n8n

1. Acesse as configurações do n8n
2. Vá para "Community Nodes"
3. Clique em "Install a community node"
4. Digite: `n8n-nodes-uazapi-api`
5. Clique em "Install"

## Configuração

### Credenciais

1. **Token da Instância**: Token de autenticação da sua instância UAZAPI
2. **Subdomínio**: Subdomínio da sua empresa (ex: free, suaempresa)
3. **Base URL**: URL base da API (padrão: https://{subdomain}.uazapi.com)

### Como obter as credenciais

1. Acesse [UAZAPI](https://uazapi.com)
2. Crie uma conta e faça login
3. Crie uma nova instância
4. Copie o token gerado
5. Use o subdomínio fornecido (geralmente "free" para contas gratuitas)

## Uso Básico

### 1. Verificar Status da Instância

```json
{
  "resource": "instance",
  "operation": "getStatus"
}
```

### 2. Conectar Instância

```json
{
  "resource": "instance",
  "operation": "connect",
  "phone": "5511999999999"
}
```

### 3. Enviar Mensagem de Texto

```json
{
  "resource": "message",
  "operation": "sendText",
  "phoneNumber": "5511999999999",
  "message": "Olá! Esta é uma mensagem enviada via n8n!"
}
```

### 4. Enviar Mídia

```json
{
  "resource": "message",
  "operation": "sendMedia",
  "phoneNumber": "5511999999999",
  "mediaUrl": "https://exemplo.com/imagem.jpg",
  "mediaType": "image",
  "caption": "Legenda da imagem"
}
```

## Exemplos de Workflows

### Workflow de Boas-vindas

1. **Webhook Trigger** - Recebe dados do formulário
2. **UAZAPI - Get Status** - Verifica se a instância está conectada
3. **UAZAPI - Send Text** - Envia mensagem de boas-vindas
4. **UAZAPI - Send Media** - Envia imagem promocional

### Workflow de Atendimento

1. **UAZAPI - Get Messages** - Busca mensagens recebidas
2. **IF** - Verifica tipo de mensagem
3. **UAZAPI - Send Text** - Responde automaticamente
4. **UAZAPI - Send Contact** - Envia contato do atendente

## Recursos Avançados

### Envio de Status/Stories

```json
{
  "resource": "message",
  "operation": "sendStatus",
  "statusType": "text",
  "statusText": "Promoção especial!",
  "backgroundColor": 1
}
```

### Envio de Localização

```json
{
  "resource": "message",
  "operation": "sendLocation",
  "phoneNumber": "5511999999999",
  "latitude": -23.5505,
  "longitude": -46.6333,
  "locationName": "São Paulo, SP"
}
```

### Envio de Contato

```json
{
  "resource": "message",
  "operation": "sendContact",
  "phoneNumber": "5511999999999",
  "contactName": "João Silva",
  "contactPhone": "5511888888888"
}
```

## Estados da Instância

- `disconnected`: Desconectado do WhatsApp
- `connecting`: Em processo de conexão
- `connected`: Conectado e autenticado com sucesso

## Limitações

- O servidor possui um limite máximo de instâncias conectadas
- Quando o limite é atingido, novas tentativas receberão erro 429
- Servidores gratuitos/demo podem ter restrições adicionais de tempo de vida

## Suporte

- **Documentação UAZAPI**: [https://docs.uazapi.com](https://docs.uazapi.com)
- **Issues**: [GitHub Issues](https://github.com/astrixcore/n8n-nodes-uazapi-api/issues)
- **Contato**: eduardo@astrixcore.com

## Desenvolvido por

**Eduardo Core** - [@astrixcore](https://astrixcore.com)

## Licença

MIT

## Changelog

### v1.0.0
- Implementação inicial
- Suporte a operações de instância
- Suporte a envio de mensagens básicas
- Suporte a webhook e busca de mensagens

