Telegram + 1C + Webhooks + Apache + Selbstsigniertes Zertifikat

Es wurden viele Zeilen über die Integration von Telegram und 1C geschrieben. Doch ich habe nirgends eine vollständige Anleitung zur Installation und Konfiguration von Webhooks gefunden. Ich werde versuchen, sie zu erstellen.

Dafür benötigen wir (oder richtiger gesagt, was ich verwendet habe):

  1. Apache 2.2.24
  2. OpenSSL (Teil der Apache-Installation)
  3. 1C (mit Modulen) Webserver)
  4. Eigene Domain
  5. Erstellter Bot in Telegram (ich werde die Erstellung nicht beschreiben, da sie ziemlich trivial ist)

Es wird vorausgesetzt, dass die gesamte Software auf Ihrem System installiert ist.

Also, beginnen wir mit der Erstellung des Zertifikats. Öffnen Sie die Eingabeaufforderung und führen Sie den folgenden Befehl aus:

openssl req -newkey rsa:2048 -sha256 -nodes -keyout YOURPRIVATE.key -x509 -days 365 -out YOURPUBLIC.pem -subj "/C=DE/ST=Bayern/L=München/O=Beispiel München GmbH/CN=YOURDOMAIN.EXAMPLE"

Wobei:

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

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

YOURDOMAIN.EXAMPLE — die Adresse Ihrer Domain mit dem Webhook. Diese muss mit der Adresse des Webhooks übereinstimmen!!!

Nach der Ausführung dieses Codes erscheinen die Schlüsseldateien im OpenSSL-Ordner (bei mir ist es „C:\Program Files\Apache Software Foundation\Apache2.2\bin“).

Ich habe sie in den conf-Ordner von Apache kopiert.

Wir beginnen mit der Konfiguration von Apache.

Ich habe viele verschiedene Ansätze gesehen. Folgender hat bei mir funktioniert:

In httpd.conf wurden folgende Zeilen hinzugefügt:

Listen 443 

damit Apache den Port 443 'hört'.

Der Block sieht wie folgt aus:

SSLMutex default
SSLSessionCache none

Am Ende wurden die Zeilen hinzugefügt, in denen ich die Pfade 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-Service. Dieser wird die Telegram-Nachrichten empfangen und deren Anfragen bearbeiten.

In meinem Fall wurden folgende Parameter angegeben:

Name: TGBWebhook
Root-URL: webhook
Wiederverwendung von Sitzungen: Nicht verwenden (im automatischen Modus hat es bei mir nicht funktioniert)
Lebensdauer: 20
URL-Vorlagen: eine Vorlage 'Beliebig' mit zwei Methoden: GET und POST wurde erstellt.

Telegram + 1C + Webhooks + Apache + Selbstsigniertes Zertifikat

Telegram + 1C + Webhooks + Apache + Selbstsigniertes Zertifikat

Telegram + 1C + Webhooks + Apache + Selbstsigniertes Zertifikat

Die Methoden-Handler werden standardmäßig erstellt. In den POST-Handler füge ich das Folgende ein, einfach um die Verbindung zu überprüfen:

Funktionsdefinition AnyPOST(Anfrage)

	MessageTestVersenden(""); //chat_id
	Antwort = Neuer HTTPServiceAntwort(200);
	Rückgabe Antwort;
	
EndeFunktion


&AufServer
Prozedur MessageTestVersenden(Chat)
	
		Nachricht = "Testnachricht";
		Token = ""; //Ihr Telegram-Token
		Server = "api.telegram.org";
	    Ressource = "bot" + Token + "/sendMessage?chat_id=" + StrErsetzen(Format(Chat, "CDZ=; CS=; CRG=."), ".", "") + "&text=" + Nachricht;
   		Verbindung  =  Neuer HTTPVerbindung(Server,443,,,,,Neuer SicheresVerbindungOpenSSL());
		Anfrage = Neuer HTTPAnfrage(Ressource);
		Antwort = Verbindung.Bekommen(Anfrage);
	
EndeProzedur

Es bleibt nur noch, die Datenbank zu veröffentlichen und den Webhook zu verknüpfen.

Die Veröffentlichung erfolgt wie immer, es müssen nur die Häkchen bei der Veröffentlichung des HTTP-Services gesetzt werden:

Telegram + 1C + Webhooks + Apache + Selbstsigniertes Zertifikat

Im letzten Schritt werden wir unser 1C mit Telegram verbinden. Ich habe dafür eine einfache HTML-Seite mit folgendem Code verwendet:

<html>
<body>

<form action="https://api.telegram.org/bot<ЗдесьДолженБытьТокен>/setwebhook" method="post" enctype="multipart/form-data">
    Zertifikat zum Hochladen auswählen:
    <input type="file" name="certificate" id="fileToUpload">
	URL: <input type="text" name="url"  value="https://<YOURWEBSITE>/<YOUR_PHP_URL>"><br>
    <input type="submit" value="Zertifikat hochladen" name="submit">
</form>

</body>
</html>

Im Formular wählen Sie einfach den öffentlichen Schlüssel aus und geben den vollständigen Pfad zu unserem HTTP-Service ein. Ich erinnere daran, dass der vollständige Pfad zum Service folgendermaßen aussehen wird:

IhrDomain/NameDatenbank/hs/NameService/v1

Bitte treten Sie nicht mit den Füßen gegen den Code. Einige Dinge sind absichtlich hartcodiert, da dies ausschließlich zu Demonstrationszwecken erstellt wurde.

Dieser Beitrag wurde verfasst, da ich kein funktionierendes Beispiel für die Arbeit mit Webhooks auf der Website finden konnte, außer dem Telegram Bot Builder. Dieser ist jedoch kostenpflichtig und möglicherweise nicht für alle in dieser Form erforderlich.

Im Archiv befindet sich die Installation von Apache 2.2.24 zusammen mit OpenSSL (aus irgendeinem Grund hat die Suche danach viel Zeit in Anspruch genommen), eine HTML-Datei zur Registrierung von Webhooks, die Konfigurationsdatei von Apache sowie eine CF-Konfiguration mit dem HTTP-Dienst und einem Beispiel zum Senden einer Testnachricht. Der Download ist optional, da der gesamte Inhalt im Artikel vorhanden ist.

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster