Shumë rreshta janë shkruar rreth integrimit të Telegramit dhe 1C. Por nuk kam parë askund një udhëzues të plotë për instalimin dhe konfigurimin e webhooks. Do ta provoj ta shkruaj.
Për të gjitha këto, na nevojitet (ose më saktë, do të thoshim që është përdorur nga unë):
- Apache 2.2.24
- OpenSSL (i përfshirë në instalimin e Apache)
- 1C (me modulë) serverin web)
- Domeni juaj
- Boti i krijuar në Telegram (nuk do ta përshkruaj krijimin e tij, pasi është mjaft triviale)
Supozimi është se të gjithë softueri është instaluar.
Pra, le të fillojmë me marrjen e certifikatës. Hapni linjën komandë dhe ekzekutoni kodin e mëposhtëm:
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"Ku:
YOURPRIVATE.key — çelësi privat i certifikatës. Do të përdoret në Apache
YOURPUBLIC.pem — çelësi publik i certifikatës. Do të përdoret gjatë regjistrimit të webhooks
YOURDOMAIN.EXAMPLE — adresa e domenit tuaj me webhook. Duhet patjetër të përputhet me adresën e webhook-it!!!
Pas ekzekutimit të këtij kodi, në dosjen openssl (në rastin tim "C:Program FilesApache Software FoundationApache2.2bin") do të shfaqen skedarët e çelësave.
Unë i kopjova në dosjen conf të Apache.
Kalojmë në konfigurimin e Apache.
Kam parë shumë mënyra të ndryshme. Në rastin tim, funksionoi si më poshtë:
Në httpd.conf janë shtuar këto rreshta:
Listen 443 për t'u siguruar që Apache "dëgjon" portin 443.
Blloku <IfModule ssl_module> është përcaktuar si më poshtë:
<IfModule ssl_module>
SSLMutex default
SSLSessionCache none
</IfModule>Në fund të fundit janë shtuar rreshtat, ku jepen rrugët te certifikata:
SSLEngine On
SSLCertificateFile conf/YOURPUBLIC.pem
SSLCertificateKeyFile conf/YOURPRIVATE.keyDhe komentoni rreshtin:
LoadModule ssl_module modules/mod_ssl.so Në konfigurim krijojmë një shërbim HTTP. Ky shërbim do të përgjigjet Telegram-it dhe do të procesojë kërkesat e tij.
Në rastin tim, janë përcaktuar parametrat e mëposhtëm:
Emri: TGVebhook
URL i rrënjës: webhook
Rivendosja e seancave: Mos e përdorni (me modalitetin automatik nuk funksionoi për mua)
Kohëzgjatja: 20
Modeli i URL-ve: u krijua modeli "Çdo" me dy metoda: GET dhe POST



Përpunuesit e metodave krijohen automatikisht. Në përpunuesin POST do të shtojmë këtë, vetëm për të verifikuar lidhjen:
Funksioni AnyPOST(Kërkesë)
DërgoMesazhTest(""); //chat_id
Përgjigja = E re HTTPShërbimiPërgjigje(200);
Kthe Përgjigja;
FundFunksioni
&NëServer
Procedura DërgoMesazhTest(Chat)
Mesazhi = "Mesazh testimi";
Tokeni = "";//Tokeni juaj telegram
Serveri = "api.telegram.org";
Burimi = "bot" + Tokeni + "\/sendMessage?chat_id=" + StrZëvendëso(Format(Chat, "ÇDC=; ÇS=; ÇRG=."), ".", "") + "&text=" + Mesazhi;
Lidhja = E Re HTTPLidhje(Serveri, 443, , , , , E re LidhjeTëSigurtOpenSSL());
Kërkesa = E Re HTTPKërkesë(Burimi);
Përgjigja = Lidhja.Merr(Kërkesa);
FundProcedurësKemi mbetur të publikojmë bazën dhe të lidhim webhook-un.
Publikimi bëhet si gjithmonë, është e nevojshme vetëm të shtoni shenjat në publikimin e shërbimit HTTP:

Hapi i fundit do të jetë të lidhim 1C-në tonë me telegramin. Për këtë përdora një faqe HTML të thjeshtë me kodin e mëposhtëm:
<html>
<body>
<form action="https://api.telegram.org/bot<ЗдесьДолженБытьТокен>/setwebhook" method="post" enctype="multipart/form-data">
Zgjidhni certifikatën për të ngarkuar:
<input type="file" name="certificate" id="fileToUpload">
URL: <input type="text" name="url" value="https://<YOURWEBSITE>/<YOUR_PHP_URL>"><br>
<input type="submit" value="Ngarko certifikatën" name="submit">
</form>
</body>
</html>Në formë thjesht zgjedhim çelësin publik dhe futim rrugën e plotë që çon te shërbimi ynë http. Kujtoj se rruga e plotë do të duket kështu:
Ju lutem, mos më kritikoni për kodin, disa gjëra janë bërë me kod të fortë, pasi kjo është bërë ekskluzivisht për qëllime demonstrative.
Publikimi u shkrua, pasi nuk kam gjetur asnjë shembull funksional mbi përdorimin e webhooks në sit, përveç ndërtuesit të boteve të Telegramit. Por ai është me pagesë dhe, ndoshta, nuk është i nevojshëm për të gjithë në këtë formë.
Në arkiv gjendet instalimi i apache 2.2.24 së bashku me Openssl (për arsye, kërkimi i saj më mori shumë kohë), skedari html për regjistrimin e webhook-ut, skedari i konfigurimit të apache dhe konfigurimi cf me shërbimin http dhe shembullin e dërgimit të mesazhit test.
Burimi: habr.com
