Es wurden viele Zeilen über die Integration von Telegram und 1C geschrieben. Aber ich habe nirgends eine vollständige Anleitung zur Installation und Konfiguration von Webhooks gesehen. Ich werde versuchen, sie zu schreiben.
Für all dies benötigen wir (oder genauer gesagt, was ich verwendet habe):
- Apache 2.2.24
- OpenSSL (in der Apache-Installation enthalten)
- 1C (mit Modulen Webserver.)
- Eigene Domain
- Erstellter Bot in Telegram (ich werde nicht auf die Erstellung eingehen, da diese recht trivial ist)
Es wird davon ausgegangen, dass die gesamte Software bei Ihnen installiert ist.
Also, beginnen wir mit dem Erhalt des Zertifikats. Öffnen Sie die Eingabeaufforderung 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 — 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. Muss mit der Adresse des Webhooks übereinstimmen!!!
Nach der Ausführung dieses Codes werden im Ordner openssl (bei mir ist das „C:Program FilesApache Software FoundationApache2.2bin“) Schlüsseldateien erstellt.
Ich habe sie in den conf-Ordner von Apache kopiert.
Gehen wir zur Konfiguration von Apache über.
Ich habe viele verschiedene Vorgehensweisen gesehen. Bei mir funktionierte folgende:
Folgende Zeilen wurden zur httpd.conf hinzugefügt:
Listen 443 damit Apache den Port 443 "lauscht".
Der Block <IfModule ssl_module> wurde wie folgt angepasst:
<IfModule ssl_module>
SSLMutex default
SSLSessionCache none
<\/IfModule>Am Ende wurden die Zeilen hinzugefügt, in denen ich die Pfade zum Zertifikat angebe:
SSLEngine On
SSLCertificateFile conf/YOURPUBLIC.pem
SSLCertificateKeyFile conf/YOURPRIVATE.keyUnd kommentieren Sie die Zeile aus:
LoadModule ssl_module modules/mod_ssl.so In der Konfiguration erstellen wir einen HTTP-Dienst. Er wird auf Telegram reagieren und dessen Anfragen bearbeiten.
In meinem Fall sind folgende Parameter angegeben:
Name: TGWebhook
Root-URL: webhook
Sitzungswiederverwendung: Nicht verwenden (Mit dem automatischen Modus hat es bei mir nicht funktioniert)
Lebensdauer: 20
URL-Vorlagen: Eine Vorlage „Beliebig“ mit zwei Methoden: GET und POST wurde erstellt



Methoden-Handler werden standardmäßig erstellt. Im POST-Handler füge ich Folgendes hinzu, nur um die Verbindung zu überprüfen:
Funktion AnyPOST(Anfrage)
SendeTestnachricht(""); //chat_id
Antwort = Neuer HTTPServiceAntwort(200);
Rückgabe Antwort;
EndeFunktion
&AufServer
Prozedur SendeTestnachricht(Chat)
Nachricht = "Testnachricht";
Token = ""; //Ihr Telegram-Token
Server = "api.telegram.org";
Ressource = "bot" + Token + "\/sendMessage?chat_id=" + StrErsetzen(Format(Chat, "ChD=; ChS=; ChR=."), ".", "") + "&text=" + Nachricht;
Verbindung = Neuer HTTPVerbindung(Server,443,,,,,Neuer SicheresVerbindungOpenSSL());
Anfrage = Neuer HTTPAnfrage(Ressource);
Antwort = Verbindung.Bekommen(Anfrage);
EndeProzedurEs bleibt nur noch, die Datenbank zu veröffentlichen und den Webhook zu verknüpfen.
Die Veröffentlichung erfolgt wie gewohnt, es müssen nur Häkchen für die Veröffentlichungen des HTTP-Dienstes hinzugefügt werden:

Im letzten Schritt verbinden wir unser 1C mit Telegram. 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 zur Upload 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 wir einfach den öffentlichen Schlüssel aus und geben den vollständigen Pfad zu unserem HTTP-Dienst ein. Ich erinnere daran, dass der vollständige Pfad zum Dienst wie folgt aussehen wird:
Bitte nicht mit den Füßen gegen den Code treten, einige Dinge wurden absichtlich hartcodiert, da dies alles ausschließlich zu Demonstrationszwecken erstellt wurde.
Die Veröffentlichung wurde erstellt, da ich kein funktionierendes Beispiel für die Webhook-Integration auf der Website gefunden habe, außer beim Telegram-Bot-Constructor. Aber dieser ist kostenpflichtig und vielleicht nicht jeder benötigt ihn in dieser Form.
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 des Webhooks, eine Konfigurationsdatei für Apache und eine CF-Konfiguration mit dem HTTP-Dienst und einem Beispiel zum Senden einer Testnachricht. Der Download ist nicht erforderlich, da der gesamte Inhalt im Artikel vorhanden ist.
Quelle: habr.com
