Telegram + 1C + Webhook + Apache + Certificato autofirmato

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

  1. Apache 2.2.24
  2. OpenSSL (incluso nell'installazione di Apache)
  3. 1C (con i moduli) web)
  4. Un proprio dominio
  5. 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.key

E 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

Telegram + 1C + Webhook + Apache + Certificato autofirmato

Telegram + 1C + Webhook + Apache + Certificato autofirmato

Telegram + 1C + Webhook + Apache + Certificato autofirmato

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);
	
FineProcedura

Rimane da pubblicare il database e collegare il webhook.

La pubblicazione avviene come sempre, è necessario solo aggiungere le spunte sulla pubblicazione del servizio HTTP:

Telegram + 1C + Webhook + Apache + Certificato autofirmato

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:

Tuodominio/NomeDatabase/hs/NomeServizio/v1

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

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster