لاراول برای ارسال نوتیفیکیشن درایور های متنوعی داره که برای کاراتون میتونید ازش استفاده کنید… ولی بعضی وقتا پیش میاد که نیاز دارید چنل خودتون رو داشته باشید، برای این کار باید کانال ارسال خودتون رو بنویسید که خیلی راحته
مثلا در مسیر app
یک فولدر با عنوان channels
بسازید و توش یه کلاس php
با اسم دلخواهتون ایجاد کنید. من اسمشو میذارم SmsChannel
.
<?php
namespace App\Channels;
use Illuminate\Notifications\Notification;
class SmsChannel
{
/**
* Send the given notification.
*
* @param mixed $notifiable
* @param \Illuminate\Notifications\Notification $notification
* @return void
*/
public function send($notifiable, Notification $notification)
{
$message = $notification->toSms($notifiable);
//do your action
}
}
در قسمت do your action عملیاتی که برای ارسال نوتیفیکیشنتون(!) رو که میتونه متنوع باشه رو انجام بدید… مثلا اگه میخواید با استفاده از یه سرویس دهنده خاص اس ام اس ارسال کنید میتونید کلاسهای اون رو ایمپورت کنید و اس ام اس رو ارسال کنید.
مثلا برای ارسال پیامک بصورت زیر عمل کنید :
send_sms($message['receptor'], $message['message']);
که آرایه message از متد های کلاس های نوتیفیکیشن ها ارسال میشه…
برای ارسال نوتیفیکیشن در متد via
در کلاس نوتیفیکیشن \App\Channels\SmsChannel::class رو برگردونید… یه چیزی مثل این :
/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
* @return array
*/
public function via($notifiable)
{
return [\App\Channels\SmsChannel::class];
}
که میتونید از $notifiable
استفاده کنید و ببینید که اس ام اس واسه کاربر ارسال بشه یا نه… مثلا اعتبار کاربریش اجازه ارسال رو میده یا نه.
و متد زیر رو برای ارسال پیام در کلاس مربوط به نوتیفیکیشن بنویسید :
public function toSms($notifiable)
{
return [
'receptor' => $notifiable->mobile,
'message' => 'یک ورود ناموفق به حساب شما ثبت شد.'
];
}
دمت گرم!