Maison  >  Article  >  développement back-end  >  Middleware CakePHP : intégrez les services de messagerie et de SMS pour implémenter les notifications de messages

Middleware CakePHP : intégrez les services de messagerie et de SMS pour implémenter les notifications de messages

王林
王林original
2023-07-28 11:13:061147parcourir

Middleware CakePHP : intégrez les services de messagerie et de SMS pour implémenter les notifications de messages

Introduction :
Dans les applications Web modernes, les notifications de messages sont une fonction très importante. Les utilisateurs doivent recevoir des informations importantes du système, telles qu'une inscription réussie, la réinitialisation du mot de passe, les mises à jour de l'état des commandes, etc. Pour réaliser cette fonctionnalité, l’intégration des services de messagerie et SMS est devenue une approche courante. Dans cet article, je vais présenter comment utiliser le middleware CakePHP pour implémenter la fonction de notification de message et fournir quelques exemples de code spécifiques.

  1. Préparation de l'environnement :
    Tout d'abord, nous devons nous assurer que le framework CakePHP a été installé et configuré correctement. De plus, nous devons disposer de clés API valides du fournisseur de services de messagerie et de SMS. Dans cet article, j'utiliserai Mailgun comme fournisseur de services de messagerie et Twilio comme fournisseur de services SMS.
  2. Configurer le service de messagerie :
    Dans CakePHP, nous pouvons utiliser le service de messagerie fourni par Mailgun en configurant les paramètres SMTP dans le fichier config/app.php.
// app.php

'EmailTransport' => [
    'default' => [
        'className' => 'CakeMailerTransportMailgunTransport',
        'apiKey' => 'YOUR_MAILGUN_API_KEY',
        'domain' => 'YOUR_MAILGUN_DOMAIN',
        'url' => 'YOUR_MAILGUN_API_URL',
    ],
],

Nous devons remplacer YOUR_MAILGUN_API_KEY, YOUR_MAILGUN_DOMAIN et YOUR_MAILGUN_API_URL par les valeurs réelles. YOUR_MAILGUN_API_KEYYOUR_MAILGUN_DOMAINYOUR_MAILGUN_API_URL替换为实际的值。

  1. 配置短信服务:
    对于短信服务,我们将使用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_SIDYOUR_TWILIO_TOKENYOUR_TWILIO_PHONE_NUMBER

    Configurer le service SMS :
      Pour le service SMS, nous utiliserons l'API fournie par Twilio. Dans CakePHP, nous pouvons utiliser leurs services en configurant les paramètres Twilio dans le fichier config/app.php.

    1. // 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);
          }
      }
    2. De même, nous devons remplacer YOUR_TWILIO_SID, YOUR_TWILIO_TOKEN et YOUR_TWILIO_PHONE_NUMBER par les valeurs réelles.

    Créer un middleware :
      Maintenant, nous pouvons commencer à écrire un middleware CakePHP pour implémenter la fonction de notification de message. Tout d’abord, nous créons un fichier nommé NotificationMiddleware.php et le plaçons dans le répertoire src/Middleware.

    1. // config/bootstrap.php
      
      use AppMiddlewareNotificationMiddleware;
      use CakeHttpMiddlewareQueue;
      
      $middlewareQueue = new MiddlewareQueue();
      $middlewareQueue->add(new NotificationMiddleware());
      
      // 替换原有的middlewareQueue
      // ...
      
      // 设置新的middlewareQueue
      $application->setMiddleware($middlewareQueue);
    2. Dans le code, nous utilisons le MailerAwareTrait fourni avec CakePHP pour envoyer des e-mails. Nous avons également envoyé un SMS via l'API de Twilio. « notification » dans le code représente le modèle d'e-mail que nous avons créé dans le répertoire Mailers, et $data représente les données transmises au modèle d'e-mail.

    Enregistrer le middleware :

    Pour que le middleware fonctionne, nous devons l'enregistrer auprès de l'application. Nous pouvons le faire en ajoutant le code suivant au fichier bootstrap.php :

    rrreee🎜De cette façon, nous enregistrons le NotificationMiddleware dans la file d'attente middleware de l'application. 🎜🎜Conclusion : 🎜En utilisant le middleware CakePHP, nous pouvons facilement intégrer des services de messagerie et de SMS pour implémenter des fonctions de notification de messages. Cet article fournit quelques exemples de code qui, nous l’espérons, vous aideront à implémenter des fonctionnalités similaires dans vos propres projets. Bien entendu, vous pouvez également étendre et personnaliser ces codes en fonction de vos besoins. Bonne chance pour créer des applications Web puissantes et complètes avec CakePHP ! 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn