De nombreux écrits ont été consacrés à l'intégration de Telegram et 1C. Mais je n'ai trouvé nulle part d'instructions complètes pour l'installation et la configuration des webhooks. Je vais essayer de l'écrire.
Pour tout cela, nous aurons besoin de (ou il serait plus juste de dire que j'ai utilisé) :
- Apache 2.2.24
- OpenSSL (inclus dans l'installation d'Apache)
- 1C (avec les modules) serveur web)
- Votre propre domaine
- Un bot créé dans Telegram (je ne vais pas décrire sa création, car c'est assez trivial)
Il est supposé que tout le logiciel est déjà installé.
Alors, commençons par obtenir le certificat. Ouvrons l'invite de commande et exécutons le code suivant :
openssl req -newkey rsa:2048 -sha256 -nodes -keyout YOURPRIVATE.key -x509 -days 365 -out YOURPUBLIC.pem -subj "/C=FR/ST=New York/L=Brooklyn/O=Exemple Brooklyn Company/CN=YOURDOMAIN.EXAMPLE"Où :
YOURPRIVATE.key — clé privée du certificat. Sera utilisée dans Apache
YOURPUBLIC.pem — clé publique du certificat. Sera utilisée lors de l'enregistrement du webhook
YOURDOMAIN.EXAMPLE — adresse de votre domaine avec le webhook. Doit correspondre à l'adresse du webhook !!!
Après l'exécution de ce code, des fichiers de clés apparaîtront dans le dossier openssl (pour moi, c'est «C:Program FilesApache Software FoundationApache2.2bin»).
Je les ai copiés dans le dossier conf d'Apache.
Passons à la configuration d'Apache.
J'ai vu de nombreuses méthodes différentes. La suivante a fonctionné pour moi :
Les lignes suivantes ont été ajoutées à httpd.conf :
Listen 443 pour que Apache « écoute » le port 443.
Le bloc a été modifié comme suit :
SSLMutex default
SSLSessionCache noneÀ la fin, les lignes ont été ajoutées, où je spécifie les chemins vers le certificat :
SSLEngine On
SSLCertificateFile conf/YOURPUBLIC.pem
SSLCertificateKeyFile conf/YOURPRIVATE.keyEt décommentez la ligne :
LoadModule ssl_module modules/mod_ssl.so Dans la configuration, nous créons un service HTTP. C'est lui qui répondra à Telegram et traitera ses requêtes.
Dans mon cas, les paramètres suivants sont spécifiés :
Nom : TGWebhook
URL racine : webhook
Réutilisation des sessions : Ne pas utiliser (avec le mode automatique, cela n'a pas fonctionné pour moi)
Durée de vie : 20
Modèles d'URL : un modèle « N'importe lequel » a été créé avec deux méthodes : GET et POST



Les gestionnaires de méthodes se créent par défaut. Dans le gestionnaire POST, j'ajouterai ce qui suit, simplement pour vérifier la connexion :
Fonction AnyPOST(Request)
EnvoyerMessageTest(""); //chat_id
Réponse = Nouveau HTTPServiceRéponse(200);
Retourner Réponse;
FinFonction
&SurServeur
Procédure EnvoyerMessageTest(Chat)
Message = "Message test";
Token = ""; //Votre token telegram
Serveur = "api.telegram.org";
Ressource = "bot" + Token + "\/sendMessage?chat_id=" + StrRemplacer(Format(Chat, "ChD=C; ChS=C; ChR=."), ".", "") + "&text=" + Message;
Connexion = Nouveau HTTPConnexion(Serveur,443,,,,,Nouveau ConnexionSécuriséeOpenSSL());
Demande = Nouveau HTTPDemande(Ressource);
Réponse = Connexion.Obtenir(Demande);
FinProcédureIl ne reste plus qu’à publier la base et lier le webhook.
La publication se fait comme d'habitude, il suffit juste d'ajouter les cases à cocher pour publier le service HTTP :

La dernière étape consistera à relier notre 1C à Telegram. J'ai utilisé pour cela une simple page html avec le code suivant :
<html>
<body>
<form action="https://api.telegram.org/bot<ЗдесьДолженБытьТокен>/setwebhook" method="post" enctype="multipart/form-data">
Sélectionnez le certificat à télécharger :
<input type="file" name="certificate" id="fileToUpload">
URL : <input type="text" name="url" value="https://<YOURWEBSITE>/<YOUR_PHP_URL>"><br>
<input type="submit" value="Télécharger le certificat" name="submit">
</form>
</body>
</html>Dans le formulaire, il suffit de choisir la clé publique et d'entrer le chemin complet vers notre service http. Je rappelle que le chemin complet vers le service sera comme suit :
Je vous demande de ne pas critiquer le code, certaines choses ont été intentionnellement faites en hardcodé, car tout cela a été réalisé uniquement à des fins de démonstration.
La publication a été écrite, car je n'ai trouvé aucun exemple opérationnel sur le site concernant les webhooks, à part le Constructeur de Bots Telegram. Mais il est payant et peut ne pas convenir à tout le monde dans cette forme.
L'archive contient l'installation d'Apache 2.2.24 avec Openssl (pour une raison que je ne comprends pas, cela a pris beaucoup de temps), un fichier html pour l'enregistrement du webhook, un fichier de configuration Apache et une configuration cf avec le service http et un exemple d'envoi d'un message test. Le téléchargement n'est pas obligatoire, car tout le contenu se trouve dans l'article.
Source : habr.com
