Telegram + 1C + Webhookok + Apache + Önszignált tanúsítvány

Sok írás született a Telegram és 1C integrációjáról. De sehol nem láttam teljes útmutatót a webhookok telepítéséhez és beállításához. Megpróbálom ezt megírni.

Ehhez szükségünk lesz (vagy pontosabban fogalmazva, amit én használtam):

  1. Apache 2.2.24
  2. OpenSSL (ami a Apache telepítésébe beletartozik)
  3. 1C (modulokkal) webszerver)
  4. Saját domén
  5. Létrehozott bot a Telegramon (nem szeretném a létrehozását részletezni, mivel az elég triviális)

Feltételezem, hogy minden szoftver telepítve van nálad.

Tehát kezdjük a tanúsítvány megszerzésével. Megnyitjuk a parancssort, és végrehajtjuk a következő kódot:

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"

Ahol:

YOURPRIVATE.key — a tanúsítvány zártkulcsa. Ez az Apache-ban lesz használva.

YOURPUBLIC.pem — a tanúsítvány nyilvános kulcsa. Ez a webhook regisztrálásakor lesz használva.

YOURDOMAIN.EXAMPLE — a webhookkal rendelkező domén címe. Meg kell egyeznie a webhook címével!!!

A kód végrehajtása után az openssl mappában (nálam ez a „C:Program FilesApache Software FoundationApache2.2bin”) kulcsmappák fognak megjelenni.

Ezeket átmásoltam az Apache conf mappájába.

Térjünk át az Apache beállítására.

Sok különböző módszert láttam. Nálam a következő működött:

A httpd.conf fájlba az alábbi sorok kerültek hozzáadásra:

Listen 443 

hogy az Apache „hallgassa” a 443-as portot.

A <IfModule ssl_module> blokk a következőképpen lett módosítva:

<IfModule ssl_module>
SSLMutex default
SSLSessionCache none
<\/IfModule>

A végén hozzáadtam a sorokat, amelyek a tanúsítványra mutató útvonalakat tartalmazzák:

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

És töröljük a megjegyzést a következő sor elől:

LoadModule ssl_module modules\/mod_ssl.so 

A konfigurációban létrehozunk egy HTTP-szolgáltatást. Ez fogja kezelni a Telegramot és válaszolni az értesítéseire.

Az én esetemben a következő paramétereket állítottam be:

Név: TGVebhook
Gyökér URL: webhook
Sesszió újrahasználat: Ne használj (automatikus módban nem működött)
Élettartam: 20
URL sablonok: létrehoztam egy „Bármely” sablont két módszerrel: GET és POST

Telegram + 1C + Webhookok + Apache + Önszignált tanúsítvány

Telegram + 1C + Webhookok + Apache + Önszignált tanúsítvány

Telegram + 1C + Webhookok + Apache + Önszignált tanúsítvány

A módszerek kezelői alapértelmezés szerint létrejönnek. A POST kezelőhöz hozzáadom a következőt, csak a kapcsolat ellenőrzésére:

A Funkció BármilyenPOST(Kérés)

	KüldjTesztüzenetet(""); //chat_id
	Válasz = Új HTTPszolgáltatásVálasz(200);
	Visszaadás Válasz;
	
FunkcióVége


&AÜzemen
Eljárás KüldjTesztüzenetet(Chat)
	
		Üzenet = "Teszt üzenet";
		Token = ""; //Az Ön telegram tokenje
		Kiszolgáló = "api.telegram.org";
	    Forrás = "bot" + Token + "\/sendMessage?chat_id=" + StringHelyettesítő(Format(Chat, "CHD=; CS=; CRG=."), ".", "") + "&text=" + Üzenet;
   		Kapcsolat  =  Új HTTPKapcsolat(Kiszolgáló,443,,,,,Új BiztonságosKapcsolatOpenSSL());
		Kérés = Új HTTPKérés(Forrás);
		Válasz = Kapcsolat.Kap( Kérés);
	
EljárásVége

Már csak a adatbázist kell közzétenni és a webhookot összekapcsolni.

A közzététel, mint mindig, most is csak a HTTP-szolgáltatás közzétételére vonatkozó jelölőnégyzeteket kell bejelölni:

Telegram + 1C + Webhookok + Apache + Önszignált tanúsítvány

Az utolsó lépésben összekapcsoljuk a 1C-nket a Telegrammal. Ehhez egy egyszerű HTML oldalt használtam a következő kóddal:

<html>
<body>

<form action="https://api.telegram.org/bot<ЗдесьДолженБытьТокен>/setwebhook" method="post" enctype="multipart/form-data">
    Válassza ki a feltölteni kívánt tanúsítványt:
    <input type="file" name="certificate" id="fileToUpload">
	URL: <input type="text" name="url"  value="https://<YOURWEBSITE>/<YOUR_PHP_URL>"><br>
    <input type="submit" value="Tanúsítvány feltöltése" name="submit">
</form>

</body>
</html>

A űrlapban csak ki kell választani a nyilvános kulcsot és megadni a teljes útvonalat a HTTP-szolgáltatásunkhoz. Emlékeztetem, hogy a szolgáltatás teljes útvonala a következőképpen fog kinézni:

ATeDomaind/AdatbázisNeve/hs/SzolgáltatásNeve/v1

Kérlek, ne rugdossatok a kód miatt, néhány dolgot szándékosan keménykódoltam, mivel ez az egész csak demonstrációs célokat szolgált.

A közzététel azért íródott, mert nem találtam egyetlen működő példát a webhookokkal való munkáról az oldalon, kivéve a Telegram Botkészítő. De az fizetős, és talán nem mindenkinek szükséges ebben a formában.

A mappában az Apache 2.2.24 telepítése található OpenSSL-el (valamiért ennek a keresése sok időt vett igénybe), egy HTML fájl a webhook regisztrációhoz, az Apache konfigurációs fájlja, valamint a HTTP-szolgáltatással és a teszt üzenet küldésének példájával kapcsolatos CF konfigurációs fájl. Letöltés nem kötelező, mivel minden tartalom megtalálható a cikkben.

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster