Laravel notifications on Slack

Odpowiedz Nowy wątek
2020-09-15 23:45

Rejestracja: 3 lata temu

Ostatnio: 21 godzin temu

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 [
            //
        ];
    }
}

Pozostało 580 znaków

2020-09-16 01:49

Rejestracja: 9 lat temu

Ostatnio: 8 godzin temu

Lokalizacja: Grudziądz/Bydgoszcz

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/[...]ns#using-the-notifiable-trait


It's All About the Game.

Pozostało 580 znaków

2020-09-16 08:49

Rejestracja: 3 lata temu

Ostatnio: 21 godzin temu

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

Pozostało 580 znaków

2020-09-16 09:03

Rejestracja: 3 lata temu

Ostatnio: 35 sekund temu

1

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.

php artisan --version pokazuje 7.0 ale ja operuje na dzialajacym projekcie. Gdzie ta klasa ma być ? w doku zrozumialem ze to plik - Łapa_krk 2020-09-16 09:07

Pozostało 580 znaków

2020-09-16 09:18

Rejestracja: 3 lata temu

Ostatnio: 21 godzin temu

0

dobra mam users w app/models/users.php

use App\Notifications\InvoicePaid;

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

to wywaołanie?

edytowany 2x, ostatnio: Łapa_krk, 2020-09-16 09:46
Hej! Twój post prawdopodobnie zawiera niesformatowany kod. Użyj znaczników ``` aby oznaczyć, co jest kodem, będzie łatwiej czytać. (jestem botem, ta akcja została wykonana automatycznie, prawdopodobieństwo 0.99605465) - Tasmanian Devil 2020-09-16 09:27

Pozostało 580 znaków

2020-09-16 12:24

Rejestracja: 9 lat temu

Ostatnio: 8 godzin temu

Lokalizacja: Grudziądz/Bydgoszcz

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)); 

It's All About the Game.
edytowany 2x, ostatnio: mr_jaro, 2020-09-16 12:25
coś dźgam ale się uczę :) pozmieniałem tak jak ma byc u mnie niestety nie działa. Czy do tego trzeba napisać jeszcze jakiś commands zeby to wywolac w komuniktorze? czy te powiadomienia wygeneruja sie automatycznie w zaleznisci od dzialania aplikacji ? - Łapa_krk 2020-09-16 20:49

Pozostało 580 znaków

2020-09-16 23:09

Rejestracja: 3 lata temu

Ostatnio: 21 godzin temu

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.

edytowany 1x, ostatnio: Łapa_krk, 2020-09-16 23:10

Pozostało 580 znaków

2020-09-17 00:42

Rejestracja: 9 lat temu

Ostatnio: 8 godzin temu

Lokalizacja: Grudziądz/Bydgoszcz

0

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


It's All About the Game.
dodałem App\User w TestUserRegisteredNotification ale teraz znowu wywala Call to a member function notify() on null w konsoli chyba ten poradnik jest nie pełny. - Łapa_krk 2020-09-17 09:44
@Łapa_krk: no on null, a pobrałeś tam jakiegoś usera z bazy i wywołałeś na nim tę metodę? Naprawdę jak masz takie problemy to zacznij od najprostszych rzeczy. - mr_jaro 2020-09-17 13:03

Pozostało 580 znaków

Odpowiedz

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