يفتح
يغلق

واجهة برمجة تطبيقات برقية. واجهة برمجة تطبيقات Telegram واستخدامها. لنبدأ بالترميز

  • درس تعليمي

تعد روبوتات الدردشة موضوعًا مثيرًا للاهتمام إلى حد ما ويثير اهتمام كل من المتحمسين المهووسين والشركات التي ترغب في تنظيم التفاعل مع عملائها بالطريقة الأكثر ملاءمة لهم.


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

الخطوة الأولى: إعداد البنية التحتية.

في هذه الحالة، سنستخدم فقط Telegram bot وAPI.AI، ويتم تقديم كلتا الخدمتين مجانًا - كل ما علينا فعله هو إنشاء حسابات.

إنشاء بوت تيليجرام

لإنشاء روبوت، ما عليك سوى كتابة @BotFather (هذا بوت يمكنه إنشاء روبوتات أخرى وتكوينها):

  1. أرسل الأمر /newbot - هكذا نخبر @BotFather أننا بحاجة إلى روبوت جديد
  2. الآن سيطلب منا @BotFather تسمية الروبوت الجديد. سوف نرى هذا الاسم من قبلنا
    المستخدمين المستقبليين، لذلك يجب أن يكون الاسم واضحًا وبسيطًا.
  3. الخطوة الأخيرة هي تحديد اسم المستخدم للبوت، وفي النهاية يجب عليك ذلك
    اكتب "بوت".
  4. إذا لم يتم أخذ الاسم، نتلقى رسالة تأكيد ورمز وصول.

ولتوضيح الأمر، فيما يلي لقطة شاشة تحتوي على جميع الإجراءات:

القليل من النظرية

حان الوقت لإنشاء وكيل API.AI، وهو في الأساس مشروع أو حاوية (أي ما تفضل تسميته). يحتوي الوكيل على إعدادات للسياقات والكيانات والاستجابات:

  • "السياق" (النية)يعكس العلاقة بين ما قاله المستخدمو
    أولئك ماذا يجب أن يفعل برنامجنا
  • "جهات"هي أداة لاستخراج قيم المعلمات لـ
    برنامجنا من اللغة الطبيعية (ما قيل أو كتب
    مستخدم)
  • "الإجابات"هي النتيجة النهائية لبرنامجنا الذي نحن
    أرسل للمستخدم رسالته

في بعض الأحيان تكون المعلومات من الحوار الحالي كافية للرد على المستخدم؛ في هذه الحالة، يمكنك إعداد ثابت إجاباتالخامس السياقات. في الواقع، للحصول على إجابة محددة، قد نحتاج إلى خدمة خارجية أو منطق أعمالنا الخاص، على سبيل المثال، للحصول على معلومات حول الطقس ليوم غد، نحتاج إلى استدعاء واجهة برمجة التطبيقات الخارجية للخدمة المقابلة. سأخبرك لاحقًا بكيفية تلقي المعلومات من الأنظمة الخارجية، لكن أولاً، دعنا نجهز القاعدة.

إنشاء مشروع في API.AI

للتسجيل في API.AI، ستحتاج إلى حساب Google (فقط قم بإضافته إلى حساب Gmail الخاص بك). انتقل الآن إلى https://api.ai/، وانقر على زر "التسجيل مجانًا"، ثم حدد الحساب الذي تريد تسجيل الدخول نيابةً عنه.


الآن دعنا ننتقل إلى إنشاء الوكيل نفسه. انقر فوق "إنشاء وكيل" وحدد الاسم واللغة والمنطقة الزمنية على الأقل.


الخطوة الثانية: إعداد الوكيل.

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


  1. انقر فوق في قسم "السياق". لقد قام الوكيل بالفعل بتكوين "سياقات" للتحيات والأخطاء؛ فلنتركها دون تغيير في الوقت الحالي.
  2. أشر إلى اسم "السياق" - أي اسم، طالما أنه مفهوم لك ولزملائك.
  3. في قسم "يقول المستخدم"، قدم أمثلة على الأسئلة التي يمكن للمستخدم طرحها. وبما أننا نتحدث عن الطقس، فيمكن لأي شخص أن يطرح سؤالاً بناءً على الزمان والمكان - فلنأخذ هذا في الاعتبار. كلما زاد عدد الأمثلة التي تقدمها في الإعدادات، كلما كان عمل الوكيل أكثر دقة. لقد قدمت بعض الأمثلة في لقطة الشاشة:


في المثال الأخير، يتم تمييز الكلمات "غدًا" و"نيجني تاجيل" بألوان مختلفة - وبالتالي ترتبط الكلمات بالكيانات ( جهات) (في حالتنا، كيانات النظام). باستخدام هذه المعلمات، سوف "يفهم" الوكيل في أي مدينة وفي أي تاريخ يجب التحقق من الطقس.


أضف بضعة أمثلة أخرى وانقر على "حفظ".

دعونا اختبار!

دعونا نتحقق من أداء الوكيل باستخدام أسئلة بسيطة، على سبيل المثال، "الطقس في بيرم يوم الأربعاء":



طوال هذا الوقت، ظهر النقش "جربه الآن" في الجزء العلوي الأيمن من الشاشة - اكتب في هذا الحقل أو قل سؤالاً بسيطًا عن الطقس واضغط على "أدخل".


