Laravel notifications on Slack

0

Cześć uzywał ktos notyfikacji w Laravel? potrzebuje wyswietlić na kanale slack komunikaty z aplikacji. Tyle że ta dokumentacja https://laravel.com/docs/7.x/notifications#slack-notifications ze strony Laravel jest nie jasna albo coś porąbałem całkiem.

zainstalowałem paczkę composer require laravel/slack-notification-channel potem na slacku wygenerowalem sobie swoj key do kanału. env. skonfigurowalem tak jak w dokumentacji czyli wkleiłem klucz.

potem wygenerowalem sobie moja notyfikacje php artisan make:notification mojaNotyfikacja mój plik poniżej. I pytanie jak mam to teraz wywołać? żeby mi poszły te powiadomienia? Cos trzeba jeszcze podpiąć? jakas komenda z konsoli?

<?php

namespace App\Notifications;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Messages\SlackMessage;
use Illuminate\Notifications\Notification;
use Illuminate\Support\Arr;
use App\Repositories\GeneratorLogsRepository;

class GeneratorLogsCompleted extends Notification {
    use Queueable;
    /**
     * @var array
     */
    private $account;
    private $type;

    /**
     * Create a new notification instance.
     *
     * @param array $sets
     * @param array $variant
     * @param $account
     */
    public function __construct($account, $type)
    {
        $this->account = $account;
        $this->type = $type;
    }

    /**
     * Get the notification's delivery channels.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function via($notifiable)
    {
        return ['slack'];
    }


    /**
     * @param $notifiable
     * @return SlackMessage
     */
    public function toSlack($notifiable)
    {
        $percentageDiff = (new GeneratorLogsRepository)->notifyIfRequire($this->account, $this->type);
        return (new SlackMessage)
            //
            ->to('#fuckups')
            ->content('Uwaga dla konta :'.$this->account.' wygenerowano o: '.$percentageDiff.'% '.($percentageDiff > 0 ? 'więcej' : 'mniej' ) .'%  ');




    }

    /**
     * Get the mail representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return \Illuminate\Notifications\Messages\MailMessage
     */
    public function toMail($notifiable)
    {
        return (new MailMessage)
            ->line('The introduction to the notification.')
            ->action('Notification Action', url('/'))
            ->line('Thank you for using our application!');
    }

    /**
     * Get the array representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function toArray($notifiable)
    {
        return [
            //
        ];
    }
}

1

Robiłem i jest to banalnie proste. Ciężko sprawdzić początek dokumentacji z notyfikacjami? :) Tam wszystko jest... https://laravel.com/docs/8.x/notifications#using-the-notifiable-trait

0

no ok ale gdzie mam tego uzyc?

<?php

namespace App;

use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class User extends Authenticatable
{
    use Notifiable;
}

to jest z dokumentacji APP/User u mnie nie istnieje

3

Nie masz klasy User? Jaka wersja Laravel?
Sprawdzaj dokumentację do właściwej wersji.
Poniżej wersji 6 trzeba było samemu włączyć moduł autentyfikacji:
https://laravel.com/docs/5.8/authentication.
Nie pamiętam, ale bez włączonej chyba nie było też klasy User.

0

dobra mam users w app/models/users.php

use App\Notifications\InvoicePaid;

$user->notify(new InvoicePaid($invoice));

to wywaołanie?

1

Czy ty w ogóle potrafisz programować? Bo te pytania są z czapy. W laravelu wszystkie notyfikacje idą przez konkretną osobę i musis być user, a nie user module tylko user model, gdzie extened jest model lub eloquent. W twoim przypadku wywołanie powinno wyglądać tak :

$user->notify(new GeneratorLogsCompleted($account, $type)); 
0

postawiłem sobie projekt laravel nowy na czysto i robilem zgodnie z solucją z tego filmiku na starej wersji 5.5 Laravel. Dochodzę do momentu 6:30 gdzie gośc rejestruje command w kernel.php wszystko wyswietla mi sie w php artisan list. Natomiast gdy odpalam command wywla mi błąd

php artisan test:slack
In TestUserRegisteredNotification.php line 40:

  Class 'App\Console\Commands\User' not found


mój plik z TestUserRegisteredNotification.php w commands wygląda tak:

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;



class TestUserRegisteredNotification extends Command
{
   /**
    * The name and signature of the console command.
    *
    * @var string
    */
   protected $signature = 'test:slack';

   /**
    * The console command description.
    *
    * @var string
    */
   protected $description = 'test mojej komendy';

   /**
    * Create a new command instance.
    *
    * @return void
    */
   public function __construct()
   {
       parent::__construct();
   }

   /**
    * Execute the console command.
    *
    * @return mixed
    */
   public function handle()
   {
       User::first()->notify(new NewUserRegistered());
   }
}

co trzeba dodać żeby to zadziałało? Brakuje czegoś u góry? jak daje use App\Console\Commands\User; wywala ten sam błąd. Ktoś pomoże? Albo jakaś solucja krok po kroku.

0

to w takim razie lekcja na dziś -> namespace w php - ukończ ja a zrozumiesz co masz źle i jak to rozwiązać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1