Telegram + 1C + Webhooks + Apache + Самоподписан сертификат

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

За всичко това ни трябва (или би било по-правилно да кажа какво използвах аз):

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

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

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

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 е частният ключ на сертификата. Ще се използва в Apache

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

YOURDOMAIN.EXAMPLE - адресът на вашия домейн с webhook. Трябва да съвпада с адреса на webhook!!!

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

Копирах ги в папката conf на Apache.

Нека да преминем към настройката на Apache.

Виждал съм много различни начини. Следното работи за мен:

Следните редове са добавени към httpd.conf:

Listen 443 

за да може Apache да „слуша“ порт 443.

Блокирайте сведен до следния вид:

<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 услуга. Той е този, който ще отговори на телеграмата и ще обработи заявките му.

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

Име: TGWebhook
RootURL: уеб кукичка
Повторно използване на сесии: Не използвай (с автоматичен режим не ми се получи)
Живот: 20
Шаблони за URL адреси: създаде шаблон „Всеки“ с два метода: GET и POST

Telegram + 1C + Webhooks + Apache + Самоподписан сертификат

Telegram + 1C + Webhooks + Apache + Самоподписан сертификат

Telegram + 1C + Webhooks + Apache + Самоподписан сертификат

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

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

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


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

Всичко, което остава, е да публикуваме базата данни и да прикачим webhook.

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

Telegram + 1C + Webhooks + Apache + Самоподписан сертификат

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

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

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

Вашият домейн/Име на база данни/hs/Име на услуга/v1

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

Публикацията е написана, защото Не намерих нито един работещ пример за работа с webhooks на сайта, с изключение на Telegram Bot Constructor. Но е платено и може би не всеки има нужда от него в тази форма.

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

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

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