Telegram + 1C + Webhooks + Apache + Samopotpisani certifikat

Mnogo je redaka napisano o integraciji Telegrama i 1C. Ali nigdje nisam vidio potpune upute za instaliranje i konfiguriranje webhookova. Pokušat ću to napisati.

Za sve ovo nam je potrebno (ili bi bilo ispravnije reći ono što sam ja koristio):

  1. Apache 2.2.24
  2. OpenSSL (uključen u instalaciju Apachea)
  3. 1C (с модулями web poslužitelj)
  4. Vlastita domena
  5. Kreiran bot u Telegramu (neću opisivati ​​njegovu izradu, jer je prilično trivijalan)

Pretpostavlja se da imate instaliran sav softver.

Dakle, počnimo s dobivanjem certifikata. Otvorite naredbeni redak i izvršite sljedeći kod:

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"

Gdje:

YOURPRIVATE.key je privatni ključ certifikata. Koristit će se u Apacheu

YOURPUBLIC.pem je javni ključ certifikata. Koristit će se prilikom registracije webdojavnika

YOURDOMAIN.EXAMPLE - adresa vaše domene s webhookom. Mora odgovarati adresi webhooka!!!

Nakon izvršavanja ovog koda, ključne datoteke će se pojaviti u mapi openssl (za mene je to "C:Program FilesApache Software FoundationApache2.2bin").

Kopirao sam ih u mapu Apache conf.

Prijeđimo na postavljanje Apachea.

Vidio sam mnogo različitih načina. Meni je djelovalo sljedeće:

Sljedeći redovi dodani su u httpd.conf:

Listen 443 

kako bi Apache "slušao" port 443.

Blok sveo na sljedeći oblik:

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

Na samom kraju dodani su redovi u kojima označavam put do certifikata:

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

I odkomentirajte redak:

LoadModule ssl_module modules/mod_ssl.so 

U konfiguraciji stvaramo HTTP uslugu. On je taj koji će odgovoriti na telegram i obraditi njegove zahtjeve.

U mom slučaju navedeni su sljedeći parametri:

Ime: TGWebhook
RootURL: web-dojavnik
Ponovno korištenje sesija: Nemojte koristiti (s automatskim načinom rada nije mi radio)
Životni vijek: 20
Predlošci URL-a: kreirali su predložak "Bilo koji" s dvije metode: GET i POST

Telegram + 1C + Webhooks + Apache + Samopotpisani certifikat

Telegram + 1C + Webhooks + Apache + Samopotpisani certifikat

Telegram + 1C + Webhooks + Apache + Samopotpisani certifikat

Rukovatelji metodama kreiraju se prema zadanim postavkama. Dodat ću sljedeće u POST rukovatelj, samo da provjerim vezu:

Функция ЛюбойPOST(Запрос)

	ВыслатьТестовоеСообщение(""); //chat_id
	Ответ = Новый HTTPСервисОтвет(200);
	Возврат Ответ;
	
КонецФункции


&НаСервере
Процедура ВыслатьТестовоеСообщение(Чат)
	
		Сообщение = "Тестовое сообщение";
		Токен = "";//Ваш токен telegram
		Сервер = "api.telegram.org";
	    Ресурс = "bot" + Токен + "/sendMessage?chat_id=" + СтрЗаменить(Формат(Чат, "ЧДЦ=; ЧС=; ЧРГ=."), ".", "") + "&text=" + Сообщение;
   		Соединение  =  Новый HTTPСоединение(Сервер,443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
		Запрос = Новый HTTPЗапрос(Ресурс);
		Ответ = Соединение.Получить(Запрос);
	
КонецПроцедуры

Sve što preostaje je objaviti bazu podataka i priložiti webhook.

Objavljivanje se vrši kao i uvijek, samo trebate dodati potvrdne okvire u publikacije HTTP usluge:

Telegram + 1C + Webhooks + Apache + Samopotpisani certifikat

Posljednji korak je povezivanje našeg 1C s Telegramom. Za ovo sam koristio jednostavnu html stranicu sa sljedećim kodom:

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

U obrascu jednostavno odaberite javni ključ i unesite puni put do naše http usluge. Dopustite mi da vas podsjetim da će cijeli put do usluge izgledati ovako:

VašaDomena/NazivBaze/hs/NazivUsluge/v1

Molimo vas da ne izbacujete kod, neke stvari su namjerno ukodirane, jer... ovo je sve učinjeno isključivo u svrhu demonstracije.

Publikacija je napisana jer Na web mjestu nisam pronašao niti jedan radni primjer rada s webhookovima, osim Telegram Bot Constructor-a. Ali plaća se i možda ne treba svima u ovom obliku.

Arhiva sadrži instalaciju Apache 2.2.24 zajedno s Openssl-om (iz nekog razloga dugo mi je trebalo da ga pronađem), html datoteku za registraciju webhooka, Apache konfiguracijsku datoteku i cf konfiguraciju s http uslugom i primjer slanja probne poruke. Preuzimanje nije potrebno, jer Sav sadržaj je u članku.

Izvor: www.habr.com

Kupite pouzdan hosting za stranice s DDoS zaštitom, VPS VDS poslužiteljima 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster