Telegram + 1C + Webhooks + Apache + Selvsigneret certifikat

Der er skrevet mange artikler om integrationen mellem Telegram og 1C. Men jeg har ikke set en fuld vejledning til installation og opsætning af webhooks. Jeg vil prøve at skrive den.

Til alt dette vil vi få brug for (eller rettere sagt, jeg har brugt):

  1. Apache 2.2.24
  2. OpenSSL (som er en del af Apache-installationen)
  3. 1C (med moduler) webserver)
  4. Dit eget domæne
  5. En oprettet bot i Telegram (jeg vil ikke beskrive oprettelsen, da det er ganske trivielt)

Det antages, at al software er installeret.

Så lad os starte med at få certifikatet. Åbn kommandoprompten og kør følgende kode:

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"

Hvor:

YOURPRIVATE.key — den private nøgle til certifikatet. Den vil blive brugt i Apache.

YOURPUBLIC.pem — den offentlige nøgle til certifikatet. Den vil blive brugt ved registrering af webhook.

YOURDOMAIN.EXAMPLE — adressen på dit domæne med webhook. Den skal være identisk med webhook-adressen!!!

Efter at have kørt denne kode, vil der i openssl-mappen (for mig er det «C:Program FilesApache Software FoundationApache2.2bin») dukke filer op med nøgler.

Jeg kopierede dem til Apache's conf-mappe.

Lad os gå videre til opsætning af Apache.

Jeg har set mange forskellige metoder. Den følgende virkede for mig:

Følgende linjer er tilføjet til httpd.conf:

Listen 443 

for at Apache "lytter" på port 443.

Blokken <IfModule ssl_module> er ændret til følgende:

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

I bunden er der tilføjet linjer, hvor jeg angiver stierne til certifikatet:

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

Og udkommenter linjen:

LoadModule ssl_module modules\/mod_ssl.so 

I konfigurationen opretter vi en HTTP-tjeneste. Det er denne, der vil svare Telegram og behandle dens anmodninger.

I mit tilfælde er følgende parametre angivet:

Navn: TGWebhook
Rod-URL: webhook
Session genbrug: Brug ikke (med automatisk tilstand fungerede det ikke for mig)
Levetid: 20
URL-skabeloner: der er oprettet en skabelon "Enhver" med to metoder: GET og POST

Telegram + 1C + Webhooks + Apache + Selvsigneret certifikat

Telegram + 1C + Webhooks + Apache + Selvsigneret certifikat

Telegram + 1C + Webhooks + Apache + Selvsigneret certifikat

Metodebehandlere oprettes som standard. Jeg vil tilføje følgende til POST-behandleren, blot for at teste forbindelsen:

Funktion AnyPOST(Begæring)

	SendTestbesked(""); //chat_id
	Svar = Ny HTTPServiceSvar(200);
	Returner Svar;
	
SlutFunktion


&PåServeren
Procedure SendTestbesked(Chat)
	
		Besked = "Testbesked";
		Token = ""; // Din telegram token
		Server = "api.telegram.org";
	    Ressource = "bot" + Token + "\/sendMessage?chat_id=" + StrErstat(Format(Chat, "DCC=; CS=; CRG=."), ".", "") + "&text=" + Besked;
   		Forbindelse  =  Ny HTTPForbindelse(Server,443,,,,,Ny SikretForbindelseOpenSSL());
		Anmodning = Ny HTTPAnmodning(Ressource);
		Svar = Forbindelse.Hent(Anmodning);
	
SlutProcedure

Det er kun tilbage at offentliggøre databasen og binde webhooks.

Offentliggørelse gøres som altid, der skal kun tilføjes markeringsfelter til offentliggørelsen af HTTP-servicen:

Telegram + 1C + Webhooks + Apache + Selvsigneret certifikat

Som det sidste skridt binder vi vores 1C til telegram. Jeg brugte en simpel html-side med følgende kode:

<html>
<body>

<form action="https://api.telegram.org/bot<ЗдесьДолженБытьТокен>/setwebhook" method="post" enctype="multipart/form-data">
    Vælg certifikat til upload:
    <input type="file" name="certificate" id="fileToUpload">
	URL: <input type="text" name="url"  value="https://<YOURWEBSITE>/<YOUR_PHP_URL>"><br>
    <input type="submit" value="Upload certifikat" name="submit">
</form>

</body>
</html>

I formularen vælger vi blot den offentlige nøgle og indtaster den fulde sti til vores http-service. Jeg minder om, at den fulde sti til servicen vil se således ud:

DitDomæne\/DatabaseNavn\/hs\/ServiceNavn\/v1

Jeg beder om ikke at få skældud for koden, nogle ting er bevidst lavet hardcoded, da dette var udelukkende lavet til demonstration.

Offentliggørelsen blev skrevet, da jeg ikke fandt et eneste fungerende eksempel på arbejde med webhooks på hjemmesiden, bortset fra Telegram botbygger. Men den er betalingsbaseret og muligvis ikke nødvendig for alle i denne form.

I arkivet findes installation af apache 2.2.24 sammen med Openssl (af en eller anden grund tog det mig lang tid at finde), html-fil til registrering af webhook, apache konfigurationsfil og cf konfiguration med http-service og eksempel på sending af testbesked. Det er ikke nødvendigt at downloade, da alt indholdet er i artiklen.

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster