Telegram + 1C + Webhooky + Apache + Samopodpisaný certifikát

O tejto integrácii Telegramu a 1C je napísaných veľa príspevkov. Ale nikde som nevidel úplný návod na inštaláciu a nastavenie webhooks. Pokúsim sa ho napísať.

Na všetko toto budeme potrebovať (alebo by bolo správnejšie povedať, že som použil):

  1. Apache 2.2.24
  2. OpenSSL (súčasť instalácie Apache)
  3. 1C (s modulmi) webového servera)
  4. Vlastnú doménu
  5. Vytvoreného bota v Telegrame (nebudem popisovať jeho vytvorenie, pretože to je dosť triviálne)

Predpokladá sa, že celý softvér máte nainštalovaný.

Takže začneme získavaním certifikátu. Otvoríme príkazový riadok a vykonáme nasledujúci kód:

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"

Kde:

YOURPRIVATE.key — súkromný kľúč certifikátu. Bude použitý v Apache.

YOURPUBLIC.pem — verejný kľúč certifikátu. Bude použitý pri registrácii webhooku.

YOURDOMAIN.EXAMPLE — adresa vašej domény s webhookom. Musí sa zhodovať s adresou webhooku!!!

Po vykonaní tohto kódu sa v priečinku openssl (u mňa je to „C:Program FilesApache Software FoundationApache2.2bin“) objavia súbory kľúčov.

Skopíroval som ich do priečinka conf Apache.

Prejdeme k nastaveniu Apache.

Videli sme mnoho rôznych spôsobov. Mne fungoval nasledujúci:

Do httpd.conf boli pridané nasledujúce riadky:

Listen 443 

aby Apache „počúval“ port 443.

Blok <IfModule ssl_module> bol upravený na nasledujúci formát:

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

Na konci boli pridané riadky, kde uvádzam cesty k certifikátu:

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

A odkomentujte riadok:

LoadModule ssl_module modules\/mod_ssl.so 

Vo konfigurácii vytvoríme HTTP službu. Presne tá bude odpovedať Telegramu a spracovávať jeho požiadavky.

V mojom prípade sú nastavené nasledujúce parametre:

Názov: TGVebhook
Koreňový URL: webhook
Opätovné použitie relácií: Nepoužívať (s automatickým režimom mi to nefungovalo)
Čas života: 20
Šablóny URL: vytvorená šablóna „Akýkoľvek“ s dvoma metódami: GET a POST

Telegram + 1C + Webhooky + Apache + Samopodpisaný certifikát

Telegram + 1C + Webhooky + Apache + Samopodpisaný certifikát

Telegram + 1C + Webhooky + Apache + Samopodpisaný certifikát

Spracovatelia metód sú vytvorené predvolene. Do spracovateľa POST pridám nasledujúce, len na overenie spojenia:

Funkcia AkýPOST(Žiadosť)

	OdoslaťTestovúSprávu(""); //chat_id
	Odpoveď = Nový HTTPServisOdpoveď(200);
	Návrat Odpoveď;
	
KoniecFunkcie


&NaServeri
Procedúra OdoslaťTestovúSprávu(Chat)
	
		Správa = "Testová správa";
		Token = ""; //Váš telegram token
		Server = "api.telegram.org";
	    Zdroje = "bot" + Token + "\/sendMessage?chat_id=" + StrZmeniť(Formát(Chat, "ČDC=; ČS=; ČRG=.“), ".", "") + "&text=" + Správa;
   		Spojenie  =  Nový HTTPSpojenie(Server,443,,,,,Nový ChránenéSpojenieOpenSSL());
		Žiadosť = Nový HTTPŽiadosť(Zdroje);
		Odpoveď = Spojenie.Získať(Žiadosť);
	
KoniecProcedúry

Je potrebné publikovať databázu a pripojiť webhook.

Publikovanie sa robí ako vždy, treba len pridať začiarkovacie políčka na publikovanie HTTP-servezu:

Telegram + 1C + Webhooky + Apache + Samopodpisaný certifikát

Posledným krokom pripojíme našu 1C k telegramu. Na tento účel som použil jednoduchú html stránku s nasledujúcim kódom:

<html>
<body>

<form action="https://api.telegram.org/bot<ЗдесьДолженБытьТокен>/setwebhook" method="post" enctype="multipart/form-data">
    Vyberte certifikát na nahratie:
    <input type="file" name="certificate" id="fileToUpload">
	URL: <input type="text" name="url"  value="https://<YOURWEBSITE>/<YOUR_PHP_URL>"><br>
    <input type="submit" value="Nahrať certifikát" name="submit">
</form>

</body>
</html>

Vo formulári jednoducho vyberieme verejný kľúč a zadáme úplnú cestu k nášmu http-servisu. Pripomínam, že úplná cesta k servisu bude vyzerať takto:

VášDoména/ NázovDatabázy/hs/NázovSlužby/v1

Prosím, neodkopávajte ma za kód, niektoré veci sú úmyselne robené hardcodovaním, pretože to všetko bolo robené výlučne na demonstračné účely.

Publikácia bola napísaná, pretože som nenašiel žiadny funkčný príklad práce s webhookmi na stránke, okrem Konštruktora robotov Telegram. Ale ten je spoplatnený a možno nie je pre všetkých potrebný v takejto podobe.

Archív obsahuje inštaláciu apacha 2.2.24 spolu s Openssl (prečo mi jeho hľadanie trvalo veľa času), súbor html pre registráciu webhooku, konfiguračný súbor apacha a cf konfiguráciu s http-servisom a príkladom odoslania testovej správy. Na stiahnutie nie je povinný, pretože všetok obsah je v článku.

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster