Agrega comentarios a registros (tareas) en Blue con contenido de texto enriquecido, archivos adjuntos y menciones @.


Agregar Comentario

La mutación createComment permite agregar comentarios a registros en Blue. Los comentarios admiten contenido HTML enriquecido, archivos adjuntos, menciones @ y están integrados automáticamente con el feed de actividad y el sistema de notificaciones.

Ejemplo Básico

Agrega un comentario de texto simple a un registro:

mutation AddComment {
  createComment(
    input: {
      html: "<p>This task is progressing well!</p>"
      text: "This task is progressing well!"
      category: TODO
      categoryId: "clm4n8qwx000008l0g4oxdqn7"
    }
  ) {
    id
    html
    text
    createdAt
    user {
      id
      name
    }
  }
}

Ejemplo Avanzado

Agrega un comentario con formato enriquecido, imágenes y procesamiento del editor TipTap:

mutation AddCommentAdvanced {
  createComment(
    input: {
      html: "<p>Here's my <strong>feedback</strong> on this task:</p><ul><li>Great progress on the design</li><li>Need to review the API integration</li></ul><p>Attaching screenshot:</p><img src='data:image/png;base64,iVBOR...' />"
      text: "Here's my feedback on this task: - Great progress on the design - Need to review the API integration Attaching screenshot:"
      category: TODO
      categoryId: "clm4n8qwx000008l0g4oxdqn7"
      tiptap: true
    }
  ) {
    id
    html
    text
    createdAt
    user {
      id
      name
      avatar
    }
    activity {
      id
    }
    isRead
    isSeen
  }
}

Parámetros de Entrada

CreateCommentInput

Parámetro Tipo Requerido Descripción
html String! ✅ Sí Contenido HTML del comentario (será sanitizado por seguridad)
text String! ✅ Sí Versión de texto plano del contenido del comentario
category CommentCategory! ✅ Sí Tipo de entidad sobre la que se comenta (usa TODO para registros)
categoryId String! ✅ Sí ID de la entidad (registro) sobre la que se comenta
tiptap Boolean No Habilitar la sanitización y procesamiento HTML específicos del editor TipTap

Valores de CommentCategory

Valor Descripción
TODO Comentario sobre un registro/tarea
DISCUSSION Comentario sobre un hilo de discusión
STATUS_UPDATE Comentario sobre una actualización de estado

Campos de Respuesta

La mutación devuelve un objeto Comment con detalles completos:

Campo Tipo Descripción
id ID! Identificador único para el comentario
uid String! Identificador único alternativo
html String! Contenido HTML del comentario
text String! Versión de texto plano del comentario
category CommentCategory! Tipo de entidad comentada
createdAt DateTime! Cuándo se creó el comentario
updatedAt DateTime! Cuándo se actualizó por última vez el comentario
deletedAt DateTime Cuándo se eliminó el comentario (nulo si está activo)
deletedBy User Usuario que eliminó el comentario
user User! Usuario que creó el comentario
activity Activity Registro de actividad asociado
discussion Discussion Discusión asociada (si la categoría es DISCUSIÓN)
statusUpdate StatusUpdate Actualización de estado asociada (si la categoría es ACTUALIZACIÓN_DE_ESTADO)
todo Todo Registro asociado (si la categoría es TAREA)
isRead Boolean Si el usuario actual ha leído este comentario
isSeen Boolean Si el usuario actual ha visto este comentario
aiSummary Boolean Si este comentario fue generado por IA

Permisos Requeridos

Los usuarios deben tener acceso adecuado al proyecto para comentar en registros:

Nivel de Acceso Puede Agregar Comentarios
OWNER ✅ Sí
ADMIN ✅ Sí
MEMBER ✅ Sí
CLIENT ✅ Sí
COMMENT_ONLY ✅ Sí
VIEW_ONLY ❌ No

Importante: El usuario debe ser miembro del proyecto que contiene el registro y NO debe tener nivel de acceso VIEW_ONLY.

Respuestas de Error

UnauthorizedError

{
  "errors": [{
    "message": "You don't have permission to comment on this record",
    "extensions": {
      "code": "FORBIDDEN"
    }
  }]
}

Cuándo: El usuario no tiene permiso para comentar en el registro/entidad especificada.

ValidationError

{
  "errors": [{
    "message": "Invalid input parameters",
    "extensions": {
      "code": "BAD_USER_INPUT"
    }
  }]
}

Cuándo: Faltan campos requeridos o contienen datos inválidos.

CommentNotFoundError

{
  "errors": [{
    "message": "Record not found",
    "extensions": {
      "code": "COMMENT_NOT_FOUND"
    }
  }]
}

Cuándo: El categoryId especificado no corresponde a un registro existente.

UserInputError

{
  "errors": [{
    "message": "Content validation failed",
    "extensions": {
      "code": "BAD_USER_INPUT"
    }
  }]
}

Cuándo: El contenido HTML no pasa la sanitización o contiene código malicioso.

Notas Importantes

Procesamiento de Contenido

  • Sanitización HTML: Todo el contenido HTML se sanitiza automáticamente para prevenir ataques XSS
  • Extracción de Archivos: Imágenes y archivos adjuntos incrustados en HTML se extraen y almacenan en S3
  • Modo TipTap: Cuando tiptap: true, utiliza sanitización especializada para el contenido del editor TipTap
  • @Menciones: Las menciones de usuarios en comentarios se procesan automáticamente y desencadenan notificaciones

Consideraciones de Rendimiento

  • Los comentarios se indexan automáticamente para búsqueda
  • Los archivos adjuntos de imágenes grandes se procesan de manera asíncrona
  • Cada comentario crea un registro de actividad para la línea de tiempo del proyecto

Efectos Secundarios

Agregar un comentario desencadena varios procesos automatizados:

  • Creación de Actividad: Crea un registro de actividad visible en la línea de tiempo del proyecto
  • Indexación de Búsqueda: El contenido del comentario se agrega al índice de búsqueda del proyecto
  • Notificaciones: Envía notificaciones por correo electrónico, push y en la aplicación a los usuarios relevantes
  • Actualizaciones en Tiempo Real: Publica el comentario en suscripciones GraphQL para actualizaciones en vivo
  • Webhooks: Desencadena un webhook externo si está configurado para el proyecto
  • Procesamiento de @Menciones: Procesa menciones de usuarios y envía notificaciones dirigidas
  • Procesamiento de Archivos: Extrae y procesa cualquier imagen o archivo incrustado del contenido HTML

Seguridad del Contenido

  • Todo el HTML se sanitiza utilizando bibliotecas estándar de la industria
  • Las cargas de archivos se validan por tipo y tamaño
  • El contenido malicioso se elimina automáticamente
  • El contenido generado por el usuario se escapa adecuadamente en todos los contextos

Características de Integración

  • Feed de Actividad: Los comentarios aparecen en la línea de tiempo de actividad del proyecto
  • Búsqueda: El contenido del comentario es buscable dentro del proyecto
  • Notificaciones: Preferencias de notificación configurables para diferentes tipos de comentarios
  • En Tiempo Real: Los comentarios aparecen instantáneamente para otros usuarios que ven el mismo registro
  • Soporte Móvil: Los comentarios son totalmente compatibles en aplicaciones móviles

Endpoints Relacionados

  • Listar Comentarios: Consultar comentarios para recuperar comentarios existentes en registros
  • Actualizar Comentario: Modificar el contenido de un comentario existente
  • Eliminar Comentario: Eliminar comentarios con la autorización adecuada
  • Listar Registros: Consultar tareas para encontrar registros que se pueden comentar

Asistente IA

Las respuestas son generadas por IA y pueden contener errores.

¿Cómo puedo ayudarte?

Pregúntame cualquier cosa sobre Blue o esta documentación.

Enter para enviar • Shift+Enter para nueva línea • ⌘I para abrir