hinaloe/laravel-line-notify

LINE Notify Provider for Laravel 5 notification

v0.0.1 2017-05-02 19:39 UTC

This package is auto-updated.

Last update: 2024-11-07 07:27:00 UTC


README

LINE Notify Provider for Laravel 5.3+ Notification.

Requirements

  • PHP 7.0+
  • Laravel 5.3+ (Recommend 5.4+)

Usage

  1. install package

    $ composer require hinaloe/laravel-line-notify
    
  2. Add \Hinaloe\LineNotify\LineNotifyServiceProvider to config/app.php or like.

  3. Make notifable class (ex User Model entity)

    <?php
    
    namespace App;
    
    use Illuminate\Notifications\Notifiable;
    use Illuminate\Foundation\Auth\User as Authenticatable;
    
    class User extends Authenticatable
    {
       use Notifiable;
       
       // ...
       
       /**
        * @return string LINE Notify OAuth2 token 
        */
       protected function routeNotificationForLine()
       {
           return 'hogehogehoge';
       }
    }
  4. Make notification

    <?php
    
    namespace App\Notifications;
    
    use App\User;
    use Illuminate\Bus\Queueable;
    use Illuminate\Contracts\Queue\ShouldQueue;
    use Illuminate\Notifications\Notification;
    use Hinaloe\LineNotify\Message\LineMessage;
    
    class NewUserNotification extends Notification// implements ShouldQueue
    {
        use Queueable;
        
        /** @var User  */
        protected $user;
        
        /**
         * Create a new notification instance.
         *
         * @param User $user
         */
        public function __construct(User $user)
        {
            $this->user  = $user;
        }
        
        /**
         * Get the notification's delivery channels.
         *
         * @param  mixed $notifiable
         *
         * @return array
         */
        public function via($notifiable)
        {
            return ['line'];
        }
        
        /**
         * @param mixed $notifable callee instance
         * @return LineMessage 
         */
        public function toLine($notifable)
        {
            return (new LineMessage())->message('New user: ' . $this->user->name)
                ->imageUrl('https://example.com/sample.jpg') // With image url (jpeg only)
                ->imageFile('/path/to/image.png') // With image file (png/jpg/gif will convert to jpg)
                ->sticker(40, 2); // With Sticker
        }
    }
  5. call $notifable->notify()

    $user = User::find(114514);
    $user->notify(new NewUserNotification($user));