Aggiungi commenti ai record (todo) in Blue con contenuti di testo ricco, allegati di file e @menzioni.


Aggiungi Commento

La mutazione createComment consente di aggiungere commenti ai record in Blue. I commenti supportano contenuti HTML ricchi, allegati di file, @menzioni e sono automaticamente integrati con il feed delle attività e il sistema di notifiche.

Esempio Base

Aggiungi un semplice commento di testo a un record:

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
    }
  }
}

Esempio Avanzato

Aggiungi un commento con formattazione ricca, immagini e elaborazione dell'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
  }
}

Parametri di Input

CreateCommentInput

Parametro Tipo Richiesto Descrizione
html String! ✅ Sì Contenuto HTML del commento (verrà sanificato per motivi di sicurezza)
text String! ✅ Sì Versione in testo semplice del contenuto del commento
category CommentCategory! ✅ Sì Tipo di entità su cui si sta commentando (usa TODO per i record)
categoryId String! ✅ Sì ID dell'entità (record) su cui si sta commentando
tiptap Boolean No Abilita la sanificazione e l'elaborazione HTML specifiche per l'editor TipTap

Valori CommentCategory

Valore Descrizione
TODO Commento su un record/articolo todo
DISCUSSION Commento su un thread di discussione
STATUS_UPDATE Commento su un aggiornamento di stato

Campi di Risposta

La mutazione restituisce un oggetto Comment con dettagli completi:

Campo Tipo Descrizione
id ID! Identificatore unico per il commento
uid String! Identificatore unico alternativo
html String! Contenuto HTML del commento
text String! Versione in testo semplice del commento
category CommentCategory! Tipo di entità commentata
createdAt DateTime! Quando è stato creato il commento
updatedAt DateTime! Quando è stato aggiornato l'ultimo commento
deletedAt DateTime Quando è stato eliminato il commento (null se attivo)
deletedBy User Utente che ha eliminato il commento
user User! Utente che ha creato il commento
activity Activity Record di attività associato
discussion Discussion Discussione associata (se la categoria è DISCUSSIONE)
statusUpdate StatusUpdate Aggiornamento di stato associato (se la categoria è AGGIORNAMENTO_STATO)
todo Todo Record associato (se la categoria è TODO)
isRead Boolean Se l'utente corrente ha letto questo commento
isSeen Boolean Se l'utente corrente ha visto questo commento
aiSummary Boolean Se questo commento è stato generato da AI

Permessi Richiesti

Gli utenti devono avere accesso appropriato al progetto per commentare i record:

Livello di Accesso Può Aggiungere Commenti
OWNER ✅ Sì
ADMIN ✅ Sì
MEMBER ✅ Sì
CLIENT ✅ Sì
COMMENT_ONLY ✅ Sì
VIEW_ONLY ❌ No

Importante: L'utente deve essere un membro del progetto che contiene il record e NON deve avere il livello di accesso VIEW_ONLY.

Risposte di Errore

UnauthorizedError

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

Quando: L'utente non ha il permesso di commentare il record/entità specificato.

ValidationError

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

Quando: I campi richiesti mancano o contengono dati non validi.

CommentNotFoundError

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

Quando: L'categoryId specificato non corrisponde a un record esistente.

UserInputError

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

Quando: Il contenuto HTML non supera la sanificazione o contiene codice dannoso.

Note Importanti

Elaborazione dei Contenuti

  • Sanificazione HTML: Tutti i contenuti HTML vengono automaticamente sanificati per prevenire attacchi XSS
  • Estrazione di File: Immagini e allegati incorporati in HTML vengono estratti e memorizzati in S3
  • Modalità TipTap: Quando tiptap: true, utilizza una sanificazione specializzata per i contenuti dell'editor TipTap
  • @Menzioni: Le menzioni degli utenti nei commenti vengono elaborate automaticamente e attivano notifiche

Considerazioni sulle Prestazioni

  • I commenti vengono indicizzati per la ricerca automaticamente
  • Gli allegati di immagini di grandi dimensioni vengono elaborati in modo asincrono
  • Ogni commento crea un record di attività per la timeline del progetto

Effetti Collaterali

Aggiungere un commento attiva diversi processi automatizzati:

  • Creazione di Attività: Crea un record di attività visibile nella timeline del progetto
  • Indicizzazione della Ricerca: Il contenuto del commento viene aggiunto all'indice di ricerca del progetto
  • Notifiche: Invia notifiche via email, push e nell'app agli utenti pertinenti
  • Aggiornamenti in Tempo Reale: Pubblica il commento per le sottoscrizioni GraphQL per aggiornamenti dal vivo
  • Webhook: Attiva un webhook esterno se configurato per il progetto
  • Elaborazione @Menzioni: Elabora le menzioni degli utenti e invia notifiche mirate
  • Elaborazione dei File: Estrae e elabora eventuali immagini o file incorporati dal contenuto HTML

Sicurezza dei Contenuti

  • Tutto l'HTML è sanificato utilizzando librerie standard del settore
  • I caricamenti di file vengono convalidati per tipo e dimensione
  • I contenuti dannosi vengono automaticamente rimossi
  • I contenuti generati dagli utenti vengono correttamente eseguiti in tutti i contesti

Caratteristiche di Integrazione

  • Feed di Attività: I commenti appaiono nella timeline delle attività del progetto
  • Ricerca: Il contenuto del commento è ricercabile all'interno del progetto
  • Notifiche: Preferenze di notifica configurabili per diversi tipi di commenti
  • In Tempo Reale: I commenti appaiono istantaneamente per altri utenti che visualizzano lo stesso record
  • Supporto Mobile: I commenti sono completamente supportati nelle applicazioni mobili

Endpoint Correlati

  • Elenca Commenti: Interroga i commenti per recuperare commenti esistenti sui record
  • Aggiorna Commento: Modifica il contenuto di un commento esistente
  • Elimina Commento: Rimuovi commenti con la corretta autorizzazione
  • Elenca Record: Interroga i todo per trovare record su cui è possibile commentare

Assistente AI

Le risposte sono generate utilizzando l'IA e potrebbero contenere errori.

Come posso aiutarti?

Chiedimi qualsiasi cosa su Blue o su questa documentazione.

Invia per inviare • Maiusc+Invio per una nuova riga • ⌘I per aprire