Telegram + 1C + Webhook + Apache + Certificato autofirmato

Sono state scritte molte righe sull'integrazione di Telegram e 1C. Ma da nessuna parte ho visto le istruzioni complete per l'installazione e la configurazione dei webhook. Proverò a scriverlo.

Per tutto questo occorrono (o sarebbe più corretto dire quello utilizzato da me):

  1. Apache 2.2.24
  2. OpenSSL (incluso nell'installazione di Apache)
  3. 1C (con moduli) server web)
  4. Il tuo dominio
  5. Bot creato in Telegram (non descriverò la sua creazione, perché è abbastanza banale)

Si presuppone che tu abbia tutto il software installato.

Quindi, iniziamo ottenendo un certificato. Apri la riga di comando ed esegui 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. Verrà utilizzato in Apache

YOURPUBLIC.pem è la chiave pubblica del certificato. Verrà utilizzato durante la registrazione di un webhook

YOURDOMAIN.EXAMPLE - l'indirizzo del tuo dominio con un webhook. Deve corrispondere all'indirizzo del webhook!!!

Dopo aver eseguito questo codice, i file chiave appariranno nella cartella openssl (per me è "C:Program FilesApache Software FoundationApache2.2bin").

Li ho copiati nella cartella conf di Apache.

Passiamo alla configurazione di Apache.

Ho visto molti modi diversi. Quanto segue ha funzionato per me:

Le seguenti righe sono state aggiunte a httpd.conf:

Listen 443 

affinché Apache possa "ascoltare" la porta 443.

Bloccare ridotto alla seguente forma:

<IfModule ssl_module>
SSLMutex default
SSLSessionCache none
</IfModule>

Alla fine vengono aggiunte delle righe in cui indico il percorso del certificato:

SSLEngine On
SSLCertificateFile conf/YOURPUBLIC.pem
SSLCertificateKeyFile conf/YOURPRIVATE.key

E decommenta la riga:

LoadModule ssl_module modules/mod_ssl.so 

Nella configurazione creiamo un servizio HTTP. È lui che risponderà al telegramma ed elaborerà le sue richieste.

Nel mio caso vengono specificati i seguenti parametri:

Nome: TGWebhook
URL radice: webhook
Riutilizzo delle sessioni: Non usare (con la modalità automatica non ha funzionato per me)
Durata della vita: 20
Modelli URL: 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. Aggiungerò quanto segue al gestore POST, solo per verificare la connessione:

Функция ЛюбойPOST(Запрос)

	ВыслатьТестовоеСообщение(""); //chat_id
	Ответ = Новый HTTPСервисОтвет(200);
	Возврат Ответ;
	
КонецФункции


&НаСервере
Процедура ВыслатьТестовоеСообщение(Чат)
	
		Сообщение = "Тестовое сообщение";
		Токен = "";//Ваш токен telegram
		Сервер = "api.telegram.org";
	    Ресурс = "bot" + Токен + "/sendMessage?chat_id=" + СтрЗаменить(Формат(Чат, "ЧДЦ=; ЧС=; ЧРГ=."), ".", "") + "&text=" + Сообщение;
   		Соединение  =  Новый HTTPСоединение(Сервер,443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
		Запрос = Новый HTTPЗапрос(Ресурс);
		Ответ = Соединение.Получить(Запрос);
	
КонецПроцедуры

Non resta che pubblicare il database e allegare un webhook.

La pubblicazione avviene come sempre, devi solo aggiungere le caselle di controllo alle pubblicazioni del servizio HTTP:

Telegram + 1C + Webhook + Apache + Certificato autofirmato

L'ultimo passaggio è collegare 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">
    Select Certificate to upload:
    <input type="file" name="certificate" id="fileToUpload">
	URL: <input type="text" name="url"  value="https://<YOURWEBSITE>/<YOUR_PHP_URL>"><br>
    <input type="submit" value="Upload Certificate" name="submit">
</form>

</body>
</html>

Nel modulo è sufficiente selezionare la chiave pubblica e inserire il percorso completo al nostro servizio http. Lascia che ti ricordi che il percorso completo del servizio sarà simile a questo:

TuoDominio/NomeDatabase/hs/NomeServizio/v1

Per favore, non calciare il codice, alcune cose sono deliberatamente codificate, perché... tutto questo è stato fatto esclusivamente a scopo dimostrativo.

La pubblicazione è stata scritta perché Non ho trovato un solo esempio funzionante di lavoro con i webhook sul sito, ad eccezione del costruttore del bot di Telegram. Ma è a pagamento e forse non tutti ne hanno bisogno in questa forma.

L'archivio contiene l'installazione di Apache 2.2.24 insieme a Openssl (per qualche motivo mi ci è voluto molto tempo per trovarlo), un file html per la registrazione di un webhook, un file di configurazione di Apache e una configurazione cf con un servizio http e un esempio di inviare un messaggio di prova. Il download non è richiesto, perché Tutto il contenuto è nell'articolo.

Fonte: habr.com

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