Sono state scritte molte righe sull'integrazione di Telegram e 1C. Ma non ho mai visto un'istruzione 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) web)
- Un proprio dominio
- Bot creato in Telegram (non descriverò la sua creazione, poiché è piuttosto banale)
Si presume che tutto il software sia installato.
Quindi, iniziamo con l'ottenere il certificato. Apriamo il prompt dei comandi ed eseguiamo il seguente codice:
openssl req -newkey rsa:2048 -sha256 -nodes -keyout YOURPRIVATE.key -x509 -days 365 -out YOURPUBLIC.pem -subj "/C=IT/ST=Lazio/L=Roma/O=Example Roma Company/CN=YOURDOMAIN.EXAMPLE"Dove:
YOURPRIVATE.key — chiave privata del certificato. Sarà utilizzata in Apache
YOURPUBLIC.pem — chiave pubblica del certificato. Sarà utilizzata per la registrazione del webhook
YOURDOMAIN.EXAMPLE — indirizzo del proprio 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.
Passiamo alla configurazione di Apache.
Ho visto molti modi diversi. Il seguente ha funzionato per me:
A httpd.conf sono state aggiunte le seguenti righe:
Listen 443 in modo che Apache "ascolti" la porta 443.
Il blocco <IfModule ssl_module> è stato modificato come segue:
<IfModule ssl_module>
SSLMutex default
SSLSessionCache none
<\/IfModule>Alla fine sono state aggiunte le righe dove indico i percorsi del certificato:
SSLEngine On
SSLCertificateFile conf\/YOURPUBLIC.pem
SSLCertificateKeyFile conf\/YOURPRIVATE.keyE commenta la riga:
LoadModule ssl_module modules\/mod_ssl.so Nella configurazione creiamo un servizio HTTP. Sarà lui a rispondere a Telegram e a gestire le sue richieste.
Nel mio caso sono stati specificati i seguenti parametri:
Nome: TGWebhook
URL radice: webhook
Riutilizzo delle sessioni: Non utilizzare (in modalità automatica non ha funzionato per me)
Tempo di vita: 20
Modelli di URL: è stato creato un modello "Qualsiasi" con due metodi: GET e POST



I gestori dei metodi vengono creati di default. Aggiungerò il seguente codice al gestore POST, giusto per verificare la connessione:
Funzione QualsiasiPOST(Richiesta)
InviaMessaggioDiTest(""); //chat_id
Risposta = Nuovo HTTPServizioRisposta(200);
Ritorna Risposta;
FineFunzione
&InServer
Procedura InviaMessaggioDiTest(Chat)
Messaggio = "Messaggio di test";
Token = ""; //Il tuo token telegram
Server = "api.telegram.org";
Risorsa = "bot" + Token + "/sendMessage?chat_id=" + StrSostituisci(Formata(Chat, "ЧДЦ=; ЧС=; ЧРГ=."), ".", "") + "&text=" + Messaggio;
Connessione = Nuovo HTTPConnessione(Server,443,,,,,Nuovo ConnessioneProtettaOpenSSL());
Richiesta = Nuovo HTTPRichiesta(Risorsa);
Risposta = Connessione.Ottieni(Richiesta);
FineProceduraRimane da pubblicare il database e collegare il webhook.
La pubblicazione avviene come sempre, è necessario solo aggiungere le spunte sulla pubblicazione del servizio HTTP:

L'ultimo passo sarà collegare il nostro 1C a Telegram. Ho utilizzato per questo 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>Nella forma selezioniamo semplicemente la chiave pubblica e inseriamo il percorso completo al nostro servizio http. Ricordo che il percorso completo al servizio apparirà come segue:
Per favore, non criticare il codice, alcune cose sono state deliberate in hardcode, dato che è stato tutto fatto esclusivamente a scopo dimostrativo.
La pubblicazione è stata scritta, dato che non ho trovato alcun esempio funzionante per l'uso dei webhook sul sito, eccetto il Costruttore di bot Telegram. Ma è a pagamento e, forse, non è necessaria per tutti in questo modo.
L'archivio contiene l'installazione di Apache 2.2.24 insieme ad Openssl (per qualche motivo la ricerca di questo mi ha preso molto tempo), il file html per la registrazione del webhook, il file di configurazione di Apache e la configurazione cf con il servizio http e un esempio di invio di un messaggio di test. Non è necessario scaricarlo, poiché tutto il contenuto è nell'articolo.
Fonte: habr.com