لم نقم بعد بتكوين استجابة تلقائية، لكن الوكيل تعلم بالفعل كيفية تحديد بعض المعلمات! يعكس قسم INTENT أنه وفقًا لـ "رأي" الوكيل، فإن المستخدم مهتم بالطقس ("السياق" الذي قمنا بإعداده)، وتعرض المعلمة تاريخ واسم المدينة في المتغيرات المقابلة.

إضافة ردود تلقائية

دعونا نجعل وكيلنا أكثر ثرثرة! وإلى أن نتعلم كيفية الحصول على معلومات الطقس من مصادر خارجية، سنضيف عبارات بسيطة كإجابات.


انتقل إلى قسم "الاستجابة" وأدخل إجابات بسيطة بنفس الطريقة التي ملأت بها "ردود المستخدم":



كما ترون، يمكنك استخدام الروابط إلى الكيانات المحددة في الردود والبدء في كتابة $ - وستطالبك الواجهة بتحديد متغير معين.


عند إنشاء استجابة، يأخذ الوكيل في الاعتبار عدد كيانات معينة ولا يستخدم الاستجابات التي لا توجد بيانات كافية عنها. على سبيل المثال، بالنسبة لسؤال دون تحديد مدينة، يستخدم الوكيل الإجابة من السطر الثاني.


احفظ الإعدادات واختبر مرة أخرى:



والآن لدينا الجواب أيضاً!

الخطوة الثالثة: إضافة خدمة خارجية.

وكيلنا "يفهم" بالفعل الحالات التي يريد المستخدم معرفة الطقس فيها وفي أي تاريخ وفي أي مدينة. الآن كل ما تبقى هو الحصول على هذه البيانات من الخدمة المناسبة ونقلها إلى الوكيل. للقيام بذلك، تحتاج إلى كتابة اثنين من البرامج النصية في JS ووضعهما في خدمة سحابية، في حالتنا، Google Cloud Project.

قم بإنشاء ملف JS للمبتدئين

للبدء، قم بإنشاء دليل باسم مشروعك وانتقل إليه:

    لينكس أو ماك OS X:


    مكدير ~/
    مؤتمر نزع السلاح ~/


    مكدير %HOMEPATH%
    القرص المضغوط %HOMEPATH%

الآن قم بإنشاء ملف Index.js بالمحتوى التالي:


رمز Index.js

/* * وظيفة سحابة HTTP. * * @param (Object) req سياق طلب وظيفة السحابة. * @param (Object) سياق استجابة وظيفة السحابة. */ Exports.itsm365Weather = function itsm365Weather (req, res) (response = "هذه استجابة نموذجية من خطاف الويب الخاص بك!" // الاستجابة الافتراضية من خطاف الويب لإظهار عملها res.setHeader("Content-Type"، "application/json"); // يتطلب التطبيق/json نوع MIME res.send(JSON.stringify(( "speech": Response, "displayText": الاستجابة //"الكلام" هو النسخة المنطوقة من الاستجابة، "displayText" " هي النسخة المرئية)))؛

قم بإعداد مشروع جوجل السحابي

  • قم بإجراء الإعدادات "قبلك
    ابدأ" من 1 إلى 5 نقاط
  • انشر الوظيفة في السحابة عن طريق تشغيلها في وحدة التحكم:


    تنشر وظائف gcloud التجريبيةitsm365Weather --stage-bucket --trigger-http

حيث يكونitsm365Weather هو اسم الوظيفة، وهو اسم وحدة التخزين
البيانات الخاصة بالمشروع.


بعد اكتمال العملية، سترى النتيجة مع عنوان URL لمشغل http:


تمكين Webhook في API.AI

  1. تأكد من أنك في الوكيل الصحيح ثم انقر فوق " تحقيق، إنجاز"في قائمة الاختباء اليسرى.
  2. قم بتمكين Webhook في أعلى يمين الشاشة.
  3. أدخل عنوان URL الذي تم الحصول عليه في الخطوة السابقة.
  4. احفظ تغييراتك.

تمكين تنفيذ وظيفة جديدة في إعدادات "السياق".

  1. انتقل إلى إعدادات "سياق" توقعات الطقس
  2. قم بتوسيع الكتلة تحقيق، إنجازفي أسفل الصفحة
  3. حدد المربع "استخدام Webhook"
  4. احفظ الإعدادات وتحقق من النتيجة:

قم بإعداد واجهة برمجة تطبيقات الطقس

من أجل البساطة، سوف نستخدم خدمة WWO (World Weather Online)، حيث تحتاج إلى الحصول على مفتاح API (فقط قم بالتسجيل عبر Facebook أو Github).


قم بتحديث الكود الموجود في ملف JS للبدء، وتذكر إدخال مفتاح API للحصول على معلومات الطقس:


كود المصدر لخدمة التنبؤات الجوية

// حقوق الطبع والنشر لعام 2017، لشركة Google, Inc. // مرخص بموجب ترخيص Apache، الإصدار 2.0 ("الترخيص")؛ // لا يجوز لك استخدام هذا الملف إلا وفقًا للترخيص. // يمكنك الحصول على نسخة من الترخيص على // // http://www.apache.org/licenses/LICENSE-2.0 // // ما لم يكن ذلك مطلوبًا بموجب القانون المعمول به أو تم الاتفاق عليه كتابيًا، يتم توزيع البرنامج // تحت يتم توزيع الترخيص على أساس "كما هو"، // دون ضمانات أو شروط من أي نوع، سواء كانت صريحة أو ضمنية. // راجع الترخيص للتعرف على الأذونات والقيود التي تحكم اللغة المحددة بموجب الترخيص. "استخدام صارم"؛ const http = require("http"); مضيف const = "api.worldweatheronline.com"; const wwoApiKey = "98cfb8e40ecc47c4a2f205209172608"; Exports.itsm365Weather = (req, res) => ( // احصل على المدينة والتاريخ من الطلب Let city = req.body.result.parameters["geo-city"]; // المدينة هي معلمة مطلوبة // Get تاريخ توقعات الطقس (إن وجد) Let date = ""; if (req.body.result.parameters["date"]) ( date = req.body.result.parameters["date"]; console.log ("Date: " + date); ) // استدعاء واجهة برمجة تطبيقات الطقس callWeatherApi(city, date).then((output) => ( // إرجاع نتائج واجهة برمجة تطبيقات الطقس إلى API.AI res.setHeader("Content" -Type"، "application/json")؛ res.send(JSON.stringify(( "speech": الإخراج، "displayText": الإخراج))); )).catch((خطأ) => ( // إذا كان هناك خطأ دع المستخدم يعرفه res.setHeader("Content-Type", "application/json"); res.send(JSON.stringify(( "speech": error, "displayText": error))); دالة callWeatherApi (المدينة، التاريخ) ( return new Promise((resolve, leave) => ( // أنشئ المسار لطلب HTTP للحصول على الطقس Let path = "/premium/v1/weather.ashx?format=json&num_of_days= 1" + "&q=" + encodeURIComponent(city) + "&key=" + wwoApiKey + "&date=" + date + "&lang=ru"; console.log("طلب واجهة برمجة التطبيقات: " + مضيف + مسار); // قم بإجراء طلب HTTP للحصول على الطقس http.get((host: host, path: path), (res) => ( Let body = ""; // var لتخزين أجزاء الاستجابة res.on("data"، (d) => (body += d; )); // تخزين كل قطعة استجابة res.on("end", () => ( // بعد استلام جميع البيانات، قم بتحليل JSON للحصول على البيانات المطلوبة، دع الاستجابة = JSON.parse(body); السماح بالتنبؤ = الاستجابة["بيانات"]["الطقس"]; السماح الموقع = استجابة["بيانات"]["طلب"] "]; ["value"]; // إنشاء استجابة Letput = `On $(forecast["date"]) في $(location["query"]) $(currentConditions) ، درجة حرارة الهواء من $(forecast["mintempC"] ) درجة مئوية إلى $(توقعات["maxtempC"])درجة مئوية. `; // حل الوعد بالنص الناتج console.log(output); العزم (الإخراج)؛ )); res.on("خطأ", (خطأ) => (رفض(خطأ); )); )); )); )


أعد نشر الوظيفة إلى المشروع السحابي.

الخطوة الرابعة: تكوين فروع الحوار

عند التفاعل مع مستخدم، لا يمكننا التأكد من أنه سيزودنا بجميع المعلومات اللازمة لإعداد رد في خدمة خارجية فورًا في الرسالة الأولى. في مثالنا، للحصول على توقعات، ستحتاج الخدمة إلى تاريخ ومدينة. إذا كان التاريخ غير معروف، فيمكننا أن نفترض بأمان أن المستخدم يعني "اليوم"، ولكن لا يمكننا التعرف على المدينة إلا من المستخدم نفسه.

اجعل "الموقع" معلمة مطلوبة


افتح إعدادات سياق "توقعات الطقس" وحدد معلمة المدينة الجغرافية باعتبارها إلزامية. ثم قم بإعداد سؤال توضيحي باستخدام الرابط الموجود في عمود "المطالبات".


احفظ الإعدادات واختبر سلوك الوكيل من خلال طرح سؤال بسيط حول الطقس عليه:



سألنا الوكيل سؤالاً توضيحيًا؛ ​​تعرض وحدة التحكم معلمات التيار
مواقف.

قم بإنشاء مُحسِّن عائد للموقع

لاستخدام البيانات التي تم الحصول عليها من رحلات المستخدم السابقة، ستحتاج إلى تكوين التحسينات المناسبة.



في إعداد سياق "التنبؤات الجوية"، أدخل اسم "الموقع" التوضيحي المرتجع في حقل "إضافة سياق الإخراج" واحفظ الإعدادات.

خلق سياق جديد للتوضيح

من الملائم أن تتمكن من طرح عدة أسئلة حول نفس الموقع دون أن تسأل المستخدم عن المدينة التي يقصدها. لقد قمت بالفعل بتكوين مؤهل الإرجاع الذي يمكنك استخدامه لمعالجة أسئلة المتابعة.


  1. قم بإنشاء سياق جديد في القسم النواياأو اضغط على الأيقونة الموجودة في السطر
    النواياالقائمة المنسدلة اليسرى.
  2. قم بتسمية السياق الجديد "تحديث الطقس" (أو أي اسم آخر يناسبك).
  3. ضبط المصافي الواردة والصادرة على "الموقع"
  4. أضف ملاحظات المستخدم، على سبيل المثال، "ماذا عن الغد؟"
  5. أضف معلمة كيان بالقيم التالية:
    - اسم المعلمة:
    مدينة جغرافية
    - قيمة:#الموقع الجغرافي المدينة
  6. أضف ردًا للمستخدم إلى قسم " إجابة”:
    - "عذرًا، لكن لا يمكنني الحصول على توقعات لفترة تاريخ بالدولار في #location.geo-city"
  7. تمكين الاستخدام webhookعلى القائمة تحقيق، إنجاز.
  8. احفظ الإعدادات واختبرها في وحدة التحكم:

الخطوة الخامسة: الترحيب بالمواقف غير المتوقعة والتعامل معها

الهيكل العظمي الرئيسي للوكيل جاهز، والآن يعد صنع الروبوت فكرة جيدة
استقبل المستخدم وعرف أيضًا كيفية الرد على الأسئلة غير المتوقعة.

قم بإعداد الاستجابات الافتراضية للمواقف غير المتوقعة

إذا طرح المستخدم سؤالاً غير متوقع (في حالتنا، ليس حول الطقس)، فسيقوم الوكيل بتضمين سياق للتعامل مع المواقف غير المتوقعة ( نية التراجع الافتراضية):



انتقل إلى إعداد هذا السياق، وقم بتخصيص خيارات إجابتك إذا لزم الأمر.

قم بإعداد سياق الترحيب

يمكن تخصيص التحية بطريقة مماثلة في المحتوى المقابل -
نية الترحيب الافتراضية


الخطوة السادسة: إطلاق البوت

ربط بوت Telegram بالوكيل

انتقل إلى إعدادات "التكاملات" وقم بتمكين الروبوت في القسم
"عمليات التكامل بنقرة واحدة":



انسخ الرمز المميز الذي تلقيته من @botFather في حقل "رمز Telegram المميز" ثم
انقر على ابدأ.

التحقق من أداء الروبوت

انتقل إلى برنامج الروبوت الخاص بك وحاول كتابة شيء ما فيه، وهو في حالتي
@itsm365_weather_bot (لقد استخدمت حسابات الطقس المجانية، لذلك بعد 500 طلب يوميًا، سيتحول الروبوت إلى قرع).


خاتمة

يمكن بالفعل استخدام API.AI لإنشاء واجهات تفاعلية في برامج المراسلة الفورية ودعم المحادثات مع الشبكات الاجتماعية. نظرًا لأنه يمكن دمج الأداة بسهولة مع خدماتك، فهي بمثابة العمود الفقري المناسب لأتمتة الاتصال مع المستخدمين.


ملاحظة. هذه هي مشاركتي الأولى، وسأكون ممتنا لردود الفعل البناءة!

العلامات:

  • api.ai
  • برقية
  • روبوتات برقية
اضف اشارة

بضع كلمات حول كيفية إعداد إرسال الرسائل في Telegram (ولا تحتاج إلى برمجة، حسنًا، ليس بالضرورة).

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

إنشاء بوت

لذلك، أول شيء عليك القيام به هو إنشاء روبوت. للقيام بذلك، ابحث عنBotFather في قائمة جهات الاتصال الخاصة بك. هذا روبوت خاص من Telegram، وهو ضروري لإنشاء الروبوتات. في هذه الحالة، أستخدم web.telegram.org، وهو مناسب، ولا تحتاج إلى نقل أي شيء من هاتفك إلى جهاز الكمبيوتر الخاص بك.

ابحث عن @BotFather وأرسل له ثلاثة أوامر: /newBot (اكتب تمامًا كما في لقطة الشاشة)، وحدد اسم الروبوت الجديد مرتين. من المهم أن ينتهي اسم الروبوت بـ "bot" - هذه هي المتطلبات.

بعد ذلك، سيخبرك BotFather أن كل شيء على ما يرام ويعيد مفتاح واجهة برمجة التطبيقات (API)، والذي ستحتاج إليه لاحقًا. للتجارب، الآن يمكنك أن تأخذ مفتاحي - 515479662:AAF1wTj2Xcb3HVURbc_5DbZ9qiz4ddds9iQ.

اتصال

الآن، في قائمة جهات الاتصال الخاصة بك، ابحث عن الروبوت الذي قمت بإنشائه بالاسم (في حالتي، BablofilDemoBot)، وانقر فوق زر البدء. وهذا مهم لأنه الروبوت نفسه لا يستطيع أن يفرض نفسه على الناس.

وبعد ذلك قم بفتح هذا الرابط في متصفحك

(بالنسبة إلى الروبوت الخاص بك، استبدل مفتاح API بمفتاحك الخاص، مثل هذا https://api.telegram.org/bot أبيابيابيابي/الحصول على التحديثات). يجب أن ترى تقريبًا نفس ما في لقطة الشاشة - آخر نشاط للروبوت - من اتصل، ومن كتب ماذا، وما إلى ذلك. إذا كان فارغًا، فاكتب بعض الهراء في برقية إلى الروبوت وقم بتحديث الصفحة. هدفك النهائي هو العثور على chat_id

لقد أبرزت ما تحتاج إلى العثور عليه. تنبيه - إذا كنت تستخدم الروبوت الخاص بي، فضع في اعتبارك أنه يمكن لأي شخص توصيله، حتى تتمكن من العثور على معرف الدردشة الخاص بشخص آخر - تأكد من ذكر لقبك هنا. والأفضل من ذلك، احصل على روبوت منفصل) خلاف ذلك، سيتمكن أي شخص من الكتابة إليك نيابة عن الروبوت - مفاتيح API معروفة للجميع.

ارسال رسالة

في هذه الخطوة، تعرف مفتاح API وchat_id. كل ما تبقى هو كتابة رسالة.

وبناءً على ذلك، استبدل واجهة برمجة التطبيقات ومعرف الدردشة ونص الرسالة بنص خاص بك. أقوم بإرسال كلمة PING كرسالة روبوت.

https://api.telegram.org/bot أبيابيابي/sendMessage?chat_id= شاتد&نص= نص

آآاند... البوت يرسل لك رسالة في التليجرام.

حسنًا، الآن، إذا كنت تريد إرسال رسائل إلى نفسك أو إلى مجموعة (أوه نعم، إذا كنت تريد الذهاب إلى مجموعة، فقم بإضافة الروبوت إلى المجموعة واحصل على معرف الدردشة مرة أخرى، هذه المرة فقط للمجموعة) من البرنامج النصي، ثم فقط اسحب الرابط باستخدام، على سبيل المثال، رمز هنا مثل هذا:

استيراد urllib.طلب urllib . طلب. أورلوبين(""" https://api.telegram.org/bot(API_TOKEN)/sendMessage?chat_id=(CHAT_ID)&text=(TEXT)""" . التنسيق (API_TOKEN = "515479662:AAF1wTj2Xcb3HVURbc_5DbZ9qiz4ddds9iQ"، CHAT_ID = "303964420"، النص = "اختبار اختبار اختبار" ))

لقد أصبح Telegram على شفاه الجميع مؤخرًا. يجب أن نمنح الفضل لقسم التسويق لهذا التطبيق، فقد خلقوا قدرًا كبيرًا من الضجيج. إحدى الميزات الرئيسية لـ Telegram هي الأمان المفترض - وفقًا لـ Pavel Durov، يتم تشفير جميع المراسلات بين المستخدمين. علاوة على ذلك، لن تتمكن أي وكالة استخبارات في العالم من الوصول إلى رسائلك. لكن هذه المقالة لا تتعلق بذلك. أود اليوم أن أتحدث عن ميزة رائعة بنفس القدر في Telegram، وهي الروبوتات. بالإضافة إلى حقيقة أن الشبكة مليئة بالفعل بالمعلومات حول أنواع مختلفة من روبوتات Telegram (Github bot، على سبيل المثال)، فقد فتح برنامج المراسلة واجهة برمجة التطبيقات الخاصة به للمطورين، والآن يمكن للجميع إنشاء روبوت خاص بهم باستخدام لعبة البلاك جاك والمكافآت.

سأقدم في هذه المقالة مثالاً لكتابة روبوت عبر الإنترنت باستخدام إطار عمل Python وDjango. أي أننا سنقوم ببناء تطبيق ويب كامل يعمل على مضيف بعيد ويتلقى الأوامر من المستخدمين. كل كود المصدر متاح في مستودع جيثب الخاص بي.

توجد وثائق تصف عملية التفاعل مع روبوتات Telegram. من أجل عدم إعادة اختراع العجلة، وجدت مكتبة بايثون جيدة تنفذ جميع الوظائف الأساسية للروبوتات - telepot. كما ذكرت سابقًا، من أجل خدمة مستخدمي الروبوت الخاص بنا، سنقوم بتطوير تطبيق ويب باستخدام إطار عمل Django.

كيفية إنشاء بوت تيليجرام؟

أولاً، نحتاج إلى تسجيل الروبوت المستقبلي الخاص بنا في Telegram. هذا يفعل كما يلي:

  • تحتاج إلى تثبيت تطبيق Telegram على هاتفك أو جهاز الكمبيوتر الخاص بك. يمكنك تحميل التطبيق
  • أضف روبوتًا بالاسم إلى قائمة جهات الاتصال الخاصة بك بوتالأب
  • نبدأ إجراء "الاتصال" مع الروبوت بالضغط على الزر يبدأ. بعد ذلك، سنرى قائمة بالأوامر تمامًا كما في لقطة الشاشة.
  • لإنشاء روبوت جديد، عليك تشغيل الأمر /نيوبوتواتبع التعليمات. .لاحظ أن يجب أن يحتوي اسم المستخدم الخاص بالبوت دائمًا على كلمة bot في النهاية. على سبيل المثال، DjangoBot أو Django_bot.

  • بالنسبة لروبوتنا، اخترت اسم PythonPlanetBot، نظرًا لأن وظيفته الرئيسية هي تحليل موجز RSS لموقع Python Planet الإلكتروني وتقديم معلومات حول أحدث المشاركات للمستخدم :)

بعد إنشاء الروبوت، انتبه إلى السطر الذي يحتوي على النص:

استخدم هذا الرمز المميز للوصول إلى HTTP API:

تليها ما يسمى الرمز الذي سنتعامل من خلاله مع الروبوت الخاص بنا. بالإضافة إلى وظيفة إنشاء روبوت برقية، يتمتع BotFather أيضًا بعدد من الميزات الأخرى:

  • أعط البوت وصفًا
  • تعيين الصورة الرمزية
  • تغيير الرمز المميز

لنبدأ بالترميز

كما ذكرت سابقا، سوف نكتب تطبيق الويب جانغو. ولكن تجدر الإشارة إلى أن هذا ليس ضروريا. يمكنك التعامل مع برنامج Python العادي، على الرغم من أنك ستحتاج في هذه الحالة إلى استطلاع Telegram بشكل دوري للطلبات الجديدة من مستخدمي الروبوت (باستخدام الطريقة getUpdates) وزيادة الإزاحة للحصول على أحدث البيانات دون تكرار. في Telegram، هناك طريقتان حصريتان لتلقي الأوامر/الرسائل الخاصة بالروبوت الخاص بك.

  • استخدام استدعاء طريقة API getUpdates
  • تثبيت الخطاف على الويب

يتضمن إعداد Webhook تمرير عنوان URL خاص إلى الروبوت الذي سيتم إرسال طلب POST إليه في كل مرة يبدأ فيها شخص ما بإرسال رسائل إلى الروبوت. هذا هو الخيار الذي سنستخدمه للتفاعل بين الروبوت ومستخدمه. لتعيين عنوان URL، يجب عليك استخدام طريقة API setWebhook. ألاحظ أن عنوان URL يجب أن يبدأ بـ https، أي أن يكون لديه اتصال SSL آمن بشهادة صالحة. يتيح لك Telegram استخدام شهادة موقعة ذاتيًا، على الرغم من أن هذا يتطلب طريقة setWebhookقم أيضًا بإرسال المفتاح العام بتنسيق PEM (ASCII base64). أو يمكنك الحصول عليه من Let's Encrypt.

اقرأ المزيد عن getUpdatesو setWebhookيمكن قراءتها وفقا لذلك و .

لذلك، دعونا نعود إلى مكتبة بايثون للعمل مع تيليجرام - telepot. حاليًا، الإصدار الأخير هو 6.7. تثبيته في البيئة الافتراضية python virtualenv:

بيب تثبيت telepot

إن أبسط طريقة للتفاعل مع روبوت Telegram في Python هي كما يلي:

استيراد رمز telepot = "123456" TelegramBot = telepot.Bot(رمز مميز) طباعة TelegramBot.getMe()

يتم تعيين متغير الرمز المميز بقيمة الرمز المميز الذي تم استلامه عند إنشاء الروبوت عبر BotFather. ونتيجة لذلك، بعد تنفيذ هذه الأوامر سنحصل على:

(u"اسم المستخدم": u"PythonPlanetBot"، u"first_name": u"Python Planet Bot"، u"id": 199266571)

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

دعونا نضيف الروبوت الخاص بنا إلى قائمة جهات الاتصال لدينا ونرسل إليه الأمر القياسي الأول /start

لنقم بتشغيل الكود:

TelegramBot.getUpdates() [(u"message": (u"date": 1459927254، u"text": u"/start"، u"from": (u"username": u"adilkhash"، u"first_name" ": u"Adil"، u"id": 31337)، u"message_id": 1، u"chat": (u"اسم المستخدم": u"adilkhash"، u"first_name": u"Adil"، u" النوع": u"خاص"، u"id": 7350)))، u"update_id": 649179764)]

تتم عملية التواصل مع روبوت التليجرام عبر HTTPS؛ يستخدم JSON لنقل البيانات. طريقة getUpdatesتقوم بإرجاع قائمة/مصفوفة من كائنات نوع التحديث. داخل التحديث هو كائن رسالة. بالنسبة للتفاعل القياسي مع الروبوت، نحن مهتمون بالفعل بكائن الرسالة، الذي نقرأ منه سمة النص، التي تخزن النص المرسل إلى الروبوت وكائن الدردشة، الذي يحتوي على معلومات حول المستخدم الذي بدأ المحادثة مع Telegram الخاص بنا بوت. هناك أيضًا معلمة update_id تعمل كمعلمة الإزاحة عند استدعاء أسلوب getUpdates. أي أن update_id+1 سيعيد جميع الرسائل المستلمة بعد آخر update_id، بينما سيتم حذف جميع الرسائل السابقة.

TelegramBot.getUpdates(649179764+1) [(u"message": (u"date": 1459928527، u"text": u"hello bro"، u"from": (u"username": u"adilkhash"، u"first_name": u"Adil"، u"id": 31337)، u"message_id": 13، u"chat": (u"username": u"adilkhash"، u"first_name": u"Adil" ، u"type": u"خاص"، u"id": 7350)))، u"update_id": 649179765)]

في مرحلة كتابة أبسط روبوت Telegram، تكفينا هذه المكالمات. لنبدأ في كتابة تطبيق Django لخدمة مستخدمينا.

تبدو وظيفة تحليل خلاصة Planet Python RSS البسيطة هكذا.

يتم تحديد تطوير Telegrams إلى حد كبير من خلال وجود عدد كبير من الروبوتات - برامج روبوت الخدمة الصغيرة. يمكن إنشاؤها بواسطة أي مستخدم مطلع على البرمجة في المستوى المتوسط. Telegram API Bot عبارة عن واجهة برمجية تسمح لك ببرمجة الروبوت الخاص بك.

تتضمن واجهة برمجة التطبيقات (API) كائنات وأوامر مصممة لضبط سلوك روبوت Telegram. باستخدام الواجهة، يمكنك إنشاء رموز البرامج الخاصة بك، والتي، عند تشغيلها في Telegram، تبدأ في العمل مثل الروبوتات.

ضوابط

في Bot Telegram API، جميع عناصر التحكم هي كائنات يتم تمثيلها بتنسيق JSON، أي في شكل سلسلة محددة وفقًا لقواعد معينة. يسمح لك هذا بتبادل البيانات عبر الشبكة بأسرع ما يمكن وبأقل تكلفة ممكنة، نظرًا لأنه ليس رمز البرنامج الذي يتم إرساله، بل مجموعة من أزواج المفاتيح: القيمة في شكل نص. يعرض الجدول جميع أنواع واجهة برمجة التطبيقات. معظم الكائنات مخصصة لإنشاء أوامر الروبوت. ستوفر المفاتيح فهمًا أكثر شمولاً لقدرات الكائن.

اسم وصف مفاتيح
مستخدم مستخدم في تيليجرام بطاقة تعريف
الاسم الأول
اسم العائلة
اسم المستخدم
محادثة محادثة بطاقة تعريف
يكتب
عنوان
اسم المستخدم
الاسم الأول
اسم العائلة
all_members_are_administrators
رسالة رسالة معرف الرسالة
من
تاريخ
محادثة
Forward_from
ward_date
Response_to_message
نص
جهات
صوتي
وثيقة
صورة
ملصق
فيديو
صوت
التسمية التوضيحية
اتصال
موقع
مكان
new_chat_member
left_chat_member
new_chat_title
new_chat_photo
delete_chat_photo
group_chat_created
supergroup_chat_created
Channel_chat_created
migrate_to_chat_id
migrate_from_chat_id
pinned_message
كيان الرسالة كيان منفصل في رسالة نصية (هاشتاج، رابط، إلخ.) يكتب
طول
عنوان URL
عوض
حجم الصورة صورة بحجم معين أو معاينة لصورة أو ملف أو ملصق file_id
عرض
ارتفاع
حجم الملف
صوتي تسجيل الصوت file_id
مدة
المؤدي
عنوان
نوع التمثيل الصامت
حجم الملف
وثيقة أي ملف ليس صورة أو تسجيل صوتي أو تسجيل صوتي file_id
إبهام
اسم الملف
نوع التمثيل الصامت
حجم الملف
ملصق ملصق file_id
عرض
ارتفاع
إبهام
حجم الملف
فيديو تسجيل الفيديو file_id
عرض
ارتفاع
مدة
إبهام
نوع التمثيل الصامت
حجم الملف
صوت رسالة صوتية file_id
مدة
نوع التمثيل الصامت
حجم الملف
اتصال اتصال هاتفي رقم التليفون
الاسم الأول
اسم العائلة
معرف المستخدم
موقع نقطة على الخريطة خط الطول
خط العرض
مكان كائن على الخريطة موقع
عنوان
عنوان
foursquare_id
صور الملف الشخصي للمستخدم صورة الملف الشخصي للمستخدم Total_count
الصور
ملف جاهز لتحميل الملف file_id
حجم الملف
مسار الملف
الرد على لوحة المفاتيح لوحة المفاتيح مع خيار الإجابة لوحة المفاتيح
resize_keyboard
one_time_keyboard
انتقائي
زر لوحة المفاتيح زر لوحة المفاتيح للإجابة نص
request_contact
request_location
الرد على لوحة المفاتيح إخفاء يستبدل لوحة مفاتيح الروبوت بلوحة مفاتيح Telegram القياسية Hide_keyboard
انتقائي
InlineKeyboardMarkup لوحة المفاتيح المدمجة التي تظهر أسفل الرسالة inline_keyboard
زر لوحة المفاتيح المضمنة زر واحد على لوحة المفاتيح المدمجة نص
عنوان URL
callback_data
Switch_inline_query
Switch_inline_query_current_chat
callback_game
استعلام رد الاتصال طلب تعليقات وارد لزر مضمن مع معلمة callback_data المحددة بطاقة تعريف
من
رسالة
inline_message_id
بيانات
رد القوة يحاكي إجراءات المستخدم: تحديد رسالة والضغط على زر "الرد". force_reply
انتقائي
معلمات الاستجابة تقارير عن سبب عدم اكتمال الطلب بنجاح migrate_to_chat_id
إعادة المحاولة_بعد

يتم تمثيل السلاسل الناتجة التي يرسلها برنامج المراسلة على أنها نفس كائنات واجهة برمجة التطبيقات (API).

يتم تبادل الرسائل في شكل طلبات. ويبين الجدول التالي أمثلة على بعض منها.

تنقسم جميع الطرق (وهناك الكثير منها) إلى مجموعات:

  1. تلقي التحديثات والمعلومات.
  2. عمل الدردشة.
  3. إرسال العناصر المختلفة.
  4. العمل مع الملصقات.
  5. تحديث الرسائل.
  6. الوضع المضمن.
  7. وظيفة الدفع.
  8. للألعاب.

لا يوجد حتى الآن التوثيق الكامل لواجهة برمجة تطبيقات Telegram Bot باللغة الروسية. ومع ذلك، فإن الترجمة القياسية في متصفح Google Chrome تؤدي المهمة على أكمل وجه.

لغات البرمجة

يتم دعم Telegram API بواسطة العديد من لغات البرمجة. وهذا يعطي الخالق خيارا.

يمكن لعشاق JavaScript استخدام Node.js Telegram Bot API. هنا لا تحتاج إلى معرفة اللغة فحسب، بل تحتاج أيضًا إلى القدرة على التعامل مع هذا الإطار، الذي حول لغة العميل إلى واجهة خادم كاملة.

يعد PHP أحد أشهر برامج كتابة الروبوتات باستخدام Telegram Bot API. كانت هذه اللغة مخصصة في الأصل لإنشاء تطبيقات الويب من جانب الخادم. إنها بسيطة ومنطقية ومتخصصة خصيصًا لبيئة الويب.

غالبًا ما يتم استخدام Telegram Bot API في Python. هذه اللغة بسيطة وسهلة التعلم. أنها تحظى بشعبية كبيرة بسبب أدائها.
الطريقة الكلاسيكية هي استخدام Telegram Bot API في لغة C++. لا يمكن وصف اللغة بأنها بسيطة، ولكنها الأساس الذي تم على أساسه إنشاء جميع اللغات الأخرى المذكورة أعلاه. وعليه فهو لا يحتوي على تخصص محدد. تتيح لك الأدوات إنشاء أي تطبيق.

مثال الاستخدام

بالإضافة إلى الكائنات، تحتوي واجهة برمجة التطبيقات (API) على مجموعة من الأساليب التي تتيح لك إرسال الرسائل والملفات وملصقات الصور والتحرير وغير ذلك الكثير. يمكن العثور على كل هذه الأوامر في وصف واجهة برمجة التطبيقات (API) على الموقع الرسمي.

هناك خدمة خاصة للإنشاء في Telegram @Botfather. انتقل إليه وشاهد مجموعة الأوامر التي يتم من خلالها إنشاء روبوت جديد. للبدء، اكتب الأمر /newbot. بعد ذلك، أدخل اسم المستخدم والعنوان بالتسلسل. وينتهي الأخير دائمًا بـ "bot". بعد أن يرسلوا لك رمزًا مميزًا (معرفًا)، يتم إنشاء روبوت جديد. يتم التفويض من خلال رمز مميز. لبدء البرنامج في Telegram، ابحث عن أفكارك وانقر فوق الزر "ابدأ". سيؤدي هذا إلى تشغيل الأمر /start المحدد مسبقًا. كما يتم حجز أوامر /settings و/help لكل روبوت.

تبدو جميع الطلبات كما يلي:

https://api.telegram.org/bot /فريق

هناك 4 طرق لتقديم الطلب:

  1. الطلب في URL
  2. application/x-www-form-urlencoded
  3. application/json (غير مناسب لتحميل الملفات)
  4. بيانات متعددة الأجزاء/النموذج (لرفع الملفات)

تتوفر طلبات GET وPOST.

أسهل طريقة لتجربة أوامر API هي في شريط العناوين في متصفحك. قم بتسجيل الدخول إلى الروبوت الخاص بك في إصدار الويب أو من جهاز محمول. ثم اكتب الأمر في متصفحك:

https://api.telegram.org/bot507226896:AAGT_fsEfg1milOkqbNp-VolQDJ0tGjaPvD7/getUpdates

ونتيجة لذلك، ستظهر سلسلة JSON في النافذة

("موافق":صحيح،"النتيجة":[("update_id":231886689،
"message":("message_id":3,from":("id":391911270,"is_bot":false,"first_name": "Irina", "last_name": "12345678"، "language_code": "ru" "),,"chat":("id":391911270,"first_name": "إيرينا", "last_name": "12345678", "type":"خاص"),"date":1514900431,"text": " \u044\u0443\u0442\u0430\u043\u043e\u0430\u043c\u0440")))))

دردشة المعلمة":("المعرف هو معرف الدردشة. ثم اكتب السطر:

https://api.telegram.org/ bot507226896:AAGT_fsEfg1milOkqbNp-VolQDJ0tGjaPvD7/sendMessage?chat_id=391911270&text=Hello

سيظهر خط في المتصفح

("ok":true,"result":("message_id":4,"from":("id":507226896,"is_bot":true,"first_name": "Anna"، "اسم المستخدم": "Annatuola_bot" ),"chat":("id":391911270,"first_name": "إيرينا", "last_name": "12345678", "type": "خاص"),"date":1514900499,"text":"مرحبًا" "))

وفي دردشة Telegram سترى تحية من الروبوت الذي تم إنشاؤه.

كما ترون، فإن إنشاء عنصر Telegram جديد من البداية ليس بالأمر الصعب. تبدأ الصعوبات في لحظة البرمجة، لكننا سنتحدث عن ذلك في مقالات أخرى.