Private Message

スレッド機能、ユーザーブロック機能、リアルタイム通知をサポートする包括的なプライベートメッセージシステムです。ユーザー間でプライベートメッセージを送受信できます。

private_message
2,132 sites
102
drupal.org

インストール

Drupal 11, 10 v3.0.7
composer require 'drupal/private_message:^3.0'

概要

Private Messageモジュールは、Drupalサイト向けのフル機能を備えたプライベートメッセージシステムを提供します。ユーザーは複数の参加者を含むことができるプライベートメッセージスレッドを通じて、お互いにコミュニケーションを取ることができます。このモジュールはAJAXによるリアルタイムメッセージ更新、迷惑なコミュニケーションを防ぐためのユーザーブロック機能、新着メッセージのメール通知をサポートしています。

主な機能には、メッセージスレッド(ユーザー間の会話がグループ化される)、他のスレッドメンバーに影響を与えずに個人のメッセージ履歴をクリアする機能、ユーザーごとにカスタマイズ可能な通知設定、複数の表示モードを備えた柔軟な表示システムがあります。このモジュールはDrupalのEntityおよびPluginシステムを活用し、拡張性を念頭に構築されています。

3つの主要なBlockが提供されます:メッセージスレッドを表示するInbox Block、未読メッセージ/スレッド数を表示するNotification Block、メッセージ作成やブロックユーザー管理へのクイックリンクを提供するActions Block。このモジュールはカスタムメッセージリスト用のViewsと統合され、自動メッセージング用のRulesと連携し、オプションのPrivate Message Notifyサブモジュールを通じてメール通知をサポートします。

Features

  • 2人以上のユーザー間でスレッド会話ができるプライベートメッセージシステム
  • 3つの設定可能なBlock:Inbox(メッセージスレッド表示)、Notification(未読数表示)、Actions(クイックリンク)
  • パッシブモード(サイレントブロック)とアクティブモード(メッセージ表示)を備えたユーザーブロックシステム
  • 設定可能なリフレッシュレートでのリアルタイムAJAXメッセージ読み込みと受信箱更新
  • Private Message Notifyサブモジュールによるメール通知サポート(message_notifyモジュールが必要)
  • 他の参加者に影響を与えずにスレッド内の個人メッセージ履歴をクリア
  • カスタマイズ可能なメッセージフォームラベルとクイックメッセージ送信用キーボードショートカット
  • 自動プライベートメッセージ送信のためのRulesモジュール連携
  • スレッドクエリ用のカスタムFieldおよびFilterプラグインを備えたViews連携
  • 通知設定(メール通知、通知タイミング)を含むユーザープロファイル連携
  • ユーザープロファイル、Node、コメント、Profileエンティティにプライベートメッセージリンクを表示するためのExtra Fields
  • 安全なモジュールアンインストール用のDrushコマンド(すべてのメッセージデータを削除)
  • オプションのフィールド非表示機能付きURLパラメータによる受信者プリフィル対応
  • メッセージテキストエリアへの設定可能なオートフォーカスとカスタムテーマ用CSS除去オプション

Use Cases

基本的なユーザー間コミュニケーション

認証ユーザーに「use private messaging system」権限を付与してサイトメンバー間のプライベートメッセージを有効化。ユーザーは/private-messagesにアクセスして受信箱を表示し、新しいメッセージを作成できます。Notification Blockを目立つリージョン(ヘッダーなど)に配置して、ユーザーがサイト全体で未読メッセージ数を確認できるようにします。

コミュニティサイトのモデレーションコミュニケーション

サイトモデレーターはプライベートメッセージを使用してコンテンツの問題についてユーザーとコミュニケーションできます。メッセージ権限を持つ「モデレーター」ロールを作成し、Rules統合を使用してコンテンツがフラグされたりモデレートされたときにユーザーに自動通知します。スレッドシステムはすべてのコミュニケーションを整理された状態に保ちます。

サポートチケットシステム

プライベートメッセージスレッドを軽量なサポートチケットとして使用。ユーザーは適切な権限を持つサポートスタッフにメッセージを送信できます。スレッドのサブジェクトフィールドを使用して問い合わせを分類できます。Viewsを使用してサポートスタッフメンバーが関与するすべてのスレッドを表示するサポート受信箱を作成できます。

ECサイトのバイヤー・セラーコミュニケーション

マーケットプレイスサイトで購入者と販売者間のコミュニケーションを有効化。ユーザープロファイルに「プライベートメッセージリンク」Extra Fieldを追加し、商品著者情報に表示するように設定。購入者はクリックして販売者と商品について会話を開始できます。

グループ会話

モジュールは複数メンバーのスレッドをサポート。Widgetのmax_members設定を適切に設定してグループディスカッションを許可。すべてのメンバーが同じスレッドを見て会話に参加できます。

迷惑メッセージのブロック

ユーザーは他のユーザーからのメッセージをブロックできます。サイレントブロックには「パッシブ」モード(ブロックされたユーザーはブロックされていることを知らない)、エラーメッセージを表示するには「アクティブ」モードを使用。ユーザーは/private-message/banでブロックリストを管理します。

Tips

  • URLパラメータを使用して受信者をプリフィル:/private-message/create?recipient=123でユーザーID 123へのメッセージを作成
  • 特定のユーザーへのリンク時にクリーンなコンタクトフォームを作成するには「プリフィル時に受信者フィールドを非表示」を有効化
  • ポーリングによるサーバー負荷を軽減するために低トラフィックサイトではajax_refresh_rateを0に設定
  • スタイリングを完全に制御する必要があるカスタムテーマを構築する場合は'remove_css'オプションを使用
  • 提供されたプラグインを使用してViewsでカスタム受信箱インターフェースや管理者メッセージモニタリングを構築
  • スレッドメンバーは検証され、ブロックされたユーザーはオートコンプリート候補から除外
  • キーボードショートカット(デフォルト:Enter)を使用してボタンをクリックせずにメッセージを素早く送信
  • Extra Fieldsは表示管理設定を通じてユーザープロファイル、Node、コメント、Profileエンティティに「プライベートメッセージを送信」リンクを追加可能

Technical Details

Admin Pages 6
Private Message設定 /admin/config/private-message/config

Private Messageモジュールのメイン設定ページ。通知設定、メッセージフォームラベル、ユーザーブロック動作、表示オプションを設定します。

Private Message構造 /admin/structure/private-message

Private MessageのEntityタイプ、そのField、フォーム表示、ビュー表示を管理するための管理ダッシュボード。

Private Message Thread設定 /admin/structure/private-message/private-message-thread

Private Message ThreadエンティティのField、フォーム表示、ビュー表示を管理。

Private Message設定 /admin/structure/private-message/private-message

Private MessageエンティティのField、フォーム表示、ビュー表示を管理。

Private Messageアンインストール準備 /admin/config/private-message/uninstall

すべてのプライベートメッセージデータを削除してモジュールのアンインストールを準備。このページは情報を表示し、すべてのメッセージとスレッドを削除する前に確認を求めます。

Private Messageブロックリスト /admin/structure/private_message_ban

システム内のすべてのプライベートメッセージブロックの管理リスト。管理者はブロックレコードの表示、編集、削除ができます。

権限 11
プライベートメッセージシステムを使用

ユーザーがプライベートメッセージを送受信できるようにします。基本的なメッセージ機能に必要です。

すべての参加者のプライベートメッセージスレッドを削除

ユーザーが自分の履歴をクリアするだけでなく、すべてのメンバーのスレッドを完全に削除できるようにします。

プライベートメッセージを管理

プライベートメッセージへの完全な管理アクセス。アクセス制限あり。

任意のプライベートメッセージを削除

管理者がシステム内の任意のプライベートメッセージを削除できるようにします。アクセス制限あり。

自分のプライベートメッセージを削除

ユーザーが自分で送信したプライベートメッセージを削除できるようにします。

Private Messageモジュールを管理

設定やEntity設定を含むPrivate Messageモジュール管理のすべての部分へのアクセスを許可。アクセス制限あり。

新しいPrivate Message Banエンティティを作成

ユーザーのメッセージ送信をブロックするブロックレコードの作成を許可。

Private Message Banエンティティを管理

設定を含むBanエンティティへの完全な管理アクセス。アクセス制限あり。

Private Message Banエンティティを削除

ユーザーのブロックを解除するためのブロックレコードの削除を許可。

Private Message Banエンティティを編集

既存のブロックレコードの編集を許可。

Private Message Banエンティティを表示

Banエンティティ情報の表示を許可。

Hooks 1
hook_private_message_new_message

新しいメッセージがスレッドに追加されたときに発火。通知の送信など、モジュールが新着メッセージに反応できるようにします。

Drush Commands 1
drush private_message:prepare_uninstall

すべてのプライベートメッセージとスレッドを削除してPrivate Messageモジュールのアンインストールを準備。モジュールを安全にアンインストールする前にこれが必要です。

Troubleshooting 6
AJAXリフレッシュが動作しない、またはメッセージが読み込まれない

ブラウザコンソールでJavaScriptエラーを確認。JavaScript集約が競合を引き起こしていないか確認。CSRFトークンが正しく生成されているか確認。ajax_refresh_rate設定が0(無効)に設定されていないか確認。

モジュールをアンインストールできない

プライベートメッセージデータが存在する間はモジュールをアンインストールできません。/admin/config/private-message/uninstallにアクセスするか、'drush private_message:prepare_uninstall'を実行してアンインストール前にすべてのメッセージとスレッドを削除。

Notification Blockが間違ったカウントを表示

任意のスレッドを保存してキャッシュタグをクリア。モジュールは'private_message_notification_block:uid:X'や'private_message:status:uid:X'などのキャッシュタグを使用。設定変更後にキャッシュクリアが必要な場合があります。

ブロックされたユーザーがまだメッセージを送信できる

ban_mode設定を確認。「パッシブ」モードでは、ブロックされたユーザーはメッセージを送信できますが、ブロックしたユーザーには表示されません。ブロックされたユーザーにエラーを表示したい場合は「アクティブ」モードに切り替えてください。

メール通知が送信されない

Private Message NotifyサブモジュールがMessage Notifyモジュールとともにインストールされていることを確認。プロファイルでユーザーの通知設定を確認。モジュール設定でenable_notificationsがtrueであることを確認。

Inbox Blockを配置するときのLayout Builder TypeError

この問題(Issue #3512770)は最近のバージョンで修正されています。モジュールを最新バージョンに更新してください。

Security Notes 6
  • モジュールは機能するために「use private messaging system」と「access user profiles」の両方の権限が必要で、匿名または未承認アクセスを防止
  • すべてのAJAXエンドポイントはCSRFトークンで保護
  • 「administer private messages」および関連する管理権限はセキュリティのため「restrict access」としてマーク
  • ユーザーブロックはクエリレベルで強制され、ブロックされたユーザーをオートコンプリートからフィルタし、オプションでメッセージ送信を防止
  • メッセージコンテンツはTextフィールドとして保存され、適切なテキストフォーマット制限を適用する必要があります
  • Banエンティティの管理権限は詳細なアクセス制御のために一般的なメッセージング権限から分離