通过 Laravel 通知自动发送推文
发布于 作者 Eric L. Barnes
在 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 的教程。