Looking to hire Laravel developers? Try LaraJobs

laravel-notification-channel-line maintained by leochien

Description
LINE Notifications Channel for Laravel
Author
Last update
2025/05/20 02:06 (dev-main)
License
Links
Downloads
3 239

Comments
comments powered by Disqus

LINE Laravel Notifications Channel

Latest Version on Packagist Software License Total Downloads

Introduction

This package makes it easy to send notifications using LINE with Laravel 5.6+.

Contents

Installation

You can install the package via composer:

$ composer require leochien/laravel-notification-channel-line

Setting up the LINE service

In order to send message to LINE channels, you need to obtain Messaging API overview.

Add your LINE Message API Token to your config/services.php:

// config/services.php
...
'line_message_api' => [
    'token' => env('LINE_MESSAGE_TOKEN', 'YOUR MESSAGE TOKEN HERE'),
],
...

Usage

Text Message

Reference: Text Message You can use the channel in your via() method inside the notification:

use Illuminate\Notifications\Notification;
use LeoChien\LaravelNotificationChannelLine\LineMessage;
use LeoChien\LaravelNotificationChannelLine\LineWebhookChannel;

class TaskCompleted extends Notification
{
    public function via($notifiable): array
    {
        return [
            'line',
        ];
    }

    public function toLine($notifiable): LineMessage
    {
        return LineMessage::create()
            ->to('line_user_id')
            ->from('message_api_token') // optional if set in config
            ->content('Test message');
    }
}

Available methods

create(): Initial a message instance.

from(): Optional. Sets the sender's access token. Default to the set in config.

to(): Required. Specifies the line user id to send the notification to.

content(): Required. Sets a content of the notification message. Only support plain text for now.

Template Messages

Reference: Template messages

Currently, only 'buttons' and 'confirm' template types are supported. We will update to support 'carousel' and 'image carousel' as soon as possible.

use Illuminate\Notifications\Notification;
use LeoChien\LaravelNotificationChannelLine\LineTemplateMessage;
use LeoChien\LaravelNotificationChannelLine\LineWebhookChannel;

class TaskCompleted extends Notification
{
    public function via($notifiable): array
    {
        return [
            'line',
        ];
    }

    public function toLine($notifiable): LineMessage
    {
        return LineTemplateMessage::create()
            ->to('line_user_id')
            ->from('message_api_token') // optional if set in config
            ->type('buttons')
            ->thumbnailImageUrl('https://fakeimg.pl/350x200')
            ->text("This is the text of the message")
            ->actions([
                [
                    'type' => 'uri',
                    'label' => 'See more',
                    'uri' => 'https://example.com',
                ],
            ]);
    }
}

Available methods

from(): Sets the sender's access token.

to(): Specifies the line user id to send the notification to.

type(): Required. template type, allowed value: buttons, confirm, carousel, image_carousel.

thumbnailImageUrl(): Optional. Image URL (Max character limit: 2000). Protocol: HTTPS (TLS 1.2 or later). Image format: JPEG or PNG. Max width: 1024px. Max file size: 10 MB.

imageAspectRatio(): Optional. Aspect ratio of the image. Allowed values: rectangle(1.51:1), square(1:1). Default: rectangle.

imageSize(): Optional. Size of the image. Allowed Values: cover, contain. Default: cover.

imageBackgroundColor(): Optional. Background color of the image. Specify a RGB color value. Default: #FFFFFF (white)

title(): Optional. Message Title, max character limit: 40.

text(): Required. Message text, max character limit: 160 (no image or title), max character limit: 60 (message with an image or title).

defaultAction(): Optional. Action when image, title or text area is tapped.

actions(): Required. Action when tapped, max objects: 4.

Flex Messages

Reference: Flex messages

Flex messages allow you to create richly laid out messages that can contain combinations of text, buttons, images, and more, arranged in a flexible layout.

use Illuminate\Notifications\Notification;
use LeoChien\LaravelNotificationChannelLine\LineFlexMessage;
use LeoChien\LaravelNotificationChannelLine\LineWebhookChannel;

class TaskCompleted extends Notification
{
    public function via($notifiable): array
    {
        return [
            'line',
        ];
    }

    public function toLine($notifiable): LineMessage
    {
        return LineFlexMessage::create()
            ->to('line_user_id')
            ->from('message_api_token') // optional if set in config
            ->altText('This is a Flex Message')
            ->contents([
                'type' => 'bubble',
                'body' => [
                    'type' => 'box',
                    'layout' => 'vertical',
                    'contents' => [
                        [
                            'type' => 'text',
                            'text' => 'Hello, World!',
                            'weight' => 'bold',
                            'size' => 'xl'
                        ],
                        [
                            'type' => 'box',
                            'layout' => 'vertical',
                            'margin' => 'lg',
                            'spacing' => 'sm',
                            'contents' => [
                                [
                                    'type' => 'text',
                                    'text' => 'This is a Flex Message',
                                    'color' => '#aaaaaa',
                                    'size' => 'sm',
                                    'flex' => 1
                                ]
                            ]
                        ]
                    ]
                ],
                'footer' => [
                    'type' => 'box',
                    'layout' => 'vertical',
                    'spacing' => 'sm',
                    'contents' => [
                        [
                            'type' => 'button',
                            'style' => 'primary',
                            'action' => [
                                'type' => 'uri',
                                'label' => 'Go to Website',
                                'uri' => 'https://example.com'
                            ]
                        ]
                    ]
                ]
            ]);
    }
}

Available methods

from(): Optional. Sets the sender's access token. Default to the set in config.

to(): Required. Specifies the line user id to send the notification to.

altText(): Required. Alternative text for devices that don't support Flex Message.

contents(): Required. The JSON object that defines the layout and content of the Flex Message.

Security

If you discover any security related issues, please email s950329@hotmail.com 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.