مساء الخير
هناك الكثير من المقالات حول موضوع روبوتات Telegram ، لكن القليل منهم يكتبون عن مهارات Alice ، ولم أجد أي معلومات حول كيفية إنشاء روبوت واحد ، لذلك قررت أن أشارك تجربتي حول كيفية إنشاء روبوت Telegram بسيط ومهارة Yandex.Alice للموقع وجود وظيفة واحدة.
لذلك ، لن أخبركم كيف ترفعون خادم الويب والحصول على شهادة SSL ، لقد كتب ما يكفي عن ذلك.
إنشاء بوت Telegram
أولاً ، قم بإنشاء بوت Telegram ، لهذا ، انتقل إلى Telegram وابحث عن BotFather بوت هناك.


اختيار / newbot

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

والخطوة التالية هي إخبار خوادم Telegram عن الخادم لإرسال البيانات من الروبوت إلى. للقيام بذلك ، قم بعمل رابط للنموذج:
https: //api.telegram.org/bot______/setWebhook?url=https://_________
___ TOKEN ___ استبدل برمز bot الذي تم استلامه مسبقًا
_____ يتم استبدال PATH_DO_SCRIPT ___ بعنوان البرنامج النصي على الخادم الخاص بنا حيث ستتم معالجة البيانات (على سبيل المثال ،
www.my_server.ru/webhook_telegram.php ).
هناك مشكلة ، خادم api.telegram.org قيد القفل ، ولكن يمكنك القيام بذلك: استئجار أرخص خادم حيث لا توجد قيود وإعطاء الأمر من وحدة التحكم في هذا الخادم
wget _______
هذا كل شيء ، يتم إنشاء بوت Telegram وتوصيله بخادمك.
خلق مهارة ل Yandex.Alice
دعنا ننتقل إلى إنشاء مهارة Yandex.Alice.
لإنشاء مهارة ، تحتاج إلى الانتقال إلى صفحة مطوري Yandex.Dialogs ،
صفحة مطوري Yandex.Dialogs ، انقر فوق "إنشاء حوار" واختر "Skill in Alice".

يفتح مربع حوار إعدادات المهارة.

نبدأ في إدخال إعدادات المهارة.
أدخل اسم المهارات الخاصة بك.

يجب تحديد اسم التنشيط بعناية فائقة بحيث تتفهمه أليس بشكل صحيح ، من الفروق الدقيقة - يمكن لتطبيقات الهاتف المحمول مع أليس وأعمدة مثل Yandex.Station أو Irbis A أن تتفهم الكلمات بطرق مختلفة.
ندخل المسار إلى البرنامج النصي على الخادم الخاص بنا بنفس الطريقة بالنسبة لبرنامج Telegram ، ولكنه سيكون نصًا
مخصصًا لـ Alice ، على سبيل المثال
www.my_server.ru/webhook_alice.php .

نختار الصوت الذي ستتحدثه المهارة ، أفضل صوت أليس.

إذا كنت تخطط للعمل فقط على الأجهزة المحمولة أو في المستعرض ، فحدد "احتاج إلى جهاز به شاشة".
بعد ذلك ، أدخل إعدادات كتالوج مهارات Alice. إذا كنت تخطط لاستخدام كلمة العلامة التجارية للتنشيط ، فأنت بحاجة إلى متابعة التحقق من موقع العلامة التجارية في خدمة webmaster.yandex.ru.

باستخدام الإعدادات ، انتقل إلى البرامج النصية.
النصي برقية البوت
لنبدأ بالنص البرمجي لـ Telegram.
نقوم بتوصيل المكتبة حيث ستتم معالجة رسائل bot و Alice:
include_once 'webhook_parse.php';
وضعنا الرمز المميز للبوت لدينا:
$tg_bot_token = "_____YOUR_BOT_TOKEN_____";
نحصل على البيانات:
$request = file_get_contents('php://input'); $request = json_decode($request, TRUE);
نقوم بتحليل البيانات إلى متغيرات:
if (!$request) { die();
الآن يمكنك العمل مع المتغيرات:
الرموز $ - الآن كل الكلمات التي أدخلها المستخدم هنا
user_id $ - هنا هو معرف المستخدم
$ msg_chat_id - الدردشة التي تلقى فيها البوت أمرًا
msg_user_name $ - اسم المستخدم
بعد ذلك ، ندعو وظيفة Parse_Tokens للمعالجة:
$Out_Str = Parse_Tokens($tokens);
ونرسل الجواب:
Send_Out($user_id, $Out_Str);
وظيفة Send_Out بسيطة وتبدو كما يلي:
function Send_Out($user_id, $text, $is_end = true) { global $tg_bot_token; if (strlen($user_id) < 1 || strlen($text) < 1) {return;} $json = file_get_contents('https://api.telegram.org/bot' . $tg_bot_token . '/sendMessage?chat_id=' . $user_id . '&text=' . $text); }
النصي المهارة ل Yandex.Alice
الآن ، دعنا ننتقل إلى البرنامج النصي الخاص بـ Alice ، كما هو الحال تقريبًا بالنسبة لـ Telegram.
نقوم أيضًا بتوصيل المكتبة حيث ستتم معالجة الرسائل من bot و Alice ، بالإضافة إلى مكتبة بها فصول لـ Alice:
include_once 'classes_alice.php'; include_once 'webhook_parse.php';
نحصل على البيانات:
$data = json_decode(trim(file_get_contents('php://input')), true);
نقوم بتحليل البيانات إلى متغيرات:
if (isset($data['request'])) {
هنا المتغيرات الضرورية أقل قليلاً:
الرموز $ - الآن كل الكلمات التي أدخلها المستخدم هنا
user_id $ - هنا هو معرف المستخدم
يقوم برنامج Yandex بفحص المهارات المنشورة باستمرار ، وأضفت خطًا لإنهاء البرنامج النصي فورًا دون بدء معالجة الرسالة كاملة:
if (strpos($tokens[0], "ping") > -1) {Send_Out("pong", "", true);}
نحن ندعو وظيفة Parse_Tokens للمعالجة ، وهي نفس وظيفة Telegram:
$Out_Str = Parse_Tokens($tokens);
ونرسل الجواب:
Send_Out($user_id, $Out_Str);
وظيفة Send_Out أكثر تعقيدًا هنا:
function Send_Out($user_id, $out_text, $out_tts = "", $is_end = false) { global $data_msg_sess_id, $user_id;
الانتهاء من السيناريو لأليس.
تم تنفيذ البرنامج النصي للمعالجة Parse_Tokens نفسه بحتة على سبيل المثال ، يمكنك القيام بأي عمليات تدقيق ومعالجة هناك.
function Parse_Tokens($tokens) { $out = "";
إذا كنت بحاجة إلى التواصل مع مستخدم ذي نموذج أكثر تعقيدًا من سؤال وجواب ، فستحتاج إلى الحفظ في قاعدة البيانات (على سبيل المثال mysql) $ user_id للمستخدم والبيانات التي تم تلقيها بالفعل من المستخدم وتحليلها في وظيفة Parse_Tokens.
في الواقع ، هذا كل شيء تقريبًا ، إذا تم تنفيذ كل شيء بشكل صحيح ، فإن Telegram bot متاحة بالفعل ، ويمكن التحقق من مهارة Alice من خلال
dialogs.yandex.ru/developer ، والانتقال إلى مهارتك الجديدة في علامة تبويب الاختبار.

إذا كان كل شيء يعمل بشكل صحيح ، يمكنك إرسال المهارة إلى الإشراف من خلال النقر على زر "الاعتدال".
الآن لديك روبوتان لمنصات مختلفة تعمل بنفس الطريقة.
وثائق خدمة Yandex.Dialog
هنايتم نشر البرامج النصية الكاملة على
تحميل جيثب.
تحديث: ملفوفة كل شيء في الفصول وتحديث مستودع على جيثب