Много е писано за интеграцията на Телеграм и 1С. Но никъде не видях пълна инструкция за инсталиране и конфигуриране на уебхукове. Ще опитам да я напиша.
За всичко това ще ни е нужно (или по-правилно, ще кажа, че беше използвано от мен):
- Apache 2.2.24
- OpenSSL (влизаща в инсталацията на апача)
- 1С (с модулите) веб-сервера)
- Собствен домейн
- Създаден бот в Телеграм (няма да описвам създаването му, тъй като е доста тривиално)
Предполага се, че целият софтуер е инсталиран.
И така, ще започнем с получаването на сертификата. Отворете командния ред и изпълнете следния код:
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



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

Последната стъпка е да свържем нашата 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-сервис. Напомням, че пълният път до сервиса ще изглежда по следния начин:
Моля, не ме критикувайте за кода, някои неща са направени умишлено с хардкод, тъй като всичко това беше направено строго за демонстрационни цели.
Публикацията беше написана, тъй като не намерих нито един работещ пример за работа с уебхукове на сайта, освен Конструктор на ботове Телеграм. Но той е платен и, възможно, не е нужен на всички в такъв вид.
В архива се съдържа инсталация на apache 2.2.24 заедно с Openssl (по някаква причина търсенето на него отне много време), html файл за регистрация на уебхука, конфигурационен файл на apache и cf конфигурация с http-сервиса и пример за изпращане на тестово съобщение. Свалянето не е задължително, тъй като всичкото съдържание е в статията.
Източник: habr.com
