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):
- Apache 2.2.24
- OpenSSL (wchodzący w skład instalacji Apache'a)
- 1C (z modułami) serwer WWW)
- Własna domena
- 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 noneNa samym końcu dodano linijki, w których podaję ścieżki do certyfikatu:
SSLEngine On
SSLCertificateFile conf/YOURPUBLIC.pem
SSLCertificateKeyFile conf/YOURPRIVATE.keyI 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



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);
KoniecProceduryPozostało opublikować bazę i powiązać webhook.
Publikacja odbywa się jak zwykle, wystarczy tylko zaznaczyć opcje publikacji HTTP-serwisu:

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:
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
