Telegram + 1C + Webhooks + Apache + Chứng chỉ tự ký

Nhiều dòng đã được viết về sự tích hợp của Telegram và 1C. Nhưng tôi không thấy hướng dẫn đầy đủ về cách cài đặt và định cấu hình webhook ở đâu cả. Tôi sẽ cố gắng viết nó.

Đối với tất cả những điều này chúng ta cần (hoặc sẽ đúng hơn nếu nói những gì tôi đã sử dụng):

  1. Apache 2.2.24
  2. OpenSSL (có trong cài đặt Apache)
  3. 1C (có mô-đun) máy chủ web)
  4. Tên miền riêng
  5. Đã tạo bot trong Telegram (Tôi sẽ không mô tả quá trình tạo ra nó, vì nó khá tầm thường)

Giả sử rằng bạn đã cài đặt tất cả phần mềm.

Vì vậy, hãy bắt đầu bằng việc lấy chứng chỉ. Mở dòng lệnh và thực thi đoạn mã sau:

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"

Trong đó:

YOURPRIVATE.key là khóa riêng của chứng chỉ. Sẽ được sử dụng trong Apache

YOURPUBLIC.pem là khóa chung của chứng chỉ. Sẽ được sử dụng khi đăng ký webhook

YOURDOMAIN.EXAMPLE - địa chỉ miền của bạn bằng webhook. Nó phải khớp với địa chỉ webhook!!!

Sau khi thực thi mã này, các tệp chính sẽ xuất hiện trong thư mục openssl (đối với tôi đó là “C:Program FilesApache Software FoundationApache2.2bin”).

Tôi đã sao chép chúng vào thư mục conf của Apache.

Hãy chuyển sang thiết lập Apache.

Tôi đã thấy nhiều cách khác nhau. Những điều sau đây có hiệu quả với tôi:

Các dòng sau đã được thêm vào httpd.conf:

Listen 443 

để Apache “nghe” cổng 443.

Khối rút gọn về dạng sau:

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

Ở cuối cùng có những dòng bổ sung trong đó tôi chỉ ra đường dẫn đến chứng chỉ:

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

Và bỏ ghi chú dòng:

LoadModule ssl_module modules/mod_ssl.so 

Trong cấu hình, chúng tôi tạo một dịch vụ HTTP. Chính anh ta sẽ là người trả lời bức điện và xử lý các yêu cầu của anh ta.

Trong trường hợp của tôi, các tham số sau được chỉ định:

Tên: TGWebhook
RootURL: webhook
Tái sử dụng phiên: Không được dùng (với chế độ tự động, nó không hoạt động với tôi)
Tuổi thọ: 20
Mẫu URL: đã tạo mẫu “Bất kỳ” bằng hai phương thức: GET và POST

Telegram + 1C + Webhooks + Apache + Chứng chỉ tự ký

Telegram + 1C + Webhooks + Apache + Chứng chỉ tự ký

Telegram + 1C + Webhooks + Apache + Chứng chỉ tự ký

Trình xử lý phương thức được tạo theo mặc định. Tôi sẽ thêm phần sau vào trình xử lý POST, chỉ để kiểm tra kết nối:

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

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


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

Tất cả những gì còn lại là xuất bản cơ sở dữ liệu và đính kèm webhook.

Việc xuất bản được thực hiện như mọi khi, bạn chỉ cần thêm hộp kiểm vào các ấn phẩm dịch vụ HTTP:

Telegram + 1C + Webhooks + Apache + Chứng chỉ tự ký

Bước cuối cùng là liên kết 1C của chúng tôi với Telegram. Để làm điều này, tôi đã sử dụng một trang html đơn giản với đoạn mã sau:

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

Trong biểu mẫu, chỉ cần chọn khóa chung và nhập đường dẫn đầy đủ đến dịch vụ http của chúng tôi. Hãy để tôi nhắc bạn rằng đường dẫn đầy đủ đến dịch vụ sẽ như thế này:

Tên miền của bạn/Tên cơ sở dữ liệu/hs/Tên dịch vụ/v1

Xin vui lòng không đá mã, một số thứ được cố tình mã hóa cứng, bởi vì... tất cả điều này được thực hiện chỉ nhằm mục đích trình diễn.

Ấn phẩm được viết bởi vì Tôi không tìm thấy một ví dụ hoạt động nào về cách làm việc với webhooks trên trang web, ngoại trừ Telegram Bot Constructor. Nhưng nó phải trả phí và có lẽ không phải ai cũng cần nó ở dạng này.

Kho lưu trữ chứa bản cài đặt Apache 2.2.24 cùng với openssl (vì lý do nào đó mà tôi phải mất một thời gian dài mới tìm thấy nó), một tệp html để đăng ký webhook, tệp cấu hình Apache và cấu hình cf với dịch vụ http và một ví dụ gửi một tin nhắn thử nghiệm. Việc tải xuống là không cần thiết vì Tất cả nội dung đều có trong bài viết.

Nguồn: www.habr.com

Mua dịch vụ lưu trữ đáng tin cậy cho các trang web có bảo vệ DDoS, máy chủ VPS VDS 🔥 Mua dịch vụ hosting website đáng tin cậy với bảo vệ DDoS, máy chủ VPS VDS | ProHoster