واجهة برمجة تطبيقات برقية. واجهة برمجة تطبيقات Telegram واستخدامها. لنبدأ بالترميز
- درس تعليمي
تعد روبوتات الدردشة موضوعًا مثيرًا للاهتمام إلى حد ما ويثير اهتمام كل من المتحمسين المهووسين والشركات التي ترغب في تنظيم التفاعل مع عملائها بالطريقة الأكثر ملاءمة لهم.
سأصف لكم اليوم مثالًا بسيطًا لإنشاء روبوت Telegram باستخدام منصة بناء واجهة المحادثة API.AI التي سترحب بالمستخدم وتجيب على الأسئلة المتعلقة بالطقس. بالنسبة للجزء الأكبر، اتبعت هذه التعليمات، في الممارسة العملية، يمكنك تجاوز الطقس وتنفيذ الواجهات
للدعم الآلي أو المبيعات.
الخطوة الأولى: إعداد البنية التحتية.
في هذه الحالة، سنستخدم فقط Telegram bot وAPI.AI، ويتم تقديم كلتا الخدمتين مجانًا - كل ما علينا فعله هو إنشاء حسابات.
إنشاء بوت تيليجرام
لإنشاء روبوت، ما عليك سوى كتابة @BotFather (هذا بوت يمكنه إنشاء روبوتات أخرى وتكوينها):
- أرسل الأمر /newbot - هكذا نخبر @BotFather أننا بحاجة إلى روبوت جديد
- الآن سيطلب منا @BotFather تسمية الروبوت الجديد. سوف نرى هذا الاسم من قبلنا
المستخدمين المستقبليين، لذلك يجب أن يكون الاسم واضحًا وبسيطًا. - الخطوة الأخيرة هي تحديد اسم المستخدم للبوت، وفي النهاية يجب عليك ذلك
اكتب "بوت". - إذا لم يتم أخذ الاسم، نتلقى رسالة تأكيد ورمز وصول.
ولتوضيح الأمر، فيما يلي لقطة شاشة تحتوي على جميع الإجراءات:
القليل من النظرية
حان الوقت لإنشاء وكيل API.AI، وهو في الأساس مشروع أو حاوية (أي ما تفضل تسميته). يحتوي الوكيل على إعدادات للسياقات والكيانات والاستجابات:
- "السياق" (النية)يعكس العلاقة بين ما قاله المستخدمو
أولئك ماذا يجب أن يفعل برنامجنا - "جهات"هي أداة لاستخراج قيم المعلمات لـ
برنامجنا من اللغة الطبيعية (ما قيل أو كتب
مستخدم) - "الإجابات"هي النتيجة النهائية لبرنامجنا الذي نحن
أرسل للمستخدم رسالته
في بعض الأحيان تكون المعلومات من الحوار الحالي كافية للرد على المستخدم؛ في هذه الحالة، يمكنك إعداد ثابت إجاباتالخامس السياقات. في الواقع، للحصول على إجابة محددة، قد نحتاج إلى خدمة خارجية أو منطق أعمالنا الخاص، على سبيل المثال، للحصول على معلومات حول الطقس ليوم غد، نحتاج إلى استدعاء واجهة برمجة التطبيقات الخارجية للخدمة المقابلة. سأخبرك لاحقًا بكيفية تلقي المعلومات من الأنظمة الخارجية، لكن أولاً، دعنا نجهز القاعدة.
إنشاء مشروع في API.AI
للتسجيل في API.AI، ستحتاج إلى حساب Google (فقط قم بإضافته إلى حساب Gmail الخاص بك). انتقل الآن إلى https://api.ai/، وانقر على زر "التسجيل مجانًا"، ثم حدد الحساب الذي تريد تسجيل الدخول نيابةً عنه.
الآن دعنا ننتقل إلى إنشاء الوكيل نفسه. انقر فوق "إنشاء وكيل" وحدد الاسم واللغة والمنطقة الزمنية على الأقل.
الخطوة الثانية: إعداد الوكيل.
يعكس السياق العلاقة بين ما يقوله المستخدم وما يجب أن يفعله وكيلنا. في حالتنا، خذ بعين الاعتبار حالة توقعات الطقس:
- انقر فوق في قسم "السياق". لقد قام الوكيل بالفعل بتكوين "سياقات" للتحيات والأخطاء؛ فلنتركها دون تغيير في الوقت الحالي.
- أشر إلى اسم "السياق" - أي اسم، طالما أنه مفهوم لك ولزملائك.
- في قسم "يقول المستخدم"، قدم أمثلة على الأسئلة التي يمكن للمستخدم طرحها. وبما أننا نتحدث عن الطقس، فيمكن لأي شخص أن يطرح سؤالاً بناءً على الزمان والمكان - فلنأخذ هذا في الاعتبار. كلما زاد عدد الأمثلة التي تقدمها في الإعدادات، كلما كان عمل الوكيل أكثر دقة. لقد قدمت بعض الأمثلة في لقطة الشاشة:
في المثال الأخير، يتم تمييز الكلمات "غدًا" و"نيجني تاجيل" بألوان مختلفة - وبالتالي ترتبط الكلمات بالكيانات ( جهات) (في حالتنا، كيانات النظام). باستخدام هذه المعلمات، سوف "يفهم" الوكيل في أي مدينة وفي أي تاريخ يجب التحقق من الطقس.
أضف بضعة أمثلة أخرى وانقر على "حفظ".
دعونا اختبار!
دعونا نتحقق من أداء الوكيل باستخدام أسئلة بسيطة، على سبيل المثال، "الطقس في بيرم يوم الأربعاء":
طوال هذا الوقت، ظهر النقش "جربه الآن" في الجزء العلوي الأيمن من الشاشة - اكتب في هذا الحقل أو قل سؤالاً بسيطًا عن الطقس واضغط على "أدخل".
لم نقم بعد بتكوين استجابة تلقائية، لكن الوكيل تعلم بالفعل كيفية تحديد بعض المعلمات! يعكس قسم 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
- تأكد من أنك في الوكيل الصحيح ثم انقر فوق " تحقيق، إنجاز"في قائمة الاختباء اليسرى.
- قم بتمكين Webhook في أعلى يمين الشاشة.
- أدخل عنوان URL الذي تم الحصول عليه في الخطوة السابقة.
- احفظ تغييراتك.
تمكين تنفيذ وظيفة جديدة في إعدادات "السياق".
- انتقل إلى إعدادات "سياق" توقعات الطقس
- قم بتوسيع الكتلة تحقيق، إنجازفي أسفل الصفحة
- حدد المربع "استخدام Webhook"
- احفظ الإعدادات وتحقق من النتيجة:
قم بإعداد واجهة برمجة تطبيقات الطقس
من أجل البساطة، سوف نستخدم خدمة 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("خطأ", (خطأ) => (رفض(خطأ); )); )); )); )
أعد نشر الوظيفة إلى المشروع السحابي.
الخطوة الرابعة: تكوين فروع الحوار
عند التفاعل مع مستخدم، لا يمكننا التأكد من أنه سيزودنا بجميع المعلومات اللازمة لإعداد رد في خدمة خارجية فورًا في الرسالة الأولى. في مثالنا، للحصول على توقعات، ستحتاج الخدمة إلى تاريخ ومدينة. إذا كان التاريخ غير معروف، فيمكننا أن نفترض بأمان أن المستخدم يعني "اليوم"، ولكن لا يمكننا التعرف على المدينة إلا من المستخدم نفسه.
اجعل "الموقع" معلمة مطلوبة
افتح إعدادات سياق "توقعات الطقس" وحدد معلمة المدينة الجغرافية باعتبارها إلزامية. ثم قم بإعداد سؤال توضيحي باستخدام الرابط الموجود في عمود "المطالبات".
احفظ الإعدادات واختبر سلوك الوكيل من خلال طرح سؤال بسيط حول الطقس عليه:
سألنا الوكيل سؤالاً توضيحيًا؛ تعرض وحدة التحكم معلمات التيار
مواقف.
قم بإنشاء مُحسِّن عائد للموقع
لاستخدام البيانات التي تم الحصول عليها من رحلات المستخدم السابقة، ستحتاج إلى تكوين التحسينات المناسبة.
في إعداد سياق "التنبؤات الجوية"، أدخل اسم "الموقع" التوضيحي المرتجع في حقل "إضافة سياق الإخراج" واحفظ الإعدادات.
خلق سياق جديد للتوضيح
من الملائم أن تتمكن من طرح عدة أسئلة حول نفس الموقع دون أن تسأل المستخدم عن المدينة التي يقصدها. لقد قمت بالفعل بتكوين مؤهل الإرجاع الذي يمكنك استخدامه لمعالجة أسئلة المتابعة.
- قم بإنشاء سياق جديد في القسم النواياأو اضغط على الأيقونة الموجودة في السطر
النواياالقائمة المنسدلة اليسرى. - قم بتسمية السياق الجديد "تحديث الطقس" (أو أي اسم آخر يناسبك).
- ضبط المصافي الواردة والصادرة على "الموقع"
- أضف ملاحظات المستخدم، على سبيل المثال، "ماذا عن الغد؟"
- أضف معلمة كيان بالقيم التالية:
- اسم المعلمة:
مدينة جغرافية
- قيمة:#الموقع الجغرافي المدينة - أضف ردًا للمستخدم إلى قسم " إجابة”:
- "عذرًا، لكن لا يمكنني الحصول على توقعات لفترة تاريخ بالدولار في #location.geo-city" - تمكين الاستخدام webhookعلى القائمة تحقيق، إنجاز.
- احفظ الإعدادات واختبرها في وحدة التحكم:
الخطوة الخامسة: الترحيب بالمواقف غير المتوقعة والتعامل معها
الهيكل العظمي الرئيسي للوكيل جاهز، والآن يعد صنع الروبوت فكرة جيدة
استقبل المستخدم وعرف أيضًا كيفية الرد على الأسئلة غير المتوقعة.
قم بإعداد الاستجابات الافتراضية للمواقف غير المتوقعة
إذا طرح المستخدم سؤالاً غير متوقع (في حالتنا، ليس حول الطقس)، فسيقوم الوكيل بتضمين سياق للتعامل مع المواقف غير المتوقعة ( نية التراجع الافتراضية):
انتقل إلى إعداد هذا السياق، وقم بتخصيص خيارات إجابتك إذا لزم الأمر.
قم بإعداد سياق الترحيب
يمكن تخصيص التحية بطريقة مماثلة في المحتوى المقابل -
نية الترحيب الافتراضية
الخطوة السادسة: إطلاق البوت
ربط بوت 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).
يتم تبادل الرسائل في شكل طلبات. ويبين الجدول التالي أمثلة على بعض منها.
تنقسم جميع الطرق (وهناك الكثير منها) إلى مجموعات:
- تلقي التحديثات والمعلومات.
- عمل الدردشة.
- إرسال العناصر المختلفة.
- العمل مع الملصقات.
- تحديث الرسائل.
- الوضع المضمن.
- وظيفة الدفع.
- للألعاب.
لا يوجد حتى الآن التوثيق الكامل لواجهة برمجة تطبيقات 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 طرق لتقديم الطلب:
- الطلب في URL
- application/x-www-form-urlencoded
- application/json (غير مناسب لتحميل الملفات)
- بيانات متعددة الأجزاء/النموذج (لرفع الملفات)
تتوفر طلبات 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 جديد من البداية ليس بالأمر الصعب. تبدأ الصعوبات في لحظة البرمجة، لكننا سنتحدث عن ذلك في مقالات أخرى.