# Webhook Setup

### Express.js

```typescript
import express from 'express';

const app = express();
app.use(express.json());

// Use as middleware
app.post('/webhook', whatsapp.expressMiddleware());
app.get('/webhook', whatsapp.expressMiddleware());

app.listen(3000, () => {
  console.log('Webhook server running on port 3000');
});
```

### Next.js (App Router)

```typescript
// app/api/webhook/route.ts
import { NextRequest, NextResponse } from 'next/server';

export async function POST(req: NextRequest) {
  const body = await req.json();
  
  const result = await whatsapp.processWebhook({
    method: 'POST',
    headers: Object.fromEntries(req.headers),
    body,
    query: Object.fromEntries(req.nextUrl.searchParams)
  });

  return NextResponse.json(result.data, { status: result.status });
}

export async function GET(req: NextRequest) {
  const result = await whatsapp.processWebhook({
    method: 'GET',
    headers: Object.fromEntries(req.headers),
    query: Object.fromEntries(req.nextUrl.searchParams)
  });

  if (result.challenge) {
    return new NextResponse(result.challenge, { status: 200 });
  }

  return NextResponse.json(result.data, { status: result.status });
}
```

### Next.js (Pages Router)

```typescript
// pages/api/webhook.ts
import type { NextApiRequest, NextApiResponse } from 'next';

export default async function handler(
  req: NextApiRequest,
  res: NextApiResponse
) {
  await whatsapp.nextjsHandler(req, res);
}
```

### Standalone HTTP Server

```typescript
// Start built-in server
const server = whatsapp.startWebhookServer(3000, '/webhook', () => {
  console.log('Webhook server started on port 3000');
});

// Stop server
await whatsapp.stopWebhookServer();
```

### Generic/Universal Handler

```typescript
// Works with any framework
const result = await whatsapp.processWebhook({
  method: 'POST',
  headers: req.headers,
  body: req.body,
  query: req.query,
  rawBody: req.rawBody
});
```

---