Vue d’ensemble
Avec LineChannel, vous pouvez envoyer des messages vers LINE depuis les notifications Laravel.
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.
Classe Notification
Retournez LineChannel::class depuis via() et définissez le message dans toLine().
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.
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().
use Illuminate\Notifications\Notifiable;
class User extends Model
{
use Notifiable;
public function routeNotificationForLine($notification): string
{
return $this->line_id;
}
}
$user->notify(new TestNotification());
Les userId et groupId peuvent être récupérés via des événements Webhook tels que FollowEvent ou JoinEvent.
Types de messages
Texte
Vous pouvez envoyer jusqu’à 5 messages.
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.
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().
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.
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.
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.
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().
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);
}