Det er skrevet mange linjer om integreringen av Telegram og 1C. Men jeg har ikke sett en fullstendig instruksjon om installasjon og konfigurering av webhooks noe sted. Jeg skal prøve å skrive den.
For alt dette trenger vi (eller det ville være mer korrekt å si hva jeg brukte):
- Apache 2.2.24
- OpenSSL (inkludert i Apache-installasjonen)
- 1C (med moduler) Internett server)
- Domenet ditt
- Den opprettede boten i Telegram (jeg vil ikke beskrive opprettelsen av den, fordi den er ganske triviell)
Det forutsettes at du har all programvaren installert.
Så la oss begynne med å hente sertifikatet. Åpne kommandolinjen og kjø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økkelen til sertifikatet. Vil bli brukt i Apache
YOURPUBLIC.pem — sertifikatets offentlige nøkkel. Vil bli brukt ved registrering av webhooken.
DITTDOMENE.EKSEMPEL — adressen til domenet ditt med en webhook. Den skal samsvare med webhook-adressen!!!
Etter at du har kjørt denne koden, vil nøkkelfiler vises i openssl-mappen (for meg er det "C:Program FilesApache Software FoundationApache2.2bin").
Jeg kopierte dem til Apache conf-mappen.
La oss gå videre til å konfigurere Apache.
Jeg har sett mange forskjellige måter. Følgende fungerte for meg:
Følgende linjer er lagt til i httpd.conf:
Listen 443 slik at Apache «lytter» til port 443.
Blokkere reduseres til følgende form:
<IfModule ssl_module>
SSLMutex default
SSLSessionCache none
</IfModule>Helt på slutten er det lagt til linjer der jeg spesifiserer stiene til sertifikatet:
SSLEngine On
SSLCertificateFile conf/YOURPUBLIC.pem
SSLCertificateKeyFile conf/YOURPRIVATE.keyOg fjern kommentaren fra linjen:
LoadModule ssl_module modules/mod_ssl.so I konfigurasjonen oppretter vi en HTTP-tjeneste. Den vil svare på telegrammet og behandle forespørslene.
I mitt tilfelle er følgende parametere spesifisert:
Navn: TGWebhook
Rot-URL: webhook
Gjenbruk av økter: Ikke bruk (med automatisk modus fungerte det ikke for meg)
Levetid: 20
URL-maler: opprettet en «Hvilken som helst»-mal med to metoder: GET og POST



Metodebehandlere opprettes som standard. Jeg legger til følgende i POST-behandleren, bare for å teste forbindelsen:
Функция ЛюбойPOST(Запрос)
ВыслатьТестовоеСообщение(""); //chat_id
Ответ = Новый HTTPСервисОтвет(200);
Возврат Ответ;
КонецФункции
&НаСервере
Процедура ВыслатьТестовоеСообщение(Чат)
Сообщение = "Тестовое сообщение";
Токен = "";//Ваш токен telegram
Сервер = "api.telegram.org";
Ресурс = "bot" + Токен + "/sendMessage?chat_id=" + СтрЗаменить(Формат(Чат, "ЧДЦ=; ЧС=; ЧРГ=."), ".", "") + "&text=" + Сообщение;
Соединение = Новый HTTPСоединение(Сервер,443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
Запрос = Новый HTTPЗапрос(Ресурс);
Ответ = Соединение.Получить(Запрос);
КонецПроцедурыAlt som gjenstår er å publisere databasen og legge til webhooken.
Publiseringen gjøres som alltid, du trenger bare å legge til avmerkingsbokser i HTTP-tjenestepublikasjonene:

Det siste trinnet er å koble 1C-en vår til Telegram. Til dette brukte jeg en enkel HTML-side med følgende kode:
<html>
<body>
<form action="https://api.telegram.org/bot<ЗдесьДолженБытьТокен>/setwebhook" method="post" enctype="multipart/form-data">
Select Certificate to 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 Certificate" name="submit">
</form>
</body>
</html>I skjemaet velger du bare den offentlige nøkkelen og skriver inn hele stien til http-tjenesten vår. La meg minne deg på at hele stien til tjenesten vil se slik ut:
Ikke kjefte på meg for koden, noen ting er med vilje hardkodet, fordi alt ble gjort utelukkende for demonstrasjonsformål.
Publikasjonen ble skrevet fordi jeg ikke fant et eneste fungerende eksempel på hvordan man jobber med webhooks på nettstedet, bortsett fra Telegram Bot Builder. Men det er betalt, og kanskje ikke alle trenger det i denne formen.
Arkivet inneholder installasjonen av Apache 2.2.24 sammen med Openssl (av en eller annen grunn tok det meg lang tid å finne det), en html-fil for registrering av en webhook, en Apache-konfigurasjonsfil, en cf-konfigurasjon med en http-tjeneste og et eksempel på sending av en testmelding. Det er ikke nødvendig å laste ned, siden alt innholdet finnes i artikkelen.
Kilde: www.habr.com
