Telegram + 1C + Webhooks + Apache + Certifikatë e vetëshkruar

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

  1. Apache 2.2.24
  2. OpenSSL (i përfshirë në instalimin e Apache)
  3. 1C (me modulë) serverin web)
  4. Domeni juaj
  5. 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.key

Dhe 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

Telegram + 1C + Webhooks + Apache + Certifikatë e vetëshkruar

Telegram + 1C + Webhooks + Apache + Certifikatë e vetëshkruar

Telegram + 1C + Webhooks + Apache + Certifikatë e vetëshkruar

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ës

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

Telegram + 1C + Webhooks + Apache + Certifikatë e vetëshkruar

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:

DomeniJuaj/EmriBazes/hs/EmriShërbimit/v1

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

Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS 🔥 Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS | ProHoster