Telegram + 1C + Webhook + Apache + Certificato autofirmato

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

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

E 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

Telegram + 1C + Webhook + Apache + Certificato autofirmato

Telegram + 1C + Webhook + Apache + Certificato autofirmato

Telegram + 1C + Webhook + Apache + Certificato autofirmato

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

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

Telegram + 1C + Webhook + Apache + Certificato autofirmato

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:

IlTuoDominio/NomeDatabase/hs/NomeServizio/v1

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

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