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):
- Apache 2.2.24
- OpenSSL (súčasť instalácie Apache)
- 1C (s modulmi) webového servera)
- Vlastnú doménu
- 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.keyA 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



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úryJe potrebné publikovať databázu a pripojiť webhook.
Publikovanie sa robí ako vždy, treba len pridať začiarkovacie políčka na publikovanie HTTP-servezu:

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