Telegram + 1C + Webhook + Apache + Samo podepsaný certifikát

O integraci Telegramu a 1C bylo napsáno mnoho řádků. Ale nikdy jsem neviděl kompletní instrukci k instalaci a nastavení webhooků. Pokusím se ji napsat.

K tomu všemu budeme potřebovat (nebo bude přesněji řečeno, že jsem použil):

  1. Apache 2.2.24
  2. OpenSSL (součást instalace Apache)
  3. 1C (s moduly) webového serveru)
  4. Vlastní doménu
  5. Vytvořeného bota v Telegramu (nebudu popisovat jeho vytvoření, protože je to dost triviální)

Předpokládá se, že veškerý software máte nainstalovaný.

Takže začneme získáním certifikátu. Otevřete příkazový řádek a proveďte následující 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 — soukromý klíč certifikátu. Bude použit v Apache

YOURPUBLIC.pem — veřejný klíč certifikátu. Bude použit při registraci webhooku

YOURDOMAIN.EXAMPLE — adresa vaší domény s webhookem. Musí se přesně shodovat s adresou webhooku!!!

Po provedení tohoto kódu se ve složce openssl (u mě je to „C:Program FilesApache Software FoundationApache2.2bin“) objeví soubory klíčů.

Kopíroval jsem je do složky conf Apache.

Přejdeme k nastavení Apache.

Viděl jsem mnoho různých způsobů. Mně fungoval následující:

Do httpd.conf byly přidány následující řádky:

Listen 443 

aby Apache "poslouchal" port 443.

Blok byl upraven na následující podobu:

SSLMutex default
SSLSessionCache none

Na samotném konci byly přidány řádky, kde uvádím cesty k certifikátu:

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

A odkomentujte řádku:

LoadModule ssl_module modules/mod_ssl.so 

V konfiguraci vytváříme HTTP službu. Ta bude odpovídat Telegramu a zpracovávat jeho žádosti.

V mém případě byly uvedeny následující parametry:

Název: TGWebhook
Kořenový URL: webhook
Opakované používání sezení: Nepoužívat (v automatickém režimu mi to nefungovalo)
Životnost: 20
Šablony URL: vytvořena šablona „Jakákoliv“ se dvěma metodami: GET a POST

Telegram + 1C + Webhook + Apache + Samo podepsaný certifikát

Telegram + 1C + Webhook + Apache + Samo podepsaný certifikát

Telegram + 1C + Webhook + Apache + Samo podepsaný certifikát

Zpracovatelé metod jsou vytvářeni automaticky. Do zpracovatele POST přidám následující, jen pro ověření spojení:

Funkce AnyPOST(Request)

	OdeslatTestovouZpravu(""); 
	Odpověď = Nová HTTPServisOdpověď(200);
	Návrat Odpověď;
	
KonecFunkce


&NaServeru
Procedura OdeslatTestovouZpravu(Chat)
	
		Zpráva = "Testovací zpráva";
		Token = ""; //Váš telegramový token
		Server = "api.telegram.org";
	    Zdroje = "bot" + Token + "\/sendMessage?chat_id=" + ŘetězecNahrazení(Formát(Chat, "ČDЦ=; ČS=; ČРГ=."), ".", "") + "&text=" + Zpráva;
   		Spojení  =  Nové HTTPSpojení(Server,443,,,,,Nové ZabezpečenéSpojeníOpenSSL());
		Žádost = Nový HTTPŽádost(Zdroje);
		Odpověď = Spojení.Získat(Žádost);
	
KonecProcedury

Zbývá publikovat databázi a připojit webhook.

Publikace se dělá jako obvykle, stačí přidat zaškrtnutí u publikací HTTP služby:

Telegram + 1C + Webhook + Apache + Samo podepsaný certifikát

Posledním krokem připojíme náš 1C k telegramu. Použil jsem k tomu jednoduchou html stránku s následujícím kódem:

<html>
<body>

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

</body>
</html>

V formuláři jednoduše vybereme veřejný klíč a zadáme úplnou cestu k našemu http servisu. Připomínám, že úplná cesta k servisu bude vypadat takto:

VášDoménu/OborDatabáze/hs/NázevSlužby/v1

Prosím, nekopněte do kódu, některé věci byly úmyslně udělány hardcodem, jelikož to bylo děláno výhradně pro demonstrační účely.

Publikace byla napsána, protože jsem nenašel žádný funkční příklad práce s webhooks na stránkách, kromě Stavitele botů Telegram. Ale ten je placený a možná není pro každého potřebný v této podobě.

V archivu je instalace apache 2.2.24 spolu s Openssl (proč mi hledání té zabralo hodně času), html soubor pro registraci webhooku, konfigurační soubor apache a cf konfigurace s http servisem a příkladem odeslání testovací zprávy. Stáhnout není nutné, protože veškerý obsah je v článku.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster