# @skailan/conversations

Servicio de conversaciones y mensajería para la plataforma Skailan.

## Descripción

Este módulo proporciona funcionalidades completas de mensajería y gestión de conversaciones para la plataforma Skailan. Incluye:

- Gestión de conversaciones en tiempo real
- Integración con múltiples plataformas (WhatsApp, Telegram, Email)
- Sistema de canales y mensajes
- Webhooks para plataformas externas
- Socket.IO para comunicación en tiempo real
- Gestión de archivos y multimedia

## Instalación

```bash
npm install @skailan/conversations
```

## Uso

### Importación básica

```typescript
import { ConversationService } from '@skailan/conversations';

const conversationService = new ConversationService();

// Crear una nueva conversación
const conversation = await conversationService.createConversation({
  contactId: "contact-123",
  platform: "whatsapp",
  organizationId: "org-123"
});
```

### Configuración de variables de entorno

```env
DATABASE_URL="postgresql://user:password@localhost:5432/skailan"
REDIS_URL="redis://localhost:6379"
TELEGRAM_BOT_TOKEN="your-telegram-bot-token"
```

## API Endpoints

### Conversaciones
- `GET /conversations` - Listar conversaciones
- `POST /conversations` - Crear conversación
- `GET /conversations/:id` - Obtener conversación
- `PUT /conversations/:id` - Actualizar conversación
- `DELETE /conversations/:id` - Eliminar conversación

### Mensajes
- `GET /conversations/:id/messages` - Listar mensajes
- `POST /conversations/:id/messages` - Enviar mensaje
- `GET /messages/:id` - Obtener mensaje
- `PUT /messages/:id` - Actualizar mensaje

### Canales
- `GET /channels` - Listar canales
- `POST /channels` - Crear canal
- `GET /channels/:id` - Obtener canal
- `PUT /channels/:id` - Actualizar canal

### Webhooks
- `POST /webhooks/telegram` - Webhook de Telegram
- `POST /webhooks/whatsapp` - Webhook de WhatsApp

## Características

- **Tiempo real**: Socket.IO para comunicación instantánea
- **Múltiples plataformas**: Soporte para WhatsApp, Telegram, Email
- **Gestión de archivos**: Subida y gestión de multimedia
- **Webhooks**: Integración con plataformas externas
- **Multitenancy**: Aislamiento de datos por organización
- **Historial completo**: Registro de todas las interacciones

## Dependencias

- Express.js para el servidor web
- Socket.IO para comunicación en tiempo real
- Prisma para ORM
- Redis para cache y sesiones
- @skailan/core para autenticación

## Desarrollo

```bash
# Instalar dependencias
npm install

# Ejecutar en modo desarrollo
npm run dev

# Construir para producción
npm run build

# Generar cliente Prisma
npm run prisma:generate
```

## Ejemplos de uso

### Enviar mensaje a través de WhatsApp

```typescript
import { ConversationService } from '@skailan/conversations';

const conversationService = new ConversationService();

const message = await conversationService.sendMessage({
  conversationId: "conv-123",
  content: "Hola, ¿cómo estás?",
  type: "text",
  platform: "whatsapp"
});
```

### Escuchar mensajes en tiempo real

```typescript
import { io } from 'socket.io-client';

const socket = io('http://localhost:3007');

socket.on('new_message', (message) => {
  console.log('Nuevo mensaje:', message);
});

socket.on('conversation_updated', (conversation) => {
  console.log('Conversación actualizada:', conversation);
});
```

## Webhooks

### Telegram Webhook

```typescript
// Configurar webhook de Telegram
app.post('/webhooks/telegram', async (req, res) => {
  const { message } = req.body;
  
  await conversationService.processTelegramMessage(message);
  
  res.status(200).send('OK');
});
```

## Licencia

MIT
