Как настроить автоматическое уведомление о новых заявках в чат через Telegram-бота?

Здравствуйте! Подскажите, пожалуйста, каким образом лучше реализовать автоматическое оповещение в беседу через Telegram-бота, используя нашу автоматизированную систему приёма заявок "HESK"? Я развернул систему на виртуальной машине с операционной системой РедОС, применяя веб-сервер nginx и БД MariaDB. <br/> Является ли оптимальным решением создание планировщика задач, который каждые 5 минут будет запускать отдельный скрипт для обращения к базе данных с последующей отправкой уведомлений в беседу? Или более эффективно реализовать обработку данных, чтобы после выполнения каких-либо действий (например, нажатия кнопки "Отправить заявку") срабатывал обработчик на PHP, который бы отправлял в беседу информацию о ФИО и теме заявки?
  • 16 сентября 2024 г. 12:23
Ответы на вопрос 1
Здравствуйте!

Настройка автоматического уведомления о новых заявках через Telegram-бота — это отличная идея для повышения эффективности работы. Рассмотрим два предложенных вами варианта:

### Вариант 1: Планировщик задач (Cron)

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

1. **Создать скрипт**, который будет:
   - Подключаться к базе данных MariaDB.
   - Запрашивать новые заявки с момента последнего оповещения.
   - Отправлять уведомления в Telegram с использованием Telegram Bot API.

2. **Настроить Cron-задачу**, которая будет запускать этот скрипт каждые 5 минут.

Этот вариант хорош, если новые заявки поступают с разной частотой, и вы не хотите пропускать какие-либо из них. Однако он может быть менее эффективным, поскольку он будет выполняться даже в те моменты, когда новых заявок нет.

### Вариант 2: Обработчик событий

Второй вариант — это добавление обработчика событий, который будет срабатывать на определённые действия, например, при нажатии кнопки "Отправить заявку".

1. **Добавить код в ваш PHP-обработчик** для отправки уведомления в Telegram:
   - После добавления записи в базу данных просто вызовите тот же Telegram Bot API для отправки сообщения с данными заявки (ФИО, тема и т.д.).

2. **Пользоваться вебхуками** или другим способом прямого взаимодействия с Telegram, чтобы автоматически отправлять уведомления как только заявка будет создана.

Этот вариант предпочтителен, так как он позволяет избежать лишних обращений к базе данных и отправок сообщений, если новые заявки не поступают. Он более "реактивен" и эффективен.

### Рекомендации
- Если у вас небольшое количество заявок и вы хотите избежать сложности с настройкой — используйте вариант с планировщиком задач.
- Если заявки обрабатываются часто, рекомендую реализовать обработку событий и отправку уведомлений при создании новых заявок. Это повысит скорость реакции и уменьшит нагрузку на сервер.

### Пример кода для отправки уведомления в Telegram

```php
function sendTelegramMessage($message) {
    $token = "YOUR_TELEGRAM_BOT_TOKEN";
    $chat_id = "YOUR_CHAT_ID";

    $url = "https://api.telegram.org/bot$token/sendMessage?chat_id=$chat_id&text=" . urlencode($message);
    file_get_contents($url);
}

// Пример вызова
sendTelegramMessage("Новая заявка от {ФИО}: {Тема заявки}");
```

Не забудьте заменить `YOUR_TELEGRAM_BOT_TOKEN` и `YOUR_CHAT_ID` на реальные данные вашего бота и чата.

Выбор подходящего метода зависит от ваших конкретных требований и архитектуры системы.
Похожие вопросы