Télégramme + 1C + Webhooks + Apache + Certificat auto-signé

De nombreuses lignes sont écrites sur l'intégration de Telegram et 1C. Mais nulle part je n'ai vu les instructions complètes pour l'installation et la configuration des webhooks. Je vais essayer de l'écrire.

Pour tout cela, nous avons besoin (ou il sera plus correct de dire ce que j'ai utilisé):

  1. Apache 2.2.24
  2. OpenSSL (inclus avec l'installation d'Apache)
  3. 1C (avec modules de serveur Web)
  4. Propre domaine
  5. Bot créé dans Telegram (je ne décrirai pas sa création, car c'est assez banal)

Il est supposé que tous les logiciels que vous avez installés.

Commençons donc par obtenir un certificat. Ouvrez la ligne de commande et exécutez le code suivant:

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"

Où:

YOURPRIVATE.key est la clé privée du certificat. Il sera utilisé dans l'

apache YOURPUBLIC.pem - la clé publique du certificat. Sera utilisé lors de l'enregistrement d'un webhook

YOURDOMAIN.EXAMPLE - l'adresse de votre domaine avec un webhook. Il doit toujours correspondre à l'adresse du webhook !!!

Après avoir exécuté ce code, les fichiers clés apparaîtront dans le dossier openssl (j'ai ce "C: \ Program Files \ Apache Software Foundation \ Apache2.2 \ bin").

Je les ai copiés dans le dossier conf Apache.

Passons à la configuration d'Apache.

J'ai vu de nombreuses façons différentes. Les éléments suivants ont fonctionné pour moi:

les lignes suivantes ont été ajoutées à httpd.conf:

Listen 443 

afin que l'Apache «écoute» le port 443.

Le bloc <IfModule ssl_module> a la forme suivante:

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

À la toute fin, des lignes sont ajoutées où j'indique le chemin vers le certificat:

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

Et décommentez la ligne:

LoadModule ssl_module modules/mod_ssl.so 

Dans la configuration, nous créons un service HTTP. Ce sera lui qui répondra au télégramme et traitera ses appels.

Dans mon cas, les paramètres suivants sont spécifiés:

Nom: TGWebhuk RootURL
:
réutilisation de session webhook : Ne pas utiliser (cela ne fonctionnait pas avec le mode automatique)
Durée de vie: 20
modèles d'URL: Tout modèle a été créé avec deux méthodes: les

image

image

image

gestionnaires de méthodes GET et POST sont créés défaut. Je vais ajouter ce qui suit au gestionnaire POST, juste pour vérifier la connexion:

 POST()

	(""); //chat_id
	 =  HTTP(200);
	 ;
	



&
 ()
	
		 = " ";
		 = "";//  telegram
		 = "api.telegram.org";
	     = "bot" +  + "/sendMessage?chat_id=" + ((, "=; =; =."), ".", "") + "&text=" + ;
   		  =   HTTP(,443,,,,, OpenSSL());
		 =  HTTP();
		 = .();
	

Il reste à publier la base de données et à joindre le webhook.

La publication se fait comme toujours, il vous suffit d'ajouter des coches à la publication du service HTTP:

image

Comme dernière étape, nous attacherons notre 1C au télégramme. Pour cela, j'ai utilisé une simple page html avec le code suivant:

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

Dans le formulaire, sélectionnez simplement la clé publique et entrez le chemin d'accès complet à notre service http. Je vous rappelle que le chemin complet vers le service ressemblera à ceci:

YourDomain / BaseName / hs / ServiceName / v1

Veuillez ne pas lancer le code, certaines choses sont intentionnellement effectuées par hardcode, car tout cela a été fait uniquement à des fins de démonstration.

La publication a été écrite parce que Je n'ai pas trouvé un seul exemple de travail sur l'utilisation de webhooks sur le site, à l'exception du constructeur de bots Telegram. Mais il est payé et, peut-être, tout le monde n'en a pas besoin sous cette forme.

L'archive contient l'installation d'Apache 2.2.24 avec Openssl (pour une raison quelconque, il m'a fallu beaucoup de temps pour le trouver), un fichier html pour enregistrer un hook Web, un fichier de configuration Apache et une configuration cf avec un service http et un exemple d'envoi d'un message de test. Le téléchargement est facultatif, car tout le contenu est dans l'article.

All Articles