Courier
メールなどの様々なチャンネルを通じてIDにメッセージを送信するための柔軟なシステムを提供するメッセージングフレームワーク。
courier
インストール
composer require 'drupal/courier:^2.0'
概要
Courierは、プラグインベースの柔軟なシステムを通じて、様々な通信チャンネルでID(通常はユーザー)にメッセージを送信するための強力なDrupalメッセージングフレームワークです。
このモジュールは元々RNG(Registration)モジュール用に設計され、Channel(テンプレートEntityタイプ)、Template Collection(異なるチャンネル用テンプレートのグループ)、Context(Token定義)、メッセージ配信を管理するQueueシステムなどの洗練されたアーキテクチャを導入しています。
Courierには標準でEmailチャンネルがバンドルされており、DrupalユーザーとリンクするPluginを提供します。他のモジュールは新しいチャンネル(SMS、プッシュ通知など)やIdentity Channel Pluginを作成してCourierを拡張し、異なる受信者タイプをサポートできます。
このモジュールはメッセージ配信にQueueベースのアプローチを使用し、高トラフィックサイトでの負荷分散とパフォーマンス向上を可能にします。メッセージはDrupalのCron Queueシステムを通じて処理され、デバッグ目的でQueueをスキップするオプション設定もあります。
Features
- 拡張可能なメッセージングチャンネル(メール、SMSなど)のためのPluginベースアーキテクチャ
- Tokenサポート付きでチャンネルタイプごとにメッセージテンプレートをグループ化するTemplate Collection
- エクスポート/インポート可能なテンプレートのための設定に保存されるGlobal Template Collection
- スケーラビリティのためのCron処理を伴うQueueベースのメッセージ配信システム
- ID(ユーザー)とチャンネル(メールアドレス)を橋渡しするIdentityChannel Plugin
- コンテキスト対応のToken利用可能性を持つToken置換システム
- Semantic UIコンポーネントを使用したAJAX対応テンプレート編集インターフェース
- チャンネル間の優先順位付きフォールバックを可能にするチャンネル設定管理
- 拡張Token閲覧のためのDrupal Tokenモジュールとの統合
Use Cases
Drupal Coreメールの置換
Courier Systemサブモジュールを使用して、Drupal組み込みのユーザーメールをリッチなテンプレートベースのメッセージに置換します。これにより、サイト管理者は完全なTokenサポート付きのCourierテンプレートシステムを使用して、パスワードリセットメール、ウェルカムメッセージ、アカウント通知をカスタマイズできます。
イベント登録通知
RNGモジュールと組み合わせると、Courierはすべてのイベント登録通信を処理します。イベント主催者は、Queueシステムを通じて登録者に送信されるカスタマイズされた確認メール、リマインダーメッセージ、更新を作成できます。
マルチチャンネルメッセージング
追加のチャンネルモジュール(SMS、プッシュ通知)でCourierを拡張し、マルチチャンネルメッセージングをサポートします。チャンネル設定を行うことで、ユーザーは希望するチャンネルでメッセージを受信し、プライマリチャンネルが失敗した場合は代替チャンネルに自動フォールバックします。
管理者による単発メッセージ
Message Composerサブモジュールを使用して、管理者がDrupal管理インターフェースから個々のユーザーに直接、迅速な単発メッセージを送信できるようにします。パーソナライズされた通信やサポート対応に便利です。
カスタムモジュール統合
開発者はTemplate Collectionを作成し、適切なTokenでContextを設定し、courier.managerサービスを使用して任意のID Entityにテンプレート化されたメッセージを送信することで、カスタムモジュールにCourierを統合できます。
Tips
- メッセージテンプレート編集時のToken閲覧体験を向上させるためにTokenモジュールをインストールしてください。
- 設定管理でメッセージテンプレートをエクスポート可能にするためにGlobal Template Collectionを使用してください。
- 即時メール送信によるパフォーマンス問題を防ぐため、本番サイトでは「Queueをスキップ」を無効のままにしてください。
- ユーザー以外のEntityタイプへのメッセージ送信をサポートするためにカスタムIdentityChannel Pluginを定義してください。
- Queueがバックアップされた場合、停滞したメッセージをクリーンアップするためにメンテナンスページを使用してください。
Technical Details
Admin Pages 2
/admin/config/communication/courier
各IDタイプのチャンネル設定やQueue動作を含むグローバルCourier設定を構成します。
/admin/config/communication/courier/maintenance
停滞したメッセージの削除を含む、CourierメッセージQueueを管理するためのメンテナンスツール。
権限 2
Hooks 1
hook_courier_identity_channel_info_alter
Pluginマネージャーによって検出されたIdentityChannel Pluginのリストを変更します。
Troubleshooting 3
メッセージQueueを処理するためにCronが定期的に実行されていることを確認してください。本番環境で「Queueをスキップ」設定が無効になっていることを確認してください。courier_message_queue_itemテーブルで停滞したメッセージを確認し、必要に応じてメンテナンスタブを使用してクリーンアップしてください。
Template Collectionに必要なTokenを含む正しいContextが設定されていることを確認してください。Contextは利用可能なTokenを定義します。また、sendMessage()を呼び出す際にToken値が渡されていることを確認してください。
ユーザーIDにメールアドレスが設定されていることを確認してください。Courier設定のチャンネル設定でユーザーIDタイプに対してcourier_emailが有効になっていることを確認してください。メール配信エラーがないかDrupalログを確認してください。
Security Notes 3
- 「administer courier」権限は制限付きとしてマークされており、信頼できる管理者にのみ付与してください。
- 「courier bypass queue」権限はサイトのパフォーマンスに影響を与える可能性があるため、控えめに使用してください。
- メッセージテンプレートはToken置換をサポートしています。XSS脆弱性を防ぐためにTokenが適切にエスケープされていることを確認してください。