Napisano wiele wierszy o integracji Telegramu i 1C. Ale nigdzie nie widziałem pełnych instrukcji dotyczących instalowania i konfigurowania webhooków. Spróbuję to napisać.
Do tego wszystkiego potrzebujemy (lub lepiej byłoby powiedzieć, czego użyłem):
- Apache 2.2.24
- OpenSSL (zawarty w instalacji Apache)
- 1C (z modułami) serwer internetowy)
- Twoja domena
- Stworzyłem bota w Telegramie (nie będę opisywał jego powstania, bo jest to dość banalne)
Zakłada się, że masz zainstalowane całe oprogramowanie.
Zacznijmy więc od zdobycia certyfikatu. Otwórz wiersz poleceń i wykonaj 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 to klucz prywatny certyfikatu. Będzie używany w Apache
YOURPUBLIC.pem jest kluczem publicznym certyfikatu. Będzie używany podczas rejestracji webhooka
YOURDOMAIN.EXAMPLE - adres Twojej domeny z webhookiem. Musi pasować do adresu webhooka!!!
Po wykonaniu tego kodu pliki kluczy pojawią się w folderze openssl (u mnie jest to „C:Program FilesApache Software FoundationApache2.2bin”).
Skopiowałem je do folderu conf Apache.
Przejdźmy do konfiguracji Apache.
Widziałem wiele różnych sposobów. Dla mnie zadziałało:
Do pliku httpd.conf dodano następujące wiersze:
Listen 443 aby Apache „nasłuchiwał” portu 443.
Blok zredukowane do następującej postaci:
<IfModule ssl_module>
SSLMutex default
SSLSessionCache none
</IfModule>Na samym końcu dodane są linijki, w których wskazuję ścieżkę 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 on odpowie na telegram i rozpatrzy jego prośby.
W moim przypadku określone są następujące parametry:
Nazwa: TGWebhook
RootURL: webhook
Ponowne wykorzystanie sesji: Nie używaj (w trybie automatycznym to nie działało dla mnie)
Czas życia: 20
Szablony adresów URL: utworzono szablon „Dowolny” za pomocą dwóch metod: GET i POST



Domyślnie tworzone są procedury obsługi metod. Dodam następujące elementy do procedury obsługi POST, aby sprawdzić połączenie:
Функция ЛюбойPOST(Запрос)
ВыслатьТестовоеСообщение(""); //chat_id
Ответ = Новый HTTPСервисОтвет(200);
Возврат Ответ;
КонецФункции
&НаСервере
Процедура ВыслатьТестовоеСообщение(Чат)
Сообщение = "Тестовое сообщение";
Токен = "";//Ваш токен telegram
Сервер = "api.telegram.org";
Ресурс = "bot" + Токен + "/sendMessage?chat_id=" + СтрЗаменить(Формат(Чат, "ЧДЦ=; ЧС=; ЧРГ=."), ".", "") + "&text=" + Сообщение;
Соединение = Новый HTTPСоединение(Сервер,443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
Запрос = Новый HTTPЗапрос(Ресурс);
Ответ = Соединение.Получить(Запрос);
КонецПроцедурыPozostaje tylko opublikować bazę danych i dołączyć webhooka.
Publikowanie odbywa się jak zawsze, wystarczy dodać checkboxy przy publikacjach usługi HTTP:

Ostatnim krokiem jest połączenie naszego 1C z Telegramem. Użyłem do tego prostej strony HTML z następującym kodem:
<html>
<body>
<form action="https://api.telegram.org/bot<ЗдесьДолженБытьТокен>/setwebhook" method="post" enctype="multipart/form-data">
Select Certificate to upload:
<input type="file" name="certificate" id="fileToUpload">
URL: <input type="text" name="url" value="https://<YOURWEBSITE>/<YOUR_PHP_URL>"><br>
<input type="submit" value="Upload Certificate" name="submit">
</form>
</body>
</html>W formularzu wystarczy wybrać klucz publiczny i wpisać pełną ścieżkę do naszej usługi http. Przypomnę, że pełna ścieżka do usługi będzie wyglądać następująco:
Proszę nie kopać kodu, niektóre rzeczy są celowo zakodowane na stałe, ponieważ... wszystko to zostało zrobione wyłącznie w celach demonstracyjnych.
Publikacja powstała, ponieważ Nie znalazłem ani jednego działającego przykładu pracy z webhookami na stronie, z wyjątkiem konstruktora botów Telegram. Jest to jednak płatne i być może nie każdemu potrzebne jest w tej formie.
Archiwum zawiera instalację Apache 2.2.24 wraz z Openssl (z jakiegoś powodu znalezienie go zajęło mi dużo czasu), plik HTML do rejestracji webhooka, plik konfiguracyjny Apache i konfigurację cf z usługą http oraz przykład wysłania wiadomości testowej. Pobieranie nie jest wymagane, ponieważ Cała treść znajduje się w artykule.
Źródło: www.habr.com
