Telegram + 1C + Webhooks + Apache + Selbstsigniertes Zertifikat

Über die Integration von Telegram und 1C wurden viele Zeilen geschrieben. Aber nirgendwo habe ich vollständige Anweisungen zur Installation und Konfiguration von Webhooks gesehen. Ich werde versuchen, es zu schreiben.

Für all das brauchen wir (oder es wäre richtiger zu sagen, was ich verwendet habe):

  1. Apache 2.2.24
  2. OpenSSL (in der Apache-Installation enthalten)
  3. 1C (mit Modulen) Webserver)
  4. Deine Domain
  5. Erstellter Bot in Telegram (Ich werde seine Erstellung nicht beschreiben, weil es ziemlich trivial ist)

Es wird davon ausgegangen, dass Sie die gesamte Software installiert haben.

Beginnen wir also mit der Beschaffung eines Zertifikats. Öffnen Sie die Befehlszeile und führen Sie den folgenden Code aus:

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"

Wo:

YOURPRIVATE.key ist der private Schlüssel des Zertifikats. Wird in Apache verwendet

YOURPUBLIC.pem ist der öffentliche Schlüssel des Zertifikats. Wird bei der Registrierung eines Webhooks verwendet

YOURDOMAIN.EXAMPLE – die Adresse Ihrer Domain mit einem Webhook. Sie muss mit der Webhook-Adresse übereinstimmen!!!

Nach der Ausführung dieses Codes werden die Schlüsseldateien im OpenSSL-Ordner angezeigt (bei mir ist es „C:ProgrammeApache Software FoundationApache2.2bin“).

Ich habe sie in den Apache-Conf-Ordner kopiert.

Fahren wir mit der Einrichtung von Apache fort.

Ich habe viele verschiedene Möglichkeiten gesehen. Folgendes hat bei mir funktioniert:

Die folgenden Zeilen wurden zu httpd.conf hinzugefügt:

Listen 443 

damit Apache Port 443 „abhören“ kann.

Block auf folgende Form reduziert:

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

Ganz am Ende werden Zeilen hinzugefügt, in denen ich den Pfad zum Zertifikat angebe:

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

Und kommentieren Sie die Zeile aus:

LoadModule ssl_module modules/mod_ssl.so 

In der Konfiguration erstellen wir einen HTTP-Dienst. Er wird auf das Telegramm antworten und seine Anfragen bearbeiten.

In meinem Fall sind folgende Parameter angegeben:

Name: TGWebhook
RootURL: Webhook
Sitzungen wiederverwenden: Verwende nicht (Mit dem Automatikmodus hat es bei mir nicht funktioniert)
Lebensdauer: 20
URL-Vorlagen: Es wurde eine „Any“-Vorlage mit zwei Methoden erstellt: GET und POST

Telegram + 1C + Webhooks + Apache + Selbstsigniertes Zertifikat

Telegram + 1C + Webhooks + Apache + Selbstsigniertes Zertifikat

Telegram + 1C + Webhooks + Apache + Selbstsigniertes Zertifikat

Methodenhandler werden standardmäßig erstellt. Ich füge dem POST-Handler Folgendes hinzu, nur um die Verbindung zu überprüfen:

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

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


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

Jetzt müssen Sie nur noch die Datenbank veröffentlichen und einen Webhook anhängen.

Die Veröffentlichung erfolgt wie immer, Sie müssen lediglich Kontrollkästchen zu den HTTP-Dienstveröffentlichungen hinzufügen:

Telegram + 1C + Webhooks + Apache + Selbstsigniertes Zertifikat

Der letzte Schritt besteht darin, unser 1C mit Telegram zu verknüpfen. Dazu habe ich eine einfache HTML-Seite mit folgendem Code verwendet:

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

Wählen Sie im Formular einfach den öffentlichen Schlüssel aus und geben Sie den vollständigen Pfad zu unserem http-Dienst ein. Ich möchte Sie daran erinnern, dass der vollständige Pfad zum Dienst folgendermaßen aussehen wird:

YourDomain/DatabaseName/hs/ServiceName/v1

Bitte werfen Sie den Code nicht raus, einige Dinge sind absichtlich fest codiert, weil ... Dies alles geschah ausschließlich zu Demonstrationszwecken.

Die Veröffentlichung wurde geschrieben, weil Ich habe auf der Website kein einziges funktionierendes Beispiel für die Arbeit mit Webhooks gefunden, außer dem Telegram Bot Constructor. Aber es ist kostenpflichtig und vielleicht braucht es nicht jeder in dieser Form.

Das Archiv enthält die Installation von Apache 2.2.24 zusammen mit Openssl (aus irgendeinem Grund hat es lange gedauert, bis ich es gefunden habe), eine HTML-Datei zum Registrieren eines Webhooks, eine Apache-Konfigurationsdatei und eine CF-Konfiguration mit einem http-Dienst sowie ein Beispiel eine Testnachricht zu senden. Ein Download ist nicht erforderlich, weil Alle Inhalte finden Sie im Artikel.

Source: habr.com

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz und VPS-VDS-Servern 🔥 Kaufen Sie zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server | ProHoster