Blueのレコード(TODO)にリッチテキストコンテンツ、ファイル添付、および@メンションを使用してコメントを追加します。


コメントを追加

createCommentミューテーションを使用すると、Blueのレコードにコメントを追加できます。コメントはリッチHTMLコンテンツ、ファイル添付、@メンションをサポートし、アクティビティフィードおよび通知システムと自動的に統合されます。

基本例

レコードにシンプルなテキストコメントを追加します:

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

高度な例

リッチフォーマット、画像、および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
  }
}

入力パラメータ

CreateCommentInput

パラメータ 必須 説明
html String! ✅ はい コメントのHTMLコンテンツ(セキュリティのためにサニタイズされます)
text String! ✅ はい コメント内容のプレーンテキストバージョン
category CommentCategory! ✅ はい コメント対象のエンティティの種類(レコードにはTODOを使用)
categoryId String! ✅ はい コメント対象のエンティティ(レコード)のID
tiptap Boolean いいえ TipTapエディタ特有のHTMLサニタイズと処理を有効にする

CommentCategoryの値

説明
TODO レコード/TODOアイテムに対するコメント
DISCUSSION ディスカッションスレッドに対するコメント
STATUS_UPDATE ステータス更新に対するコメント

レスポンスフィールド

ミューテーションは、詳細な情報を持つCommentオブジェクトを返します:

フィールド 説明
id ID! コメントの一意の識別子
uid String! 代替の一意の識別子
html String! コメントのHTMLコンテンツ
text String! コメントのプレーンテキストバージョン
category CommentCategory! コメント対象のエンティティの種類
createdAt DateTime! コメントが作成された日時
updatedAt DateTime! コメントが最後に更新された日時
deletedAt DateTime コメントが削除された日時(アクティブな場合はnull)
deletedBy User コメントを削除したユーザー
user User! コメントを作成したユーザー
activity Activity 関連するアクティビティレコード
discussion Discussion 関連するディスカッション(カテゴリがDISCUSSIONの場合)
statusUpdate StatusUpdate 関連するステータス更新(カテゴリがSTATUS_UPDATEの場合)
todo Todo 関連するレコード(カテゴリがTODOの場合)
isRead Boolean 現在のユーザーがこのコメントを読んだかどうか
isSeen Boolean 現在のユーザーがこのコメントを見たかどうか
aiSummary Boolean このコメントがAIによって生成されたかどうか

必要な権限

ユーザーは、レコードにコメントを追加するために適切なプロジェクトアクセスを持っている必要があります:

アクセスレベル コメントを追加できる
OWNER ✅ はい
ADMIN ✅ はい
MEMBER ✅ はい
CLIENT ✅ はい
COMMENT_ONLY ✅ はい
VIEW_ONLY ❌ いいえ

重要: ユーザーは、レコードを含むプロジェクトのメンバーでなければならず、VIEW_ONLY アクセスレベルを持っていてはいけません。

エラー応答

UnauthorizedError

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

いつ: ユーザーが指定されたレコード/エンティティにコメントする権限を持っていない。

ValidationError

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

いつ: 必須フィールドが欠落しているか、無効なデータが含まれている。

CommentNotFoundError

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

いつ: 指定されたcategoryIdが既存のレコードに対応していない。

UserInputError

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

いつ: HTMLコンテンツのサニタイズに失敗したか、悪意のあるコードが含まれている。

重要な注意事項

コンテンツ処理

  • HTMLサニタイズ: すべてのHTMLコンテンツは、自動的にサニタイズされてXSS攻撃を防止します
  • ファイル抽出: HTMLに埋め込まれた画像や添付ファイルは抽出され、S3に保存されます
  • TipTapモード: tiptap: trueのとき、TipTapエディタコンテンツのために特別なサニタイズを使用します
  • @メンション: コメント内のユーザーメンションは自動的に処理され、通知をトリガーします

パフォーマンスの考慮事項

  • コメントは自動的に検索用にインデックスされます
  • 大きな画像添付ファイルは非同期で処理されます
  • 各コメントはプロジェクトタイムラインのためのアクティビティレコードを作成します

副作用

コメントを追加すると、いくつかの自動化プロセスがトリガーされます:

  • アクティビティ作成: プロジェクトタイムラインに表示されるアクティビティレコードを作成します
  • 検索インデックス: コメント内容がプロジェクト検索インデックスに追加されます
  • 通知: 関連するユーザーにメール、プッシュ、およびアプリ内通知を送信します
  • リアルタイム更新: コメントがGraphQLサブスクリプションに公開され、ライブ更新が行われます
  • Webhook: プロジェクトに設定されている場合、外部Webhookをトリガーします
  • @メンション処理: ユーザーメンションを処理し、ターゲット通知を送信します
  • ファイル処理: HTMLコンテンツから埋め込まれた画像やファイルを抽出し、処理します

コンテンツセキュリティ

  • すべてのHTMLは業界標準のライブラリを使用してサニタイズされます
  • ファイルアップロードはタイプとサイズが検証されます
  • 悪意のあるコンテンツは自動的に削除されます
  • ユーザー生成コンテンツはすべてのコンテキストで適切にエスケープされます

統合機能

  • アクティビティフィード: コメントはプロジェクトのアクティビティタイムラインに表示されます
  • 検索: コメント内容はプロジェクト内で検索可能です
  • 通知: 異なるコメントタイプに対する通知設定が可能です
  • リアルタイム: コメントは同じレコードを表示している他のユーザーに即座に表示されます
  • モバイルサポート: コメントはモバイルアプリケーションで完全にサポートされています

関連エンドポイント

  • コメントのリスト: コメントをクエリして、レコードに対する既存のコメントを取得します
  • コメントの更新: 既存のコメント内容を修正します
  • コメントの削除: 適切な権限でコメントを削除します
  • レコードのリスト: TODOをクエリして、コメント可能なレコードを見つけます

AIアシスタント

回答はAIを使用して生成されており、間違いが含まれる可能性があります。

どのようにお手伝いできますか?

Blueやこのドキュメントについて何でも聞いてください。

送信するにはEnterを押してください • 新しい行を作成するにはShift+Enterを押してください • ⌘Iで開く