Telegram + 1C + Webhooks + Apache + شهادة موقعة ذاتيا

تتم كتابة العديد من الأسطر حول دمج Telegram و 1 C. ولكن لم أر في أي مكان الإرشادات الكاملة لتثبيت وتكوين webhooks. سأحاول كتابتها.

لكل هذا نحتاجه (أو سيكون من الأصح أن نقول ما استخدمته):

  1. أباتشي 2.2.24
  2. OpenSSL (مرفق مع تثبيت Apache)
  3. 1C (مع وحدات خادم الويب)
  4. المجال الخاص
  5. روبوت تم إنشاؤه في Telegram (لن أصف إنشاءه ، لأنه تافه للغاية)

من المفترض أن جميع البرامج التي قمت بتثبيتها.

لذا ، لنبدأ بالحصول على شهادة. افتح سطر الأوامر وقم بتنفيذ التعليمات البرمجية التالية:

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"

حيث:

YOURPRIVATE.key هو المفتاح الخاص للشهادة. سيتم استخدامه في

apache YOURPUBLIC.pem - المفتاح العام للشهادة. سيتم استخدامه عند تسجيل الرد

التلقائي على الويب YOURDOMAIN.EXAMPLE - عنوان نطاقك باستخدام الرد الإلكتروني على الويب. يجب أن يتطابق مع عنوان webhook !!!

بعد تنفيذ هذا الرمز ، ستظهر ملفات المفاتيح في مجلد openssl (لديّ "C: \ Program Files \ Apache Software Foundation \ Apache2.2 \ bin").

قمت بنسخها إلى مجلد أباتشي كونف.

دعنا ننتقل إلى تكوين أباتشي.

لقد رأيت العديد من الطرق المختلفة. التالي عملت بالنسبة لي:

تمت إضافة الأسطر التالية إلى httpd.conf:

Listen 443 

لكي يستمع أباتشي للمنفذ 443.

تحتوي كتلة <IfModule ssl_module> على النموذج التالي:

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

في النهاية ، تتم إضافة الأسطر حيث أشير إلى مسار الشهادة:

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

وتفكيك الخط:

LoadModule ssl_module modules/mod_ssl.so 

في التكوين نقوم بإنشاء خدمة HTTP. سيكون هو الذي سيجيب على البرقية ويعالج طلبات الاستئناف.

في حالتي ، يتم تحديد المعلمات التالية:

الاسم: TGWebhuk RootURL
: webhook
إعادة استخدام الجلسة: لا تستخدم (لم أعمل مع الوضع التلقائي)
مدى الحياة: 20
أنماط عنوان URL: تم إنشاء أي قالب بطريقتين:

صورة

صورة

صورة

معالجات GET وطريقة POST إفتراضي. سأضيف ما يلي إلى معالج POST ، فقط للتحقق من الاتصال:

 POST()

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



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

يبقى نشر قاعدة البيانات وإرفاق webhook.

يتم النشر كما هو الحال دائمًا ، ما عليك سوى إضافة علامات اختيار إلى نشر خدمة HTTP:

صورة

كخطوة أخيرة ، سنقوم بإرفاق 1C إلى البرقية. لهذا ، استخدمت صفحة html بسيطة تحتوي على الكود التالي:

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

في النموذج ، ما عليك سوى تحديد المفتاح العام وإدخال المسار الكامل لخدمة http الخاصة بنا. أذكرك أن المسار الكامل للخدمة سيبدو كما يلي:

YourDomain / BaseName / hs / ServiceName / v1

الرجاء عدم ركلة الكود ، فبعض الأشياء يتم عمدا بواسطة كود ثابت ، لأن كل هذا تم لأغراض التوضيح فقط.

تم كتابة المنشور بسبب لم أجد مثالاً عمليًا واحدًا للعمل مع الخطافات على الموقع ، باستثناء مُنشئ Telegram bot. لكنها مدفوعة ، وربما لا يحتاجها الجميع في هذا الشكل.

يحتوي الأرشيف على تثبيت Apache 2.2.24 مع Openssl (لسبب ما ، استغرق الأمر مني وقتًا طويلاً للعثور عليه) ، ملف html لتسجيل ربط الويب ، ملف تكوين Apache وتكوين cf مع خدمة http ومثال على إرسال رسالة اختبار. إنه اختياري للتنزيل لأنه كل المحتوى موجود في المقالة.

All Articles