محول الوظائف لإرسال الرسائل باللغة الروسية إلى Telegram من Mikrotik RouterOS

يعد Messenger Telegram مناسبًا للغاية للإعلام عن تشغيل معدات تكنولوجيا المعلومات ، والتي يستخدمها مسؤولو النظام بشكل نشط. يدعم WhatsApp و Viber واجهات برمجة التطبيقات ، لكن ليس لديهم تقنية مدمجة لإنشاء برامج الروبوت الخاصة بهم.



لا تسمح RouterOS لشركة Mikrotik المعروفة بإرسال رسائل باللغة الروسية إلى Telegram باستخدام الوسائل العادية. يمكن عرض الأحرف الروسية بشكل مناسب في الرسائل إذا تم إرسالها بترميز UTF-8. حسنًا ، الرموز معروفة ، لماذا لا تكتب محولًا؟



لتبسيط المهمة ، لم أستخدم خوارزميات التحويل ، لكنني أنشأت مصفوفة مفاتيح تحتوي على أحرف روسية نفسها في شكل مفاتيح في تخطيطات سلسلة وحروف كبيرة ، وفي القيم المقابلة - رموز هذه الأحرف في UTF-8.



قد تكون مجموعة البيانات هذه مفيدة لمهام أخرى:



مجموعة رئيسية من الأحرف الأبجدية الروسية وقيم رموزها في UTF8
#  table of the codes of Russian letters UTF8
:local rsimv [:toarray {""="D090"; ""="D091"; ""="D092"; ""="D093"; ""="D094"; ""="D095"; ""="D096"; ""="D097"; ""="D098"; ""="D099"; ""="D09A"; ""="D09B"; ""="D09C"; ""="D09D"; ""="D09E"; ""="D09F"; ""="D0A0"; ""="D0A1"; ""="D0A2"; ""="D0A3"; ""="D0A4"; ""="D0A5"; ""="D0A6"; ""="D0A7"; ""="D0A8"; ""="D0A9"; ""="D0AA"; ""="D0AB"; ""="D0AC"; ""="D0AD"; ""="D0AE"; ""="D0AF"; ""="D0B0"; ""="D0B1"; ""="D0B2"; ""="D0B3"; ""="D0B4"; ""="D0B5"; ""="D0B6"; ""="D0B7"; ""="D0B8"; ""="D0B9"; ""="D0BA"; ""="D0BB"; ""="D0BC"; ""="D0BD"; ""="D0BE"; ""="D0BF"; ""="D180"; ""="D181"; ""="D182"; ""="D183"; ""="D184"; ""="D185"; ""="D186"; ""="D187"; ""="D188"; ""="D189"; ""="D18A"; ""="D18B"; ""="D18C"; ""="D18D"; ""="D18E"; ""="D18F"; ""="D001"; ""="D191"}]






الآن نكتب مباشرة محول السلسلة نفسه.

يجب أن يحتوي متغير السلسلة $ على سلسلة تحتوي على نص روسي أو روسي-إنجليزي مختلط عند الإدخال. الإخراج عبارة عن سلسلة مجمعة ، جاهزة للإرسال إلى Telegram. في الوقت نفسه ، لا يتم إعادة ترميز الأحرف اللاتينية Afavite وعلامات الترقيم ، حيث يتم عرضها عادةً في محادثات المراسلة. بدلاً من الأحرف الروسية ، يتم إدخال نظائرها في رموز UTF-8 في السلسلة ، مفصولة بعلامات "٪" ، تستخدمها Telegram لعرض الأحرف المشفرة.



# encoding of the symbols and ssembly line
:local StrTele ""; :local code "";
:for i from=0 to=([:len $string]-1) do={:local keys [:pick $string $i (1+$i)]; :local key ($rsimv->$keys); if ([:len $key]!=0) do={:set $code ("%"."$[:pick ($rsimv->$keys) 0 2]"."%"."$[:pick ($rsimv->$keys) 2 4]");} else={:set $code $keys}; :set $StrTele ("$StrTele"."$code")}




دعونا نضع كل هذا في وظيفة FuncStrToTele بحيث يمكنك تسميتها من أي من البرامج النصية الخاصة بك في RouterOs Mikrotik. يمكنك أيضًا استخدامه في DUDe. إليك الكود الكامل (يمكنك إدراج RouterOS Mikrotik في مستودع البرامج النصية الخاصة بك وتنفيذ البرنامج النصي لوضع الوظيفة في بيئة البرنامج النصي / النظام):



وظيفة تحويل سلسلة مختلطة
# Function Converter of Russian characters for sending in Telegram

# by Sertik 09/09/2020

# usage [$FuncStrToTele « String .,!+»]



:global FuncStrToTele do={

:local string; :set $string $1;



# table of the codes of Russian letters UTF8

:local rsimv [:toarray {«»=«D090»; «»=«D091»; «»=«D092»; «»=«D093»; «»=«D094»; «»=«D095»; «»=«D096»; «»=«D097»; «»=«D098»; «»=«D099»; «»=«D09A»; «»=«D09B»; «»=«D09C»; «»=«D09D»; «»=«D09E»; «»=«D09F»; «»=«D0A0»; «»=«D0A1»; «»=«D0A2»; «»=«D0A3»; «»=«D0A4»; «»=«D0A5»; «»=«D0A6»; «»=«D0A7»; «»=«D0A8»; «»=«D0A9»; «»=«D0AA»; «»=«D0AB»; «»=«D0AC»; «»=«D0AD»; «»=«D0AE»; «»=«D0AF»; «»=«D0B0»; «»=«D0B1»; «»=«D0B2»; «»=«D0B3»; «»=«D0B4»; «»=«D0B5»; «»=«D0B6»; «»=«D0B7»; «»=«D0B8»; «»=«D0B9»; «»=«D0BA»; «»=«D0BB»; «»=«D0BC»; «»=«D0BD»; «»=«D0BE»; «»=«D0BF»; «»=«D180»; «»=«D181»; «»=«D182»; «»=«D183»; «»=«D184»; «»=«D185»; «»=«D186»; «»=«D187»; «»=«D188»; «»=«D189»; «»=«D18A»; «»=«D18B»; «»=«D18C»; «»=«D18D»; «»=«D18E»; «»=«D18F»; «»=«D001»; «»=«D191»; "№"=«0023»}]



# encoding of the symbols and ssembly line

:local StrTele ""; :local code "";

:for i from=0 to=([:len $string]-1) do={:local keys [:pick $string $i (1+$i)]; :local key ($rsimv->$keys); if ([:len $key]!=0) do={:set $code ("%"."$[:pick ($rsimv->$keys) 0 2]"."%"."$[:pick ($rsimv->$keys) 2 4]");} else={:set $code $keys}; :set $StrTele ("$StrTele"."$code")}



:return $StrTele;

}





كما ترى من التعليق ، فإن المعلمة الوحيدة للدالة هي سلسلة الأحرف المدخلة ، وتعيد الوظيفة السلسلة التي تم إنشاؤها لإرسالها إلى المتغير $ string



في نصوصنا ، لا تنسَ الإعلان عن وظيفة محددة مسبقًا ليتم استدعاؤها:



:global FuncStrToTele
[$FuncStrToTele ", user !"]




لإرسال رسالة ، تحتاج إلى إنشاء الروبوت الخاص بك في Telegram ، ومعرفة API BOTToken ومعرف الدردشة. تم نشر تعليمات إنشاء الروبوتات والحصول على المعرفات عدة مرات. على سبيل المثال ، يمكنك الاطلاع على الروابط التالية:





نرسل رسالة الاختبار الخاصة بنا إلى bot chat:



:local botID "botXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXX" ;
:local myChatID "YYYYYY" ;
:global FuncStrToTele;
:local string [$FuncStrToTele "  Sertik !  - Russian alfabit  Telegramm"]
:tool fetch url=("https://api.telegram.org/$botID/sendmes ... xt=$string") keep-result=no


تحقق من أنه يعمل بشكل جيد بالنسبة لي. الآن يمكنك بسهولة إرسال رسائل باللغة الروسية إلى Telegram! التعليقات والاضافات مرحب بها



من المستحسن على الأرجح إضافة إرسال رمز حرف تغذية سطر ، وليس من الصعب القيام بذلك.



All Articles