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 или планировщика задач в зависимости от окружения сервера).
Ниже приведен пример отчета по теме данной статьи.
Надеюсь, это было полезно. Спасибо, что заглянули!