Telegram + 1С + Уебхукове + Apache + Самоподписан сертификат

Много е писано за интеграцията на Телеграм и 1С. Но никъде не видях пълна инструкция за инсталиране и конфигуриране на уебхукове. Ще опитам да я напиша.

За всичко това ще ни е нужно (или по-правилно, ще кажа, че беше използвано от мен):

  1. Apache 2.2.24
  2. OpenSSL (влизаща в инсталацията на апача)
  3. 1С (с модулите) веб-сервера)
  4. Собствен домейн
  5. Създаден бот в Телеграм (няма да описвам създаването му, тъй като е доста тривиално)

Предполага се, че целият софтуер е инсталиран.

И така, ще започнем с получаването на сертификата. Отворете командния ред и изпълнете следния код:

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"

Където:

YOURPRIVATE.key — частният ключ на сертификата. Ще бъде използван в апача

YOURPUBLIC.pem — публичният ключ на сертификата. Ще бъде използван при регистрацията на уебхука

YOURDOMAIN.EXAMPLE — адрес на вашия домейн с уебхука. Трябва да съвпада с адреса на уебхука!!!

След изпълнението на този код в папката openssl (при мен това е «C:Program FilesApache Software FoundationApache2.2bin») ще се появят файловете с ключове.

Аз ги копирах в папката conf на апача.

Преминаваме към настройката на Apache.

Видях много различни начини. При мен сработи следният:

В httpd.conf добавени са следните редове:

Listen 443 

за да може апачът да "слуша" 443 порт.

Блокът <IfModule ssl_module> е променен на следния вид:

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

В самия край са добавени редовете, където задавам пътищата към сертификата:

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

И разкоментирайте реда:

LoadModule ssl_module modules/mod_ssl.so 

В конфигурацията създаваме HTTP услуга. Именно тя ще отговаря на телеграма и ще обработва неговите запитвания.

В моя случай са зададени следните параметри:

Име: ТГВебхук
Коренен URL: webhook
Повторна употреба на сесии: Не използвай (с автоматичен режим при мен не заработи)
Времетраене: 20
Шаблони URL: създаден е шаблон „Любой“ с два метода: GET и POST

Telegram + 1С + Уебхукове + Apache + Самоподписан сертификат

Telegram + 1С + Уебхукове + Apache + Самоподписан сертификат

Telegram + 1С + Уебхукове + Apache + Самоподписан сертификат

Обработчиците на методите се създават по подразбиране. В обработчика POST ще добавя следното, просто за проверка на връзката:

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

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


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

Остава да публикуваме базата и да свържем уебхука.

Публикацията става както винаги, необходимо е само да добавите отметките за публикуване на HTTP-сервиса:

Telegram + 1С + Уебхукове + Apache + Самоподписан сертификат

Последната стъпка е да свържем нашата 1С с телеграма. За целта използвах проста html страница с следния код:

<html>
<body>

<form action="https://api.telegram.org/bot<ЗдесьДолженБытьТокен>/setwebhook" method="post" enctype="multipart/form-data">
    Изберете сертификат за качване:
    <input type="file" name="certificate" id="fileToUpload">
	URL: <input type="text" name="url"  value="https://<YOURWEBSITE>/<YOUR_PHP_URL>"><br>
    <input type="submit" value="Качете сертификата" name="submit">
</form>

</body>
</html>

В формата просто избираме публичния ключ и въвеждаме пълния път до нашия http-сервис. Напомням, че пълният път до сервиса ще изглежда по следния начин:

ВашиятДомен/ИмеНаБазата/hs/ИмеНаСервиса/v1

Моля, не ме критикувайте за кода, някои неща са направени умишлено с хардкод, тъй като всичко това беше направено строго за демонстрационни цели.

Публикацията беше написана, тъй като не намерих нито един работещ пример за работа с уебхукове на сайта, освен Конструктор на ботове Телеграм. Но той е платен и, възможно, не е нужен на всички в такъв вид.

В архива се съдържа инсталация на apache 2.2.24 заедно с Openssl (по някаква причина търсенето на него отне много време), html файл за регистрация на уебхука, конфигурационен файл на apache и cf конфигурация с http-сервиса и пример за изпращане на тестово съобщение. Свалянето не е задължително, тъй като всичкото съдържание е в статията.

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster