Jak wysyłać zgłoszenia z Contact Form 7 do bota Telegram

  • 01.10.2026
  • 15
  • Czas czytania: 5 min
  • Kategoria:Dev

This article explains how to send form submissions from Contact Form 7 directly to a Telegram Bot, enhancing your team’s efficiency in handling client inquiries. Follow the step-by-step guide to set up your bot and integrate it with your WordPress site.

Jak wysyłać zgłoszenia z Contact Form 7 do bota Telegram

W tym artykule pokażemy, jak wysyłać dane z formularza Contact Form 7 bezpośrednio do bota Telegram, dzięki czemu osoby odpowiedzialne za obsługę klientów będą mogły szybciej reagować na zapytania przesyłane za pośrednictwem strony internetowej.

Pierwszym krokiem jest utworzenie bota Telegram. W tym celu otwórz aplikację Telegram i znajdź oficjalny kanał @BotFather. Przejdź do @BotFather i postępuj zgodnie z instrukcjami, aby utworzyć nowego bota.

Po skonfigurowaniu bota otrzymasz wiadomość zawierającą token API, który będzie niezbędny do wdrożenia tej funkcjonalności w kodzie.

@BotFather channel

Po utworzeniu bota przejdź do niego i aktywuj go, wysyłając komendę /start.

Następnie musimy uzyskać identyfikator Chat ID. W tym celu znajdź oficjalnego bota @RawDataBot, otwórz go i kliknij Start.

Otrzymasz odpowiedź w formacie JSON zawierającą dane z Twoim identyfikatorem Chat ID, jak pokazano na zrzucie ekranu.

@RawDataBot channel

Przejdźmy teraz do kodu. Pierwszym krokiem będzie zainstalowanie biblioteki GuzzleHttp, której użyjemy do wysyłania danych do Telegrama. Instrukcję instalacji i korzystania z biblioteki znajdziesz tutaj.

Alternatywnie możesz zastąpić GuzzleHttp natywnymi funkcjami WordPressa, takimi jak wp_remote_get() lub wp_remote_post(), albo użyć wbudowanych funkcji cURL w PHP do bezpośredniego wykonywania żądań HTTP.

Opcje te pozwalają wysyłać żądania do API Telegrama bez konieczności korzystania z zewnętrznej biblioteki, dzięki czemu kod pozostaje lekki i dobrze zintegrowany z WordPressem.

Utwórz klasę Main.php i zarejestruj akcję wpcf7_before_send_mail, która zostanie wywołana przed wysłaniem wiadomości e-mail przez formularz.

W tym kodzie najpierw pobieramy instancję formularza, a następnie dane z formularza, które przekażemy do nowej klasy utworzonej specjalnie do wysyłania danych do Telegrama.

<?php
/**
 * Main theme class.
 *
 * @package iwpdev/test-theme
 */

namespace TestTheme;

use WPCF7_ContactForm;
use WPCF7_Submission;

/**
 * Main class file.
 */
class Main {
	/**
	 * Main construct.
	 */
	public function __construct() {
		$this->init();
	}

	/**
	 * Init actions and filter.
	 *
	 * @return void
	 */
	public function init(): void {
		add_action( 'wpcf7_before_send_mail', [ $this, 'mail_send_to_tg' ] );
	}

	/**
	 * Mail send to TG.
	 *
	 * @param WPCF7_ContactForm $wpcf7 Contact form 7 form instance.
	 *
	 * @return void
	 */
	public function mail_send_to_tg( WPCF7_ContactForm $wpcf7 ) {
		// get the form instance.
		$submission = WPCF7_Submission::get_instance();

		// get data from the form.
		$posted_data = $submission->get_posted_data();

		// Class that sends data from the form to the telegram bot.
		$message_send = TelegramSender::send_to_tg_chanel( $posted_data );

		if ( isset( $message_send['error'] ) ) {
			$wpcf7->set_properties(
				[
					'messages' => [
						'validation_error' => 'An error occurred while submitting the form. Please check the entered data.',
					],
				]
			);

			// Set the error flag.
			add_filter(
				'wpcf7_validate',
				function ( $result ) {
					$result->invalidate( null, 'An error occurred while submitting the form.' );

					return $result;
				}
			);
		}
	}
}

Utwórz klasę odpowiedzialną za wysyłanie danych do Telegrama, w której zdefiniujemy zmienne TELEGRAM_TOKEN (token API otrzymany od @BotFather podczas tworzenia bota) oraz TELEGRAM_CHAT_ID, który uzyskaliśmy za pomocą @RawDataBot jako jeden z parametrów w odpowiedzi JSON.

<?php
/**
 * Telegram sender class.
 *
 * @package iwpdev/test-theme
 */

namespace TestTheme;

use GuzzleHttp\Client;

/**
 * TelegramSender class file.
 */
class TelegramSender {

	/**
	 * Telegram token
	 */
	const TELEGRAM_TOKEN = 'YOUR TELEGRAM TOKEN';

	/**
	 * Telegram chat id.
	 */
	const TELEGRAM_CHAT_ID = 'YOUR CHAT ID';

	/**
	 * Telegram API base url.
	 */
	const TELEGRAM_API_BASE_URL = 'https://api.telegram.org';

	/**
	 * Send to tg chanel.
	 *
	 * @param array $data From data.
	 *
	 * @return array|true[]
	 */
	public static function send_to_tg_chanel( $data ) {

		// Create an http client with base url settings.
		$client = new Client(
			[
				'base_uri' => self::TELEGRAM_API_BASE_URL,
			]
		);

		// A function that will convert form data into Markdown text.
		$markdown_data = self::data_markdown_text_by_form_data( $data );

		// Sending data to Telegram bot.
		$response = $client->request(
			'GET',
			'/bot' . self::TELEGRAM_TOKEN . '/sendMessage',
			[
				'query' => [
					'chat_id'    => self::TELEGRAM_CHAT_ID,
					'text'       => $markdown_data,
					'parse_mode' => 'Markdown',
				],
			]
		);

		// Receive a response from the API.
		$body     = $response->getBody();
		$arr_body = json_decode( $body, false, 512, JSON_THROW_ON_ERROR );

		// If you get a good answer.
		if ( $arr_body->ok ) {
			return [ 'success' => true ];
		}

		// Received an error in response.
		return [ 'error' => $arr_body ];
	}

	/**
	 * Data markdown text by form data.
	 *
	 * @param array $data Form data array.
	 *
	 * @return string
	 */
	private static function data_markdown_text_by_form_data( array $data ): string {
		$markdown_text = '';

		if ( empty( $data ) ) {
			return '';
		}

		foreach ( $data as $key => $value ) {
			switch ( $key ) {
				// Input name.
				case 'your-name':
					$markdown_text .= '* Name:' . $value . '* ' . "\n";
					break;
				case 'your-email':
					$markdown_text .= '* Email:' . $value . '* ' . "\n";
					break;
				case 'your-subject':
					$markdown_text .= '* Email Subject:' . $value . '* ' . "\n";
					break;
				case 'your-message':
					$markdown_text .= '* Message:' . $value . '* ' . "\n";
					break;
			}
		}

		return $markdown_text;
	}
}

Conclusion:

Mam nadzieję, że ten kod i poradnik pomogą Twojej firmie sprawniej przetwarzać zgłoszenia przesyłane za pośrednictwem formularzy na stronie internetowej. Pełną wersję kodu znajdziesz tutaj.

Gotowy, aby wynieść swój projekt
na wyższy poziom?

Wprowadźmy Twoją wizję w życie dzięki profesjonalnemu tworzeniu stron i dedykowanym rozwiązaniom.
Skontaktuj się z nami już teraz i rozpocznijmy pracę nad przekształceniem Twoich pomysłów w rzeczywistość!

    Powiązane wpisy

    Wskazówki i spostrzeżenia z mojej drogi zawodowej

    Jak korzystać z autoloadingu Composera w WordPressie

    Jak korzystać z autoloadingu Composera w WordPressie

    • 02.10.2026
    • 14
    Przeniesienie strony ze środowiska lokalnego na serwer za pomocą dostępu SSH

    Przeniesienie strony ze środowiska lokalnego na serwer za pomocą dostępu SSH

    • 02.10.2026
    • 13
    Dlaczego WordPress 5.5.3 z PHP 8 zwraca błąd 404 na każdej stronie witryny?

    Dlaczego WordPress 5.5.3 z PHP 8 zwraca błąd 404 na każdej stronie witryny?

    • 02.10.2026
    • 13
    Wszystkie wpisy