DevGang
Авторизоваться

Laravel: Экспорт данных приложения в реальном времени в канал Slack

Взаимодействие с пользователями является важнейшим условием успешной работы приложения. С увеличением числа пользователей возрастает вероятность возникновения проблем с использованием приложений, что приводит к появлению плохих данных в базе данных вашего приложения. Устранение таких проблем в режиме реального времени имеет решающее значение. Представьте себе, если бы ваше приложение могло проактивно сообщать команде о дефектах или плохих данных до того, как это заметят клиенты.

В этой статье я покажу, как интегрировать прямую отчетность в Slack через приложение Slack, упростив этот процесс.

В этой статье мы рассмотрим:

  • Создание приложения Slack
  • Создание примера команды для распознавания неудачных платежей на примере простой платежной системы электронной коммерции

Создание приложения Slack

Чтобы начать работу, зайдите в Slack и нажмите на кнопку "Создать новое приложение". Затем выберите первый вариант, как показано на рисунке ниже.

Введите имя приложения, выберите рабочее пространство, а затем нажмите кнопку "Создать приложение" для сохранения формы.

После создания нашего приложения выберите опцию "Incoming Webhooks" и переключите её на следующем экране.

Перейдите в нижнюю часть страницы и выберите "Add New Webhook to Workspace" ("Добавить новый веб-хук в рабочую область"). Затем на следующем экране выберите канал и нажмите кнопку "Разрешить".

Slack сгенерирует URL-адрес веб-хука. Скопируйте его и вставьте в файл .env вашего приложения, как показано ниже.

FAILED_PAYMENT_SLACK_WEBHOOK_URL=https://hooks.slack.com/services/xxxxxxxxxx

Создание команды-примера

В Laravel команды - это пользовательские, многократно используемые сценарии, выполняющие определенные задачи в приложении. Они могут выполняться через интерфейс командной строки (CLI) и полезны для автоматизации таких задач, как перенос базы данных, выполнение заданий по расписанию и пользовательских операций.

В Laravel пользовательские команды обычно хранятся в каталоге app/Console/Commands. Создать новую команду можно с помощью Artisan CLI или вручную, создав новый PHP-файл в этом каталоге.

Приведем пример базовой команды:

Создание команды

Создать команду можно с помощью Artisan. Откройте терминал и выполните команду:

php artisan make:command ExportFailedPayments

В результате будет создан новый командный файл с именем ExportFailedPayments.php в каталоге app/Console/Commands.

Образец кода команды

Откройте сгенерированный файл ExportFailedPayments.php и найдите в нём что-то вроде этого:

use Illuminate\Console\Command;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Storage;

class ExportFailedPayments extends Command
{
    protected $signature = 'export:failed-payments';
    protected $description = 'Export failed payments to CSV and send to server';

    public function handle()
    {
        // Generate CSV data (replace this with your actual logic)
        $csvData = [
            ['order_id', 'payment_id', 'status'],
            [1, 101, 'failed'],
            [2, 102, 'failed'],
            // Add more rows as needed
        ];

        $csvFilePath = storage_path('app/failed_payments.csv');
        $file = fopen($csvFilePath, 'w');

        foreach ($csvData as $row) {
            fputcsv($file, $row);
        }

        fclose($file);

        $message = "Daily Failed Payment Report:\n
        File: <" . file_get_contents($csvFilePath) . "|Download CSV>";

        $data = [
            'text' => $message,
        ];

        Http::post(env('FAILED_PAYMENT_SLACK_WEBHOOK_URL'), $data); // Replace with your actual slack webhook url.


        // Clean up: Delete the local CSV file
        unlink($csvFilePath);
    }
}

Использование команды

Теперь вы можете выполнить эту команду в терминале, используя ее подпись:

php artisan export:failed-payments

Это вызовет метод handle, и любая логика, размещенная в нем, будет выполнена.

Помните, что это базовый пример. Команды могут выполнять широкий спектр задач, от операций с базой данных до сложной обработки данных. Но в данной статье мы рассматриваем только экземпляр экспорта неудачного платежа.

В электронной коммерции важно как можно раньше согласовать неудачный платеж, поэтому в этой статье я покажу вам, как создать задание cron, которое будет планировать выполнение приведенной выше команды так часто, как вы этого хотите.

Чтобы запланировать выполнение этой команды, например, в 17.00 каждый день, необходимо добавить запись в планировщик Laravel. Откройте файл App\Console\Kernel.php и добавьте следующий код в массив $commands:

protected $commands = [
    // ... other commands ...
    Commands\ExportFailedPayments::class,
];

Далее в методе schedule того же файла добавьте следующую строку для планирования выполнения команды:

protected function schedule(Schedule $schedule)
{
    // ... other scheduled tasks ...

    $schedule->command('export:failed-payments')
             ->dailyAt('17:00'); // This will run the command at 5:00 PM
}

Теперь команда ExportFailedPayments будет выполняться по расписанию в 17:00 каждый день. Убедитесь, что ваш сервер правильно настроен для работы с запланированными задачами Laravel (с помощью cron или планировщика задач в зависимости от окружения сервера).

Ниже приведен пример отчета по теме данной статьи.

Надеюсь, это было полезно. Спасибо, что заглянули!

Источник:

#Laravel #Slack
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться