Sono state scritte molte righe sull'integrazione di Telegram e 1C. Ma non ho trovato una guida completa per l'installazione e la configurazione dei webhook. Proverò a scriverla.
Per tutto questo avremo bisogno (o sarebbe più corretto dire che ho utilizzato):
- Apache 2.2.24
- OpenSSL (incluso nell'installazione di Apache)
- 1C (con i moduli) il server web.)
- Il tuo dominio
- Un bot creato in Telegram (non descriverò la sua creazione, poiché è abbastanza triviale)
Si presume che tutto il software sia già installato.
Iniziamo ad ottenere il certificato. Apriamo il prompt dei comandi e eseguiamo il seguente codice:
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"Dove:
YOURPRIVATE.key — la chiave privata del certificato. Sarà utilizzata in Apache.
YOURPUBLIC.pem — la chiave pubblica del certificato. Sarà utilizzata per la registrazione del webhook.
YOURDOMAIN.EXAMPLE — l'indirizzo del tuo dominio con il webhook. Deve corrispondere all'indirizzo del webhook!!!
Dopo aver eseguito questo codice, nella cartella openssl (nel mio caso è «C:Program FilesApache Software FoundationApache2.2bin») appariranno i file delle chiavi.
Li ho copiati nella cartella conf di Apache.
Procediamo con la configurazione di Apache.
Ho visto molti modi diversi. Quello che ha funzionato per me è il seguente:
Sono state aggiunte le seguenti righe a httpd.conf:
Listen 443 affinché Apache «ascolti» la porta 443.
Il blocco <IfModule ssl_module> è stato modificato nel seguente modo:
<IfModule ssl_module>
SSLMutex default
SSLSessionCache none
</IfModule>Alla fine sono state aggiunte le righe che indicano i percorsi ai certificati:
SSLEngine On
SSLCertificateFile conf/YOURPUBLIC.pem
SSLCertificateKeyFile conf/YOURPRIVATE.keyE decommentare la riga:
LoadModule ssl_module modules/mod_ssl.so Nella configurazione creiamo un servizio HTTP. Sarà lui a rispondere al telegramma e a gestirne le richieste.
Nel mio caso sono stati specificati i seguenti parametri:
Nome: TGBWebhook
URL radice: webhook
Riutilizzo delle sessioni: Non usare (con la modalità automatica non ha funzionato)
Tempo di vita: 20
Modelli URL: è stato creato un modello «Qualsiasi» con due metodi: GET e POST



I gestori dei metodi vengono creati per impostazione predefinita. Nel gestore POST aggiungerò il seguente codice, solo per verificare la connessione:
Funzione QualsiasiPOST(Richiesta)
InviaMessaggioDiTest(""); //chat_id
Risposta = Nuovo HTTPServizioRisposta(200);
Ritorna Risposta;
FineFunzione
&SulServer
Procedura InviaMessaggioDiTest(Chat)
Messaggio = "Messaggio di test";
Token = "";//Il tuo token telegram
Server = "api.telegram.org";
Risorsa = "bot" + Token + "/sendMessage?chat_id=" + StrSostituisci(Formato(Chat, "CC=; CS=; CRG=."), ".", "") + "&text=" + Messaggio;
Connessione = Nuovo HTTPConnessione(Server,443,,,,,Nuova ConnessioneProtettaOpenSSL());
Richiesta = Nuovo HTTPRichiesta(Risorsa);
Risposta = Connessione.Ottenere(Richiesta);
FineProceduraResta solo da pubblicare il database e collegare il webhook.
La pubblicazione avviene come sempre, è necessario solo aggiungere i segni di spunta sulle pubblicazioni del servizio HTTP:

Ultimo passaggio, collegheremo il nostro 1C a Telegram. Per questo ho utilizzato una semplice pagina html con il seguente codice:
<html>
<body>
<form action="https://api.telegram.org/bot<ЗдесьДолженБытьТокен>/setwebhook" method="post" enctype="multipart/form-data">
Seleziona il certificato da caricare:
<input type="file" name="certificate" id="fileToUpload">
URL: <input type="text" name="url" value="https://<YOURWEBSITE>/<YOUR_PHP_URL>"><br>
<input type="submit" value="Carica certificato" name="submit">
</form>
</body>
</html>Nel modulo selezioniamo semplicemente la chiave pubblica e inseriamo il percorso completo al nostro servizio HTTP. Ricordo che il percorso completo al servizio sarà così composto:
Per favore, non calciate il codice; alcune cose sono state fatte appositamente in hardcoding, poiché tutto ciò è stato realizzato esclusivamente a scopi dimostrativi.
Questo articolo è stato scritto perché non ho trovato esempi funzionanti sull'uso dei webhook sul sito, eccetto il costruttore di bot di Telegram. Ma è a pagamento e potrebbe non essere necessario per tutti in questa forma.
Nell'archive è inclusa l'installazione di Apache 2.2.24 insieme a OpenSSL (per qualche motivo, la ricerca di quest'ultimo mi ha preso molto tempo), un file HTML per registrare il webhook, un file di configurazione di Apache e una configurazione CF con il servizio HTTP e un esempio di invio di un messaggio di test. Non è obbligatorio scaricare, poiché tutto il contenuto è presente nell'articolo.
Fonte: habr.com
