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):
- Apache 2.2.24
- OpenSSL (incluso nell'installazione di Apache)
- 1C (con moduli) server web)
- Il tuo dominio
- 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.keyE 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



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:

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