laravel-notification-channels/twitter
Composer 安装命令:
composer require laravel-notification-channels/twitter
包简介
This package makes it easy to send notifications via Twitter with Laravel
README 文档
README
Twitter notification channel for Laravel
This package makes it easy to send Laravel notifications using Twitter. (Laravel 8+)
PS: v8 now uses the new Twitter API V2. Please read the upgrade guide for your app here.
Contents
- About
- Installation
- Setting up the Twitter service
- Usage
- Handle multiple Twitter Accounts
- Changelog
- Testing
- Security
- Contributing
- Credits
- License
About
This package is part of the Laravel Notification Channels project. It provides additional Laravel Notification channels to the ones given by Laravel itself.
The Twitter channel makes it possible to send out Laravel notifications as a Twitter tweet (post on the timeline) or as a direct message.
Installation
If you prefer a video, there is also an introduction video available for you. If not, just read on.
You can install this package via composer:
composer require laravel-notification-channels/twitter
The service provider gets loaded automatically.
Twitter App & Credentials
You will need to create a Twitter app to use this channel. Within this app, you will find the keys and access tokens.
Your Twitter app must be within a project. Also, make sure to activate the user authentication settings:
After that, you have to regenerate your access token and secret. If done correctly, you should see the right permissions for your access tokens:
Make sure to copy the right credentials and place them inside your .env file.
TWITTER_CONSUMER_KEY=your-consumer-key TWITTER_CONSUMER_SECRET=your-consumer-secret TWITTER_ACCESS_TOKEN=your-accesss_token TWITTER_ACCESS_SECRET=your-access-token-secret
To load them, add this to your config/services.php file:
... 'twitter' => [ 'consumer_key' => env('TWITTER_CONSUMER_KEY'), 'consumer_secret' => env('TWITTER_CONSUMER_SECRET'), 'access_token' => env('TWITTER_ACCESS_TOKEN'), 'access_secret' => env('TWITTER_ACCESS_SECRET') ] ...
Usage
To use this package, you need to create a notification class, like NewsWasPublished from the example below, in your Laravel application. Make sure to check out Laravel's documentation for this process.
Publish a Twitter status update
<?php use Illuminate\Notifications\Notification; use NotificationChannels\Twitter\TwitterChannel; use NotificationChannels\Twitter\TwitterMessage; use NotificationChannels\Twitter\TwitterStatusUpdate; class NewsWasPublished extends Notification { /** * Get the notification's delivery channels. * * @param mixed $notifiable * @return array */ public function via($notifiable) { return [TwitterChannel::class]; } public function toTwitter(mixed $notifiable): TwitterMessage { return new TwitterStatusUpdate('Laravel notifications are awesome!'); } }
Take a closer look at the toTwitter method. Here, we define what kind of Twitter message we want to trigger. In this case, it is a status update message, which is just a new message in your timeline.
public function toTwitter(mixed $notifiable): TwitterMessage { return new TwitterStatusUpdate('Laravel notifications are awesome!'); }
Publish Twitter status update with images
It is possible to publish images with your status update too. You have to pass the image path to the withImage method.
public function toTwitter(mixed $notifiable): TwitterMessage { return (new TwitterStatusUpdate('Laravel notifications are awesome!'))->withImage('marcel.png'); }
If you want to use multiple images, just pass an array of paths.
return (new TwitterStatusUpdate('Laravel notifications are awesome!'))->withImage([ public_path('marcel.png'), public_path('mohamed.png') ]);
Publish Twitter status update with videos
It is possible to publish videos with your status update too. You have to pass the video path to the withVideo method.
public function toTwitter(mixed $notifiable): TwitterMessage { return (new TwitterStatusUpdate('Laravel notifications are awesome!'))->withVideo('video.mp4'); }
If you want to use multiple videos, just pass an array of paths.
return (new TwitterStatusUpdate('Laravel notifications are awesome!'))->withVideo([ public_path('video1.mp4'), public_path('video.gif') ]);
Publish Twitter status update with both images and videos
It is also possible to publish both images and videos with your status by using a mixture of the two methods.
return (new TwitterStatusUpdate('Laravel notifications are awesome!'))->withVideo([ public_path('video1.mp4'), public_path('video.gif') ])->withImage([ public_path('marcel.png'), public_path('mohamed.png') ]);
Publish a Twitter status update in reply to another tweet
Additionally, you can publish a status update in reply to another tweet. This is possible by using the inReplyTo method.
public function toTwitter(mixed $notifiable): TwitterMessage { return (new TwitterStatusUpdate('@christophrumpel Laravel notifications are awesome!'))->inReplyTo(123); }
Note that the reply status ID will be ignored if you omit the author of the original tweet, according to Twitter docs.
Send a direct message (NOT working with the FREE Twitter API plan!)
To send a Twitter direct message to a specific user, you will need the TwitterDirectMessage class. Provide the Twitter user handler as the first parameter and the message as the second one.
public function toTwitter(mixed $notifiable): TwitterMessage { return new TwitterDirectMessage('marcelpociot', 'Hey Marcel, it was nice meeting you at the Laracon.'); }
You can also provide the user ID instead of the screen name. This would prevent an extra Twitter API call. Make sure to pass it as an integer when you do.
public function toTwitter(mixed $notifiable): TwitterMessage { return new TwitterDirectMessage(12345, 'Hey Marcel, it was nice meeting you at the Laracon.'); }
Handle multiple Twitter Accounts
There might be cases where you need to handle multiple Twitter accounts. This means you need to be able to change the provided keys and tokens of your Twitter app. Luckily, Laravel can help you here. In your notifiable model, you can define the routeNotifiactionForTwitter method. Here you can override the provided settings.
public function routeNotificationForTwitter($notification) { return [ 'TWITTER_CONSUMER_KEY', 'TWITTER_CONSUMER_SECRET', 'TWITTER_ACCESS_TOKEN', 'TWITTER_ACCESS_SECRET', ]; }
Changelog
Please see CHANGELOG for more information about what has changed recently.
Testing
$ composer test
Security
If you discover any security-related issues, please email c.rumpel@kabsi.at instead of using the issue tracker.
Contributing
Please see CONTRIBUTING for details.
Credits
License
The MIT License (MIT). Please see License File for more information.
laravel-notification-channels/twitter 适用场景与选型建议
laravel-notification-channels/twitter 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 229.18k 次下载、GitHub Stars 达 175, 最近一次更新时间为 2016 年 08 月 21 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 laravel-notification-channels/twitter 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 laravel-notification-channels/twitter 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 229.18k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 176
- 点击次数: 24
- 依赖项目数: 2
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2016-08-21
