Telegram + 1C + Webhooks + Apache + Sertifikat yang ditandatangani sendiri

Banyak baris yang ditulis tentang integrasi Telegram dan 1C. Tapi tidak ada tempat saya melihat instruksi lengkap untuk menginstal dan mengkonfigurasi webhooks. Saya akan mencoba menulisnya.

Untuk semua ini kita perlu (atau akan lebih tepat untuk mengatakan apa yang digunakan oleh saya):

  1. Apache 2.2.24
  2. OpenSSL (disertakan dengan instalasi Apache)
  3. 1C (dengan modul server web)
  4. Domain sendiri
  5. Bot buatan di Telegram (saya tidak akan menjelaskan pembuatannya, karena cukup sepele)

Diasumsikan bahwa semua perangkat lunak yang Anda instal.

Jadi, mari kita mulai dengan mendapatkan sertifikat. Buka baris perintah dan jalankan kode berikut:

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"

Di mana:

YOURPRIVATE.key adalah kunci pribadi sertifikat. Ini akan digunakan di

apache YOURPUBLIC.pem - kunci publik sertifikat. Akan digunakan saat mendaftarkan webhook

YOURDOMAIN. CONTOH - alamat domain Anda dengan webhook. Itu masih harus cocok dengan alamat webhook !!!

Setelah mengeksekusi kode ini, file-file utama akan muncul di folder openssl (saya punya "C: \ Program Files \ Apache Software Foundation \ Apache2.2 \ bin").

Saya menyalinnya ke folder conf Apache.

Mari beralih ke mengkonfigurasi Apache.

Saya telah melihat banyak cara berbeda. Berikut ini berfungsi untuk saya:

Baris berikut ditambahkan ke httpd.conf:

Listen 443 

sehingga Apache "mendengarkan" ke port 443.

Blok <IfModule ssl_module> memiliki bentuk berikut:

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

Di bagian paling akhir, baris ditambahkan di mana saya menunjukkan jalur ke sertifikat:

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

Dan batalkan komentar pada baris:

LoadModule ssl_module modules/mod_ssl.so 

Dalam konfigurasi kami membuat layanan HTTP. Dialah yang akan menjawab telegram dan memproses bandingnya.

Dalam kasus saya, parameter berikut ditentukan:

Nama: TGWebhuk RootURL
: webhook
Penggunaan kembali sesi: Jangan gunakan (Saya tidak bekerja dengan mode otomatis)
Seumur Hidup: 20
pola URL: Template apa pun dibuat dengan dua metode: GET dan POST

gambar

gambar

gambar

Method handler dibuat standar. Saya akan menambahkan yang berikut ini ke POST handler, hanya untuk memeriksa koneksi:

 POST()

	(""); //chat_id
	 =  HTTP(200);
	 ;
	



&
 ()
	
		 = " ";
		 = "";//  telegram
		 = "api.telegram.org";
	     = "bot" +  + "/sendMessage?chat_id=" + ((, "=; =; =."), ".", "") + "&text=" + ;
   		  =   HTTP(,443,,,,, OpenSSL());
		 =  HTTP();
		 = .();
	

Tetap mempublikasikan database dan melampirkan webhook.

Publikasi dilakukan seperti biasa, Anda hanya perlu menambahkan tanda centang pada publikasi layanan HTTP:

gambar

Sebagai langkah terakhir, kami akan melampirkan 1C kami ke telegram. Untuk ini, saya menggunakan halaman html sederhana dengan kode berikut:

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

Dalam formulir, cukup pilih kunci publik dan masukkan path lengkap ke layanan http kami. Saya mengingatkan Anda bahwa path lengkap ke layanan akan terlihat seperti ini:

YourDomain / BaseName / hs / ServiceName / v1

Tolong jangan menendang kode, beberapa hal sengaja dilakukan oleh hardcode, karena semua ini dilakukan semata-mata untuk tujuan demonstrasi.

Publikasi ini ditulis karena Saya belum menemukan satu contoh pun bekerja pada bekerja dengan webhooks di situs, kecuali untuk konstruktor bot Telegram. Tetapi dibayar dan, mungkin, tidak semua orang membutuhkannya dalam bentuk ini.

Arsip berisi instalasi Apache 2.2.24 bersama dengan openssl (untuk beberapa alasan, saya butuh waktu lama untuk menemukannya), file html untuk mendaftarkan hook web, file konfigurasi Apache dan konfigurasi cf dengan layanan http dan contoh pengiriman pesan pengujian. Ini opsional untuk diunduh, karena semua konten ada di artikel.

All Articles