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



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

Последната стъпка е да свържете нашия 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 услуга. Позволете ми да ви напомня, че пълният път до услугата ще изглежда така:
Моля, не ритайте кода, някои неща са умишлено твърдо кодирани, защото... всичко това беше направено само за демонстрационни цели.
Публикацията е написана, защото Не намерих нито един работещ пример за работа с webhooks на сайта, с изключение на Telegram Bot Constructor. Но е платено и може би не всеки има нужда от него в тази форма.
Архивът съдържа инсталацията на Apache 2.2.24 заедно с Openssl (по някаква причина ми отне много време да го намеря), html файл за регистриране на webhook, конфигурационен файл на Apache и cf конфигурация с http услуга и пример за изпращане на тестово съобщение. Изтеглянето не е необходимо, т.к Цялото съдържание е в статията.
Източник: www.habr.com
