• Czas czytania ~4 min
  • 03.03.2023

Powiadomienia Laravel są świetne, gdy musisz wysyłać powiadomienia za pośrednictwem różnych kanałów. Na podstawie dokumentacji pierwotnym przypadkiem użycia jest wysyłanie szybkich komunikatów informacyjnych, które powiadamiają użytkowników o czymś, co wydarzyło się w aplikacji. Jeśli na przykład piszesz aplikację rozliczeniową, możesz wysłać powiadomienie "Zapłacono fakturę" do użytkowników za pośrednictwem kanałów e-mail i SMS.

Jednak nie muszą być ograniczone tylko do tego typu powiadomień. Na przykład na tej stronie za każdym razem, gdy publikowany jest nowy post, chcę, aby wychodził na wszystkie różne kanały społecznościowe, a społeczność < href = "https://laravel-news.com/2016/08/new-community-project-laravel-notification-channels/>" stworzyła wiele sterowników dla różnych usług.

Jednym z nowych obszarów, które stworzyłem kilka miesięcy temu, jest grupa tylko do odczytu < href = "https://telegram.me/laravelnews" > Laravel News Telegram, aw przeszłości ręcznie dodawałem do niej nowe posty dnia. Jak możesz sobie wyobrazić, jednego dnia zapomniałem zrobić to, potem następnego i tak dalej. Wiedziałem, że muszę zautomatyzować wysyłanie nowych postów i tam właśnie pojawia się pakiet powiadomień < href = "http://laravel-notification-channels.com/telegram/" > Telegram, rzućmy okiem na to, jak uzyskać tę konfigurację i automatyczne wysyłanie powiadomień do pokoju Telegram. Tworzenie bota

Telegrama

Zanim będziesz mógł wysyłać wiadomości do pokoju, musisz utworzyć bota. Aby rozpocząć, wyślij nową wiadomość na adres < href="https://telegram.me/botfather">@BotFather i wygląda ona tak:

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

Teraz będziesz potrzebować tego tokena później, aby dodać go do pliku .env, więc na razie miej go pod ręką.

Dodaj bota do swojego pokoju

Otwórz pokój Telegrama i przejdź do ustawień -> administratorów i dodaj właśnie utworzonego bota do kanału. Daje to dostęp do publikowania nowych wiadomości w pokoju.

Zainstaluj powiadomienia Telegrama

Instalacja jest typowa dla każdego pakietu Laravel. Najpierw wymagaj pakietu:Dodaj

composer require laravel-notification-channels/telegram

go do dostawców w app.php:

'providers' => [
    ...
    NotificationChannels\Telegram\TelegramServiceProvider::class,
],

Dodaj tablicę konfiguracyjną:

// config/services.php
...
'telegram-bot-api' => [
    'token' => env('TELEGRAM_BOT_TOKEN', 'YOUR BOT TOKEN HERE')
],

Na koniec otwórz .env i dodaj swój token:Utwórz nową klasę powiadomień

TELEGRAM_BOT_TOKEN=1234:232jkl42l4j23kl

 

W moim przypadku użycia zamierzam wysłać powiadomienie, gdy zostanie opublikowany nowy post, więc tworzę nową klasę powiadomień PostPublished za pomocą artisan:

php artisan make:notification PostPublished

Now otwórz plik i dostosuj metodę przez, aby powiedzieć mu, aby używał TelegramChannel:

public function via($notifiable)
{
    return [TelegramChannel::class];
}

Następnie utwórz metodę toTelegram, która będzie zawierać szczegóły, które chcesz wysłać:

public function toTelegram($post)
{
    return TelegramMessage::create()
        ->to('@laravelnews')
        ->content($post->title.' https://laravel-news.com/'. $post->uri);
}

W tym przypadku jest to wysyłanie do pokoju @laravelnews z treścią tytułu posta i linkiem do posta.Dodaj

cechę podlegającą obowiązkowi powiadomienia

Powiadomienia mogą być wysyłane na jeden z dwóch sposobów. Albo przez fasadę powiadomienia, albo przez dodanie cechy Powiadomienie do modelu. Fasada jest zalecana, gdy trzeba wysłać powiadomienie do wielu podlegających obowiązkowi zgłoszenia, takich jak kolekcja użytkowników.

W tym przykładzie wychodzi tylko na podstawie jednego elementu, więc dodałem tę cechę do mojego modelu Post.

use Illuminate\Notifications\Notifiable;
class Post extends Model
{
    use Notifiable;

Wysyłanie pierwszego powiadomienia Teraz,

gdy wszystko jest skonfigurowane i gotowe, wszystko, co pozostało do zrobienia, to wysłać nasze pierwsze powiadomienie. Pobierz pojedynczy przedmiot z modelu, a następnie odpal powiadomienie:

$post = \App\Post::find(1);
$post->notify(new \App\Notifications\PostPublished());

Jeśli wszystko się zgadza, zobaczysz je natychmiast na swoim kanale Telegrama.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

O

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

O autorze CrazyBoy49z
WORK EXPERIENCE
Kontakt
Ukraine, Lutsk
+380979856297