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.