最新のWebアプリケーションでは、メッセージ通知機能が重要です。ユーザー登録、パスワードリセット、または注文の更新であろうと、通知はユーザーエクスペリエンスの不可欠な部分です。この記事では、CakePHPミドルウェアを使用して電子メールとSMSサービスを統合して、自動化されたメッセージ通知関数を実現する方法を紹介します。
まず、CakePHPフレームワークを正しくインストールして構成していることを確認してください。さらに、有効な電子メールとSMSサービスプロバイダーAPIキーが必要です。この例では、MailGunをメールサービスプロバイダーとして、TwilioをSMSサービスプロバイダーとして使用します。
CakePHPでは、 config/app.phpファイルにSMTP設定を構成することにより、Mailgunが提供する電子メールサービスを使用できます。 MailGunを構成する例は次のとおりです。
// app.php
'EmailTransport' => [
'default' => [
'className' => 'CakeMailerTransportMailgunTransport',
'apiKey' => 'YOUR_MAILGUN_API_KEY',
'domain' => 'YOUR_MAILGUN_DOMAIN',
'url' => 'YOUR_MAILGUN_API_URL',
],
],
Your_mailgun_api_key 、 your_mailgun_domain 、 your_mailgun_api_urlを実際の値に置き換えてください。
SMSサービスの場合、Twilioが提供するAPIを使用します。 CakePhpでは、 config/app.phpでtwilioの関連する設定を構成することで実装できます。
// app.php
'Twilio' => [
'sid' => 'YOUR_TWILIO_SID',
'token' => 'YOUR_TWILIO_TOKEN',
'sender' => 'YOUR_TWILIO_PHONE_NUMBER',
],
同様に、 Your_twilio_sid 、 your_twilio_token 、 your_twilio_phone_numberを実際の値で置き換えます。
次に、メッセージ通知関数を処理するために、 notificationMiddleware.phpというミドルウェアファイルを書き込みます。ファイルは、SRC/ミドルウェアディレクトリに配置する必要があります。
// src/Middleware/NotificationMiddleware.php
namespace AppMiddleware;
use CakeMailerMailerAwareTrait;
use CakeMailerEmail;
use TwilioRestClient;
class NotificationMiddleware
{
use MailerAwareTrait;
public function __invoke($request, $response, $next)
{
// 次のミドルウェアを実行する前にコード
// メールを送信します
$this->getMailer('Default')->send('notification', [$data]);
// テキストメッセージの送信
$twilio = new Client(getenv('TWILIO_SID'), getenv('TWILIO_TOKEN'));
$twilio->messages->create(
$phoneNumber,
[
'from' => getenv('TWILIO_SENDER'),
'body' => $message,
]
);
// 次のミドルウェアを実行した後のコード
return $next($request, $response);
}
}
コードでは、CakePHPが付属しているMailerAwaretraitを使用して電子メールを送信しました。 TwilioのAPIを介してテキストメッセージを送信します。 「通知」は、Mailersディレクトリで作成したメールテンプレートを表し、 $データはメールテンプレートに渡されたデータです。
ミドルウェアが有効になるためには、 config/bootstrap.phpファイルに登録する必要があります。
// config/bootstrap.php
use AppMiddlewareNotificationMiddleware;
use CakeHttpMiddlewareQueue;
$middlewareQueue = new MiddlewareQueue();
$middlewareQueue->add(new NotificationMiddleware());
// 新しいものをセットアップしますmiddlewareQueue
$application->setMiddleware($middlewareQueue);
このコードは、通知をアプリケーションのミドルウェアキューに登録します。
CakePHPミドルウェアを使用すると、電子メールとSMSサービスを簡単に統合して、自動化されたメッセージ通知機能を実現できます。この記事で提供されているコードの例は、独自のプロジェクトで同様の機能を実装するのに役立ちます。ニーズに応じて、これらのコードをさらに拡張またはカスタマイズして、特定のニーズを満たすことができます。