该包使得使用Laravel通过Twitter发送通知变得简单

V8.1.2 2024-04-05 17:35 UTC

README

image

Laravel的Twitter通知渠道

Latest Version on Packagist Software License StyleCI Quality Score Code Coverage Total Downloads

此包使得使用Twitter发送Laravel通知变得简单。(Laravel 8+)

PS:v8现在使用新的Twitter API V2。请阅读您的应用程序升级指南此处

内容

关于

此包是Laravel通知渠道项目的一部分。它为Laravel本身提供额外的通知渠道。

Twitter渠道使得将Laravel通知作为Twitter推文(时间轴上的帖子)或作为私信发送成为可能。

安装

如果您更喜欢视频,还有一个介绍视频可供您观看。如果不,请继续阅读。

您可以通过composer安装此包

composer require laravel-notification-channels/twitter

服务提供程序会自动加载。

Twitter应用及凭证

您需要创建一个Twitter应用来使用此渠道。在此应用中,您将找到密钥和访问令牌

您的Twitter应用必须在项目中。同时,请确保激活用户认证设置

image

之后,您需要重新生成访问令牌和密钥。如果操作正确,您应该看到正确的访问令牌权限

image

请确保复制正确的凭证并将它们放在您的.env文件中。

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
image

要将它们加载,请将以下内容添加到您的config/services.php文件中

...
'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')
]
...

使用方法

要使用此包,您需要在您的Laravel应用程序中创建一个通知类,如下面的示例中的NewsWasPublished。请确保查看Laravel文档了解此过程。

发布Twitter状态更新

<?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!');
    }
}

仔细查看toTwitter方法。在这里,我们定义我们想要触发的Twitter消息类型。在这种情况下,它是一个状态更新消息,只是您时间轴上的新消息。

public function toTwitter(mixed $notifiable): TwitterMessage
{
    return new TwitterStatusUpdate('Laravel notifications are awesome!');
}

发布带图片的Twitter状态更新

您还可以与状态更新一起发布图片。您必须将图片路径传递给withImage方法。

public function toTwitter(mixed $notifiable): TwitterMessage
{
    return (new TwitterStatusUpdate('Laravel notifications are awesome!'))->withImage('marcel.png');
}

如果您想使用多张图片,只需传递路径数组。

return (new TwitterStatusUpdate('Laravel notifications are awesome!'))->withImage([
    public_path('marcel.png'),
    public_path('mohamed.png')
]);

发布带视频的Twitter状态更新

您还可以与状态更新一起发布视频。您必须将视频路径传递给withVideo方法。

public function toTwitter(mixed $notifiable): TwitterMessage
{
    return (new TwitterStatusUpdate('Laravel notifications are awesome!'))->withVideo('video.mp4');
}

如果您想使用多个视频,只需传递路径数组。

return (new TwitterStatusUpdate('Laravel notifications are awesome!'))->withVideo([
    public_path('video1.mp4'),
    public_path('video.gif')
]);

发布同时包含图片和视频的Twitter状态更新

您也可以使用这两种方法的组合来通过状态发布图片和视频。

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')
]);

回复其他推文发布Twitter状态更新

此外,您还可以回复其他推文发布状态更新。这可以通过使用inReplyTo方法实现。

public function toTwitter(mixed $notifiable): TwitterMessage
{
    return (new TwitterStatusUpdate('@christophrumpel Laravel notifications are awesome!'))->inReplyTo(123);
}

请注意,如果根据Twitter文档,您省略了原始推文的作者,回复状态ID将被忽略。

发送直接消息(不适用于免费Twitter API计划!)

要向特定用户发送Twitter直接消息,您需要使用TwitterDirectMessage类。将Twitter用户处理程序作为第一个参数,将消息作为第二个参数提供。

public function toTwitter(mixed $notifiable): TwitterMessage
{
     return new TwitterDirectMessage('marcelpociot', 'Hey Marcel, it was nice meeting you at the Laracon.');
}

您也可以提供用户ID而不是屏幕名。这可以防止额外的Twitter API调用。确保将其作为整数传递。

public function toTwitter(mixed $notifiable): TwitterMessage
{
     return new TwitterDirectMessage(12345, 'Hey Marcel, it was nice meeting you at the Laracon.');
}

处理多个Twitter账号

可能存在需要处理多个Twitter账户的情况。这意味着您需要能够更改您Twitter应用程序提供的密钥和令牌。幸运的是,Laravel在这里可以帮助您。在您的通知模型中,您可以定义routeNotifiactionForTwitter方法。在这里,您可以覆盖提供的设置。

public function routeNotificationForTwitter($notification)
{
   return [
      'TWITTER_CONSUMER_KEY',
      'TWITTER_CONSUMER_SECRET',
      'TWITTER_ACCESS_TOKEN',
      'TWITTER_ACCESS_SECRET',
   ];
}

变更日志

有关最近更改的更多信息,请参阅变更日志

测试

$ composer test

安全

如果您发现任何与安全相关的问题,请通过电子邮件c.rumpel@kabsi.at而不是使用问题跟踪器。

贡献

有关详细信息,请参阅贡献指南

鸣谢

许可证

MIT许可(MIT)。有关更多信息,请参阅许可文件