Laravel Notification یک امکان فوق العادست که از لاراول 5٫3 اضافه شده و کاربردش وقتی هست که شما بخواید اعلان هایی رو از طریق کانال های مختلف ارسال کنید. بسته به مستنداتش استفاده ی معمول از این ویژگی فرستان پیام های فوری حاوی اطلاعات هست که به کاربران اطلاع میده چه چیزی در نرم افزار شما درحال رخ دادن هست. مثلا اگر وبسایت فروشگاهی دارید بعد از هر خرید باید یک اعلان توسط SMS یا ایمیل به کاربران خود ارسال کنید.
بهرحال این اعلان ها محدود به مواردی که نام بردیم نیستند. برای مثال هرگاه یک پست در وبسایت منتشر شد به تمام اکانت های شبکه های اجتماعی ارسال بشوند.
برای ارسال اتوماتیک پست های جدید از یک پکیج به نام laravel-notification-channels/telegram استفاده می کنیم. بریم سراغ نحوه نصب و استفاده ارسال خودکار پیام ها به تلگرام.
ساخت یک ربات تلگرام
قبل اینکه بخواید پیامی به یک کانال بفرستید باید یک ربات تلگرام بسازید. برای شروع یک پیام جدید به BotFather@ بدید, به صورت زیر :
You: /newbot
BotFather: Alright, a new bot. How are we going to call it? Please choose a name for your bot.
You: MyTestBot
BotFather: Good. Now let's choose a username for your bot. It must end in bot. Like this, for example: TetrisBot or tetris_bot.
You: MyNewBot
BotFather: Done! Congratulations on your new bot. ... Use this token: xxxxxx
حالا شما باید این توکن رو نگه دارید تا بعدا در فایل env. وارد کنید.
افزودن ربات به کانال
تلگرامتون رو باز کنید و به settings -> administrators برید و رباتی که ساختید رو به کانال اضافه کنید. این کار قابلیت پست دادن رو به ربات میده.
نصب پکیج
برای دانلود و نصب پکیج از دستور زیر استفاده کنید :
composer require laravel-notification-channels/telegram
این رو به provider اضافه کنید :
'providers' => [
...
NotificationChannels\Telegram\TelegramServiceProvider::class,
],
حالا در فایل config/services.php اطلاعات زیر رو وارد کنید :
// config/services.php
...
'telegram-bot-api' => [
'token' => env('TELEGRAM_BOT_TOKEN', 'YOUR BOT TOKEN HERE')
],
درنهایت فایل env. رو باز کنید و توکن رو اضافه کنید :
TELEGRAM_BOT_TOKEN=1234:232jkl42l4j23kl
ساخت کلاس جدید Notification
همینطور که گفتیم ما میخوایم وقتی پستی در سایت منتشر شد یک اعلان جدید حاوی اون پست در تلگرام بفرستیم پس یک کلاس جدید Notification به اسم PostPublished از طریق کامند میسازیم :
php artisan make:notification PostPublished
حالا فایل رو باز کنید و متد زیر رو وارد کنید :
public function via($notifiable)
{
return [TelegramChannel::class];
}
حالا متد toTelegram رو میسازیم که حاوی اطلاعاتی هست که ما میخوایم بفرستیم :
public function toTelegram($post)
{
return TelegramMessage::create()
->to('@laravelnews')
->content($post->title.' https://laravel-news.com/'. $post->uri);
}
در این مورد این پیام ها رو به کانال laravelnews@ میفرسته و شامل عنوان و یک لینک به پست هست.
افزودن خصیصه ی اعلان (Notification trait)
Notification ها میتونند از دو راه ارسال بشوند. یکی با استفاده از Notification facade و دیگری استفاده از افزودن Notification trait به مدل هست. facade وقتی پیشنهاد میشه که شما بخواید یک اعلان رو به چند موجود ارسال کنید, برای مثال یک کالکشن از کاربران.
در این مقاله ما میخوایم بر پایه یک آیتم این کار رو انجام بدیم پس از روش دوم استفاده می کنیم:
use Illuminate\Notifications\Notifiable;
class Post extends Model
{
use Notifiable;
}
ارسال اولین اعلان
حالا بعد از انجام پیکربندی های لازم چیزی که نیاز داریم اینه اولین اعلان رو ارسال کنیم. یک آیتم از مدل بگیریم و اعلان رو بفرستیم :
$post = \App\Post::find(1);
$post->notify(new \App\Notifications\PostPublished());
اگر همه چیز درست باشه اون پیام رو بصورت زیر در کانال تلگرامتون می بینید :
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید