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):
- Apache 2.2.24
- OpenSSL (ami a Apache telepítésébe beletartozik)
- 1C (modulokkal) webszerver)
- Saját domén
- 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



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égeMá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:

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