Telegram + 1C + Webhooks + Apache + Certifikatë e vetë-nënshkruar

Ka shumë rreshta të shkruar për integrimin e Telegramit me 1C. Por askund nuk pashë një udhëzues të plotë për instalimin dhe konfigurimin e webhooks. Do të provoj ta shkruaj atë.

Për gjithçka kjo na nevojitet (ose më saktësisht, do të ishte përdorur nga unë):

  1. Apache 2.2.24
  2. OpenSSL (që përfshihet në instalimin e Apache)
  3. 1C (me modulet e shërbimit të uebit) web)
  4. Dominin tuaj
  5. Boti i krijuar në Telegram (nuk do ta përshkruaj krijimin e tij, pasi është mjaft trivial)

Supozimi është se e gjithë softueri është instaluar.

Pra, le të fillojmë me marrjen e certifikatës. Hapni komandën 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 kur regjistrohet webhook.

YOURDOMAIN.EXAMPLE — adresa e domainit tuaj me webhook. Duhet të përputhet me adresën e webhook!!!

Pas ekzekutimit të këtij kodi, në dosjen openssl (për mua është "C:Program FilesApache Software FoundationApache2.2bin") do të shfaqen skedarët e çelësit.

I kam kopjuar ato në dosjen conf të Apache.

Tani kalojmë te konfigurimi i Apache.

Kam parë shumë mënyra të ndryshme. Mua më ka funksionuar si mëposht:

Në httpd.conf janë shtuar rreshtat e mëposhtëm:

Listen 443 

për që Apache "të dëgjojë" portin 443.

Blloku <IfModule ssl_module> është transformuar në versionin e mëposhtëm:

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

Në fund shtohet rreshti ku tregohet rruga drejt certifikatës:

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

Dhe komentoni rreshtin:

LoadModule ssl_module modules/mod_ssl.so 

Në konfigurim krijojmë një shërbim HTTP. Ky do të përgjigjet Telegramit dhe do të përpunojë kërkesat e tij.

Në rastin tim, janë caktuar parametra të tillë:

Emri: TGVebhook
URL Përcaktues: webhook
Rishpërndarja e sesioneve: Mos përdorni (më automatik nuk funksionoi për mua)
Koha e jetesës: 20
Modeli i URL: është krijuar një model "Çdo" me dy metoda: GET dhe POST

Telegram + 1C + Webhooks + Apache + Certifikatë e vetë-nënshkruar

Telegram + 1C + Webhooks + Apache + Certifikatë e vetë-nënshkruar

Telegram + 1C + Webhooks + Apache + Certifikatë e vetë-nënshkruar

Trajtesat e metodave krijohen si në default. Në trajtesën POST unë do të shtoj këtë, vetëm për të provuar lidhjen:

Funksioni ÇdoPOST(Kërkesë)

	DërgoMesazhTest(""); //chat_id
	Përgjigja = e Re HTTPShërbimiPërgjigje(200);
	Kthe përgjigjen;
	
Mbarimi i funksionit


&NëServer
Procedura DërgoMesazhTest(Chat)
	
		Mesazhi = "Mesazh testimi";
		Tokeni = ""; //Tokeni juaj telegram
		Serveri = "api.telegram.org";
	    Resurset = "bot" + Tokeni + "/sendMessage?chat_id=" + Zëvendëso(StrFormat(Chat, "ÇDC=; ÇS=; ÇRG=."), ".", "") + "&text=" + Mesazhi;
   		Lidhja = e Re HTTPLidhje(Serveri,443,,,,, e Re LidhjeTëMbrojturOpenSSL());
		Kërkesa = e Re HTTPKërkesa(Resurset);
		Përgjigja = Lidhja.Merr(Kërkesën);
	
Mbarimi i procedurës

E mbetet të publikohet baza dhe të lidhet webhook.

Publikimi bëhet si gjithmonë, vetëm duhet të shtoni tick të publikimeve të shërbimit HTTP:

Telegram + 1C + Webhooks + Apache + Certifikatë e vetë-nënshkruar

Hapi i fundit do të jetë lidhja e 1C me Telegram. Unë për këtë përdora një faqe HTML të thjeshtë me këtë kod:

<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ë formular thjeshtë zgjidhni çelësin publik dhe shkruani rrugën e plotë të shërbimit tonë http. Rrembim, se rruga e plotë do të duket kështu:

DomeniJuaj/NëEmrinBazes/hs/NëEmrinShërbimit/v1

Ju lutem mos e kritikoni për kodin, disa gjëra janë bërë qëllimisht hardcoded, pasi kjo është bërë ekskluzivisht për qëllime demonstrative.

Publikimi është shkruar, pasi nuk pata ndonjë shembull funksional për punën me webhook në sit, përveç ndihmës së ndërtuesve të boteve të Telegramit. Por kjo është me pagesë dhe, ndoshta, nuk është e nevojshme për të gjithë në këtë formë.

Në arkiv ndodhet instalimi i Apache 2.2.24 së bashku me Openssl (pse ndoshta më mori kaq shumë kohë për të gjetur këtë), skedari html për regjistrimin e webhook, skedari i konfigurimit të Apache dhe konfigurimi cf me shërbimin http dhe një shembull të dërgimit të një mesazhi testues. Nuk është e obligueshme për shkarkim, pasi e gjithë përmbajtja është në artikull.

Burimi: habr.com

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster