在 Laravel 5.3 中发布的一项激动人心的新功能是 Laravel 通知,它允许您通过各种服务发送快速更新。
Laravel 核心包含对电子邮件、Slack 和 Nexmo 的支持,但您也可以构建自己的通知,或者访问 社区项目,其中已经构建了许多集成。
我在开发这个网站时,希望在发布新文章时自动发送一条推文,而 包,正是为此而创建,它由 Christoph Rumpel 创建。让我们看看如何轻松地集成 Twitter 包并自动发布新文章的推文。
Twitter 包设置
首先,安装该包
composer require laravel-notification-channels/twitter
接下来,将提供程序添加到 config/app.php
...'providers' => [ ... NotificationChannels\Twitter\TwitterServiceProvider::class,],...
最后,在 Twitter 上创建一个新应用,并将您的配置添加到 config/services.php 文件和您的 .env 文件中
...'twitter' => [ 'consumer_key' => getenv('TWITTER_CONSUMER_KEY'), 'consumer_secret' => getenv('TWITTER_CONSUMER_SECRET'), 'access_token' => getenv('TWITTER_ACCESS_TOKEN'), 'access_secret' => getenv('TWITTER_ACCESS_SECRET')]...
提示:access_token 和 access_secret 可以在 Twitter 应用页面上的“密钥和访问令牌”选项卡中找到。
发送推文
在我的设置中,我有一个 Post 模型,将使用它来发送推文,但您可以使用任何现有的模型。只需向它添加 Notifiable 特性即可
class Post extends Model{ use Notifiable;
接下来,创建您的通知类
php artisan make:notification PostPublished
打开此文件,调整 via
方法,并添加一个 toTwitter
方法。以下是完成的类
<?php namespace App\Notifications; use Illuminate\Notifications\Notification;use NotificationChannels\Twitter\TwitterChannel;use NotificationChannels\Twitter\TwitterStatusUpdate; class PostPublished extends Notification{ public function via($notifiable) { return [TwitterChannel::class]; } public function toTwitter($notifiable) { return new TwitterStatusUpdate('You should follow @laravelnews https://news.laravel.net.cn/'); }}
现在,要调用所有这些,您需要做的就是获取一个 Post 并发送它
$post = Post::find(1);$post->notify(new PostPublished());
我们需要做的最后一个更改是更新 PostPublished 类中的 toTwitter
方法,使其包含实际的帖子数据。
public function toTwitter($post) { return new TwitterStatusUpdate($post->title .' https://news.laravel.net.cn/'. $post->uri, [$post->featured_image]);}
Post 模型被传递到该方法中,然后我只提取标题、帖子的完整路径,并将帖子的特色图片作为第二个参数添加。
就是这样!
这些通知频道简化了与许多外部服务的集成,这些服务在过去需要手动设置,非常麻烦。如果您想更进一步,这里有一个关于 如何将通知发送到 Telegram 的教程
