Worker de WhatsApp — sube los bytes de un adjunto entrante
El worker sube los bytes de un adjunto entrante ANTES de mandar el webhook JSON de `inbound` — mismo secreto que `/whatsapp/worker/*`. La API decide el nombre final (`WhatsappMediaService.save`), nunca confía en uno que venga en el multipart. `limits.fileSize` en el interceptor corta un upload gigante ANTES de que multer lo termine de escribir a disco — el chequeo por-tipo de `WhatsappMediaService.saveFromPath` (16MB imagen/audio/video, 100MB documento) corre después, con el archivo ya completo en el temporal; este límite es solo el techo duro global (el de documento, el más alto) para no confiar en que un caller no autenticado no mande algo desproporcionado antes de que el bearer se valide.
El worker sube los bytes de un adjunto entrante ANTES de mandar el
webhook JSON de inbound — mismo secreto que /whatsapp/worker/*. La
API decide el nombre final (WhatsappMediaService.save), nunca confía en
uno que venga en el multipart.
limits.fileSize en el interceptor corta un upload gigante ANTES de que
multer lo termine de escribir a disco — el chequeo por-tipo de
WhatsappMediaService.saveFromPath (16MB imagen/audio/video, 100MB
documento) corre después, con el archivo ya completo en el temporal; este
límite es solo el techo duro global (el de documento, el más alto) para
no confiar en que un caller no autenticado no mande algo desproporcionado
antes de que el bearer se valide.
Response Body
application/json
curl -X POST "https://example.com/api/v1/whatsapp/worker/media"{}Editar un flujo (grafo, trigger, prioridad, activo/inactivo) PATCH
Previous Page
Adjunta y envía un archivo en una conversación — requiere valchat-inbox:manage POST
El agente adjunta un archivo desde el Inbox — lo sube, se guarda y se manda. Mismo permiso que `POST conversations/:id/messages` (`valchat-inbox:manage`, ver `whatsapp.controller.ts`): adjuntar un archivo es la misma acción que mandar texto, solo cambia el contenido. Mismo techo duro de `limits.fileSize` que `receiveFromWorker` (el de documento, el más alto) — el chequeo por-tipo real corre después en `WhatsappMediaService.saveFromPath`; esto solo evita escribir a disco un upload desproporcionado antes de llegar ahí. Esta ruta SÍ pasa por `JwtAuthGuard`/`CheckPermission` (no es `@Public()`), así que el riesgo de disco-lleno de un caller no autenticado no aplica acá — igual se limpia el temporal en el único rechazo temprano posible (`!file`, que en la práctica no debería dejar nada escrito).