Telegram + 1C + Webhooks + Apache + Self-signed certificate

Wiele tekstów zostało napisanych na temat integracji Telegrama z 1C. Jednak nigdzie nie widziałem pełnej instrukcji na temat instalacji i konfiguracji webhooków. Postaram się to opisać.

Do tego wszystkiego potrzebujemy (a dokładniej, co było przeze mnie użyte):

  1. Apache 2.2.24
  2. OpenSSL (wchodzący w skład instalacji Apache'a)
  3. 1C (z modułami) serwer WWW)
  4. Własna domena
  5. Utworzony bot w Telegramie (nie będę opisywał jego tworzenia, ponieważ jest to dość trywialne)

Zakłada się, że cały oprogramowanie jest już zainstalowane.

Zacznijmy więc od uzyskania certyfikatu. Otwieramy wiersz poleceń i wykonujemy następujący kod:

openssl req -newkey rsa:2048 -sha256 -nodes -keyout YOURPRIVATE.key -x509 -days 365 -out YOURPUBLIC.pem -subj "/C=US/ST=New York/L=Brooklyn/O=Example Brooklyn Company/CN=YOURDOMAIN.EXAMPLE"

Gdzie:

YOURPRIVATE.key — prywatny klucz certyfikatu. Będzie użyty w Apache.

YOURPUBLIC.pem — publiczny klucz certyfikatu. Będzie użyty podczas rejestracji webhooka.

YOURDOMAIN.EXAMPLE — adres twojej domeny z webhookiem. Musi być zgodny z adresem webhooka!!!

Po wykonaniu tego kodu w folderze openssl (u mnie to „C:Program FilesApache Software FoundationApache2.2bin”) pojawią się pliki kluczy.

Skopiowałem je do folderu conf Apache'a.

Przechodzimy do konfiguracji Apache.

Widziałem wiele różnych sposobów. U mnie zadziałał następujący:

Do httpd.conf dodano następujące linie:

Listen 443 

aby Apache „słuchał” portu 443.

Blok zmieniony na następujący:

SSLMutex default
SSLSessionCache none

Na samym końcu dodano linijki, w których podaję ścieżki do certyfikatu:

SSLEngine On
SSLCertificateFile conf/YOURPUBLIC.pem
SSLCertificateKeyFile conf/YOURPRIVATE.key

I odkomentuj linię:

LoadModule ssl_module modules/mod_ssl.so 

W konfiguracji tworzymy usługę HTTP. To ona będzie odpowiadać Telegramowi i przetwarzać jego zapytania.

W moim przypadku podano następujące parametry:

Nazwa: TGWebhook
Podstawowy URL: webhook
Ponowne wykorzystanie sesji: Nie używać (w trybie automatycznym nie działało mi)
Czas życia: 20
Szablony URL: utworzono szablon „Dowolny” z dwoma metodami: GET i POST

Telegram + 1C + Webhooks + Apache + Self-signed certificate

Telegram + 1C + Webhooks + Apache + Self-signed certificate

Telegram + 1C + Webhooks + Apache + Self-signed certificate

Handler metod tworzony jest domyślnie. W handlerze POST dodam następujące, tylko w celu sprawdzenia połączenia:

Funkcja AnyPOST(Zapytanie)

	WyślijTestowąWiadomość(""); //chat_id
	Odpowiedź = Nowa HTTPSerwisOdpowiedź(200);
	Zwróć Odpowiedź;
	
KoniecFunkcji


&NaSerwerze
Procedura WyślijTestowąWiadomość(Czat)
	
		Wiadomość = "Wiadomość testowa";
		Token = ""; // Twój token telegram
		Serwer = "api.telegram.org";
	    Zasób = "bot" + Token + "\/sendMessage?chat_id=" + StrZamień(Formatuj(Czat, "ЧДЦ=; ЧС=; ЧРГ=."), ".", "") + "&text=" + Wiadomość;
   		Połączenie  =  Nowe HTTPPołączenie(Serwer,443,,,,,Nowe BezpiecznePołączenieOpenSSL());
		Zapytanie = Nowe HTTPZapytanie(Zasób);
		Odpowiedź = Połączenie.Pobierz(Zapytanie);
	
KoniecProcedury

Pozostało opublikować bazę i powiązać webhook.

Publikacja odbywa się jak zwykle, wystarczy tylko zaznaczyć opcje publikacji HTTP-serwisu:

Telegram + 1C + Webhooks + Apache + Self-signed certificate

Ostatnim krokiem powiążemy nasze 1C z telegramem. Użyłem do tego prostą stronę HTML z następującym kodem:

<html>
<body>

<form action="https://api.telegram.org/bot<ЗдесьДолженБытьТокен>/setwebhook" method="post" enctype="multipart/form-data">
    Wybierz certyfikat do przesłania:
    <input type="file" name="certificate" id="fileToUpload">
	URL: <input type="text" name="url"  value="https://<YOURWEBSITE>/<YOUR_PHP_URL>"><br>
    <input type="submit" value="Prześlij certyfikat" name="submit">
</form>

</body>
</html>

W formularzu po prostu wybieramy klucz publiczny i wpisujemy pełną ścieżkę do naszego HTTP-serwisu. Przypominam, że pełna ścieżka do serwisu będzie wyglądać następująco:

TwójDomeny/ImięBazy/hs/ImięSerwisu/v1

Proszę nie krytykować kodu, niektóre rzeczy są celowo zhardcodowane, ponieważ wszystko to robione było wyłącznie w celach demonstracyjnych.

Publikacja została napisana, ponieważ nie znalazłem żadnego działającego przykładu dotyczącego pracy z webhookami na stronie, oprócz Konstruktora botów Telegram. Ale jest płatny i być może nie każdemu się przyda w takiej formie.

W archiwum znajduje się instalacja Apache 2.2.24 wraz z Openssl (dlaczego szukanie go zajęło mi dużo czasu), plik html do rejestracji webhooka, plik konfiguracji Apache oraz cf konfiguracja z HTTP-serwisem i przykładem wysyłania testowej wiadomości. Nie jest konieczne pobieranie, ponieważ całe zawartość jest w artykule.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster