> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Canal de notification - LINE SDK for Laravel

> Intégrer le système de notifications de Laravel avec l'API Messaging de LINE pour envoyer des notifications.

## Vue d'ensemble

Avec `LineChannel`, vous pouvez envoyer des messages vers LINE depuis les notifications Laravel.

<Info>
  Suite à l'arrêt du service LINE Notify, la prise en charge de LINE Notify est terminée. Les notifications passent désormais par l'API Messaging, qui est soumise à des limites de nombre d'envois selon le plan tarifaire. Consultez [la tarification de l'API Messaging](https://developers.line.biz/en/docs/messaging-api/pricing/).
</Info>

## Classe Notification

Retournez `LineChannel::class` depuis `via()` et définissez le message dans `toLine()`.

```php theme={null}
use Illuminate\Notifications\Notification;
use Revolution\Line\Notifications\LineChannel;
use Revolution\Line\Notifications\LineMessage;

class TestNotification extends Notification
{
    public function via(object $notifiable): array
    {
        return [
            LineChannel::class,
        ];
    }

    public function toLine(object $notifiable): LineMessage
    {
        return LineMessage::create(text: 'test');
    }
}
```

## Modes d'envoi

### Notification à la demande (on-demand)

Pour envoyer une notification sans passer par un modèle utilisateur, utilisez `Notification::route()`. La destination est un `userId` ou un `groupId`.

```php theme={null}
use Illuminate\Support\Facades\Notification;

Notification::route('line', 'to')
            ->notify(new TestNotification());
```

### Notification depuis un modèle User

Pour gérer la destination par utilisateur, définissez `routeNotificationForLine()`.

```php theme={null}
use Illuminate\Notifications\Notifiable;

class User extends Model
{
    use Notifiable;

    public function routeNotificationForLine($notification): string
    {
        return $this->line_id;
    }
}
```

```php theme={null}
$user->notify(new TestNotification());
```

<Info>
  Les `userId` et `groupId` peuvent être récupérés via des événements Webhook tels que `FollowEvent` ou `JoinEvent`.
</Info>

## Types de messages

### Texte

Vous pouvez envoyer jusqu'à 5 messages.

```php theme={null}
use Revolution\Line\Notifications\LineMessage;

public function toLine(object $notifiable): LineMessage
{
    return LineMessage::create()
                      ->text('text 1')
                      ->text('text 2');
}
```

### Personnaliser le nom d'expéditeur et l'icône

`withSender()` doit être appelée avant les méthodes d'ajout de message.

```php theme={null}
use Revolution\Line\Notifications\LineMessage;

public function toLine(object $notifiable): LineMessage
{
    return LineMessage::create()
                      ->withSender(name: 'alt-name', icon: 'https://...png')
                      ->text('text 1')
                      ->text('text 2');
}
```

Vous pouvez également spécifier le nom et l'icône via les paramètres de `create()`.

```php theme={null}
use Revolution\Line\Notifications\LineMessage;

public function toLine(object $notifiable): LineMessage
{
    return LineMessage::create(text: 'test', name: 'alt-name', icon: 'https://...png');
}
```

### Sticker

Pour la liste des stickers utilisables, consultez la [Sticker list](https://developers.line.biz/en/docs/messaging-api/sticker-list/).

```php theme={null}
use Revolution\Line\Notifications\LineMessage;

public function toLine(object $notifiable): LineMessage
{
    return LineMessage::create()
                      ->text('test')
                      ->sticker(package: 446, sticker: 1988);
}
```

### Image

Spécifiez une URL publique.

```php theme={null}
use Revolution\Line\Notifications\LineMessage;

public function toLine(object $notifiable): LineMessage
{
    return LineMessage::create()
                      ->image(original: 'https://.../test.png', preview: 'https://.../preview.png');
}
```

### Vidéo

Spécifiez une URL publique.

```php theme={null}
use Revolution\Line\Notifications\LineMessage;

public function toLine(object $notifiable): LineMessage
{
    return LineMessage::create()
                      ->video(original: 'https://.../test.mp4', preview: 'https://.../preview.png');
}
```

### Autres types de messages

`message()` permet d'ajouter n'importe quel type de message. Spécifiez le type avec `setType()`.

```php theme={null}
use LINE\Clients\MessagingApi\Model\LocationMessage;
use LINE\Constants\MessageType;
use Revolution\Line\Notifications\LineMessage;

public function toLine(object $notifiable): LineMessage
{
    $location = (new LocationMessage())
        ->setType(MessageType::LOCATION)
        ->setTitle('title')
        ->setAddress('address')
        ->setLatitude(0.0)
        ->setLongitude(0.0);

    return LineMessage::create()
                      ->message($location);
}
```

<Info>
  Pour les dernières informations, consultez le [dépôt GitHub](https://github.com/invokable/laravel-line-sdk).
</Info>


## Related topics

- [Canal de notification - Laravel Bluesky](/fr/packages/laravel-bluesky/notification.md)
- [LINE SDK for Laravel](/fr/packages/laravel-line-sdk/index.md)
- [Notifications](/fr/notifications.md)
- [Laravel Notification for Discord (Webhook)](/fr/packages/laravel-notification-discord-webhook.md)
- [Laravel Bluesky](/fr/packages/laravel-bluesky/index.md)
