@Eldar1201

Как с помощью обработчика форм PHP отправлять сообщения о новой созданной заявки в беседу от бота telegram?

Здравствуйте. Проконсультируйте пожалуйста, разрешается ли в форме страницы сайта (код 1 - вырезка кода из формы страницы) в action= вставить два наименования скрипта PHP, второй обработчик формы PHP для отправки в беседу, с помощью бота telegram? Как правильно его туда вписать? После нажатия кнопки "Отправить заявку" (Снимок экрана 1), заработают ли эти 2 скрипта?
Или лучше использовать cron, и что бы он раз в 5 минут запускал скрипт, который проверял были ли изменения в БД, если они есть, то отправлял оповещение в беседу телеграм?
Автоматизированная система приема заявок "HESK" развернута на виртуальной машине с операционной системой РедОС 8. Веб сервер nginx, БД mariadb.

Код 1
<form class="form form-submit-ticket ticket-create <?php echo count($_SESSION['iserror']) ? 'invalid' : ''; ?>" method="post" action="submit_ticket.php?submit=1" name="form1" id="form1" enctype="multipart/form-data">


66e8327ba2f26230428166.png

По рекомендациям попробовал метод с include. На 2-ом коде представлена вырезка первого обработчик формы, 3-ий код - скрипт для бота, 4-ый код - вырезка из формы страницы с добавленной строчкой для сбора.

Код 2
// We only allow POST requests to this file
if ( $_SERVER['REQUEST_METHOD'] != 'POST' )
{
        header('Location: index.php?a=add');
        exit();
        }

// Check for POST requests larger than what the server can handle
if ( empty($_POST) && ! empty($_SERVER['CONTENT_LENGTH']) )
{
        hesk_error($hesklang['maxpost']);
}

// Try to detect some simple SPAM bots
if ( ! isset($_POST['hx']) || $_POST['hx'] != 3 || ! isset($_POST['hy']) || $_POST['hy'] != '' || isset($_POST['phone']) )
{
        header('HTTP/1.1 403 Forbidden');
        exit();
}

// Block obvious spammers trying to inject email headers
if ( preg_match("/\n|\r|\t|%0A|%0D|%08|%09/", hesk_POST('name') . hesk_POST('subject') ) )
{
        header('HTTP/1.1 403 Forbidden');
    exit();
}

hesk_session_start();

// A security check - not needed here, but uncomment if you require it
# hesk_token_check();

// Prevent submitting multiple tickets by reloading submit_ticket.php page
if (isset($_SESSION['already_submitted']))
{
        hesk_forceStop();
}

// Connect to database
hesk_dbConnect();

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (isset($_POST['tel_bot4'])) {
        include 'tel_bot4.php';
    }
}

$hesk_error_buffer = array();

// Check anti-SPAM question
if ($hesk_settings['question_use'])
{
        $question = hesk_input( hesk_POST('question') );

        if ( strlen($question) == 0)
        {
                $hesk_error_buffer['question'] = $hesklang['q_miss'];
        }


Код 3
<?php
session_start();

// Подключение библиотеки для работы с Telegram API
require __DIR__ . '/vendor/autoload.php';

use Telegram\Bot\Api;

// Параметры для подключения к боту
$token = '*****************';
$chatId = '-****************';

try {
    $api = new Api($token);

    // Пример отправки сообщения
    $name = $_POST['name'];
    $api->sendMessage([
        'chat_id' => $chatId,
        'text' => $name
    ]);

    // Успешная отправка
    echo "Telegram message sent successfully!";
} catch (\Exception $e) {
    // Обработка ошибок
    echo "Error sending Telegram message: " . $e->getMessage();
}

?>


Код 4
</div>
                    <?php endif; ?>


                    <div class="form-footer">
                        <input type="hidden" name="token" value="<?php hesk_token_echo(); ?>">
                        <input type="hidden" name="category" value="<?php echo $categoryId; ?>">
                        <input type="checkbox" name="tel_bot4" value="1"> Send via Telegram Bot
                        <button type="submit" class="btn btn-full" ripple="ripple" id="recaptcha-submit">
                            <?php echo $hesklang['sub_ticket']; ?>
                        </button>
                        <!-- Do not delete or modify the code below, it is used to detect simple SPAM bots -->
                        <input type="hidden" name="hx" value="3" /><input type="hidden" name="hy" value="">
                        <!-- >
                        <input type="text" name="phone" value="3">
                        < -->
                    </div>
                    <?php
                    // Use Invisible reCAPTCHA?
                    if ($hesk_settings['secimg_use'] && $hesk_settings['recaptcha_use'] == 1 && ! isset($_SESSION['img_verified']))
                    {
                        ?>
                        <div class="g-recaptcha" data-sitekey="<?php echo $hesk_settings['recaptcha_public_key']; ?>" data-bind="recaptcha-submit" data-callback="recaptcha_submitForm"></div>
                        <?php
                    }
                    ?>
                </form>
  • Вопрос задан
  • 138 просмотров
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Форма отправляется на сервер, далее либо курлом вызывается второй скрипт, либо (если скрипт отправки в тг находится в рамках одного приложения) второй скрипт подключается инклудом после обработчика и обрабатывает форму своим способом.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы