Private Message
スレッド機能、ユーザーブロック機能、リアルタイム通知をサポートする包括的なプライベートメッセージシステムです。ユーザー間でプライベートメッセージを送受信できます。
private_message
インストール
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
/admin/config/private-message/config
Private Messageモジュールのメイン設定ページ。通知設定、メッセージフォームラベル、ユーザーブロック動作、表示オプションを設定します。
/admin/structure/private-message
Private MessageのEntityタイプ、そのField、フォーム表示、ビュー表示を管理するための管理ダッシュボード。
/admin/structure/private-message/private-message-thread
Private Message ThreadエンティティのField、フォーム表示、ビュー表示を管理。
/admin/structure/private-message/private-message
Private MessageエンティティのField、フォーム表示、ビュー表示を管理。
/admin/config/private-message/uninstall
すべてのプライベートメッセージデータを削除してモジュールのアンインストールを準備。このページは情報を表示し、すべてのメッセージとスレッドを削除する前に確認を求めます。
/admin/structure/private_message_ban
システム内のすべてのプライベートメッセージブロックの管理リスト。管理者はブロックレコードの表示、編集、削除ができます。
権限 11
Hooks 1
hook_private_message_new_message
新しいメッセージがスレッドに追加されたときに発火。通知の送信など、モジュールが新着メッセージに反応できるようにします。
Drush Commands 1
drush private_message:prepare_uninstall
すべてのプライベートメッセージとスレッドを削除してPrivate Messageモジュールのアンインストールを準備。モジュールを安全にアンインストールする前にこれが必要です。
Troubleshooting 6
ブラウザコンソールでJavaScriptエラーを確認。JavaScript集約が競合を引き起こしていないか確認。CSRFトークンが正しく生成されているか確認。ajax_refresh_rate設定が0(無効)に設定されていないか確認。
プライベートメッセージデータが存在する間はモジュールをアンインストールできません。/admin/config/private-message/uninstallにアクセスするか、'drush private_message:prepare_uninstall'を実行してアンインストール前にすべてのメッセージとスレッドを削除。
任意のスレッドを保存してキャッシュタグをクリア。モジュールは'private_message_notification_block:uid:X'や'private_message:status:uid:X'などのキャッシュタグを使用。設定変更後にキャッシュクリアが必要な場合があります。
ban_mode設定を確認。「パッシブ」モードでは、ブロックされたユーザーはメッセージを送信できますが、ブロックしたユーザーには表示されません。ブロックされたユーザーにエラーを表示したい場合は「アクティブ」モードに切り替えてください。
Private Message NotifyサブモジュールがMessage Notifyモジュールとともにインストールされていることを確認。プロファイルでユーザーの通知設定を確認。モジュール設定でenable_notificationsがtrueであることを確認。
この問題(Issue #3512770)は最近のバージョンで修正されています。モジュールを最新バージョンに更新してください。
Security Notes 6
- モジュールは機能するために「use private messaging system」と「access user profiles」の両方の権限が必要で、匿名または未承認アクセスを防止
- すべてのAJAXエンドポイントはCSRFトークンで保護
- 「administer private messages」および関連する管理権限はセキュリティのため「restrict access」としてマーク
- ユーザーブロックはクエリレベルで強制され、ブロックされたユーザーをオートコンプリートからフィルタし、オプションでメッセージ送信を防止
- メッセージコンテンツはTextフィールドとして保存され、適切なテキストフォーマット制限を適用する必要があります
- Banエンティティの管理権限は詳細なアクセス制御のために一般的なメッセージング権限から分離