Телеграм + 1С + Уебхукове + Апач + Самоподписан сертификат

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

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

  1. Apache 2.2.24
  2. OpenSSL (включен в инсталацията на апача)
  3. 1C (с модулите на уеб-сервера)
  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 порт.

Блок е приведен до следния вид:

SSLMutex default
SSLSessionCache none

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

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

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

LoadModule ssl_module modules/mod_ssl.so 

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

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

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

Телеграм + 1С + Уебхукове + Апач + Самоподписан сертификат

Телеграм + 1С + Уебхукове + Апач + Самоподписан сертификат

Телеграм + 1С + Уебхукове + Апач + Самоподписан сертификат

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

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

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


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

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

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

Телеграм + 1С + Уебхукове + Апач + Самоподписан сертификат

Последната стъпка е да свържем нашата 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

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

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

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

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

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