بعض ميزات تنمية المهارات لأليس



هل تعيش في موسكو وتقود سيارتك؟ إذا كان الأمر كذلك ، كيف تدفع ثمن وقوف السيارات؟ إرسال الرسائل القصيرة؟ الدفع من خلال التطبيق موسكو وقوف السيارات؟ استخدام الروبوت في برقية؟ "هذا كله غير مريح" ، قررت ، وخلق مهارتي لأليس لدفع ثمن وقوف السيارات عن طريق الصوت. بالإضافة إلى ذلك ، بنيت أليس بالفعل في Yandex.Navigator. الآن يمكنك فقط إخبار Navigator بشيء مثل "Alice ، اطلب من Moscow Parking وقوف السيارات 3209 لمدة 30 دقيقة ."

ماذا واجهت عند تطوير مهارة؟

الجلسة


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

في جملة واحدة ، يوجد حل من مطوري Alice - عليك أن تقول ، "Alice تطلب المهارة للقيام بهذا وكذا ." ومع ذلك ، فإن مثال الثعبان من مطوري Alice لا يدعم مثل هذا إطلاق المهارات:

if req['session']['new']: # -  return 

في كل مرة يتم إطلاق مهارة ، بما في ذلك وبأمر "أليس تطلب مهارة ..." ، تكون قيمة session.new حقيقية . لذلك ، لن يتم تنفيذ جميع التعليمات البرمجية المعالجة. الحل هو التحقق من نص session.command - يجب أن يكون فارغًا.

بالمناسبة ، إذا كنت قد "دخلت" مهارة ، فبشكل افتراضي لجميع المهارات ، تدعم Alice عبارات الخروج - "Alice ، أوقفها" و "Alice ، عد". إذا كنت ترغب في إنهاء الجلسة بالقوة ، فستحتاج إلى اجتياز جلسة نهاية مساوية لـ True في الاستجابة. لكن هذا يعمل فقط مع Yandex.Station - على الأجهزة الأخرى ، لا يعمل الخروج من المهارة في هذه الحالة.

العمل مع الأرقام


مهارتي هي العمل مع الأرقام - أولاً التعرف على رقم هاتف المستخدم ، ثم التعرف على رقم وقوف السيارات.

في المثال أعلاه من ياندكس المستخدمة

 req['request']['original_utterance'].lower() 

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

 s.replace(' ', '32').replace(' ', '31').replace('', '0') 

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

اتضح أن خوادم Alice تقوم بالفعل بكل شيء من أجلك (وحتى أكثر). فقط بدلاً من request.original_utterance ، تحتاج إلى استخدام request.command . نعم ، جاء ذلك في الوثائق. في تلميح الأدوات في مثال الإجابة.
مجال الخدمة: تم تحويل طلب المستخدم للمعالجة الداخلية لـ Alice. أثناء التحويل ، يتم مسح النص ، على وجه الخصوص ، من علامات الترقيم ، ويتم تحويل الأرقام إلى أرقام.
من الغريب أنه في المثال من مطوري Alice (الرابط أعلاه) ، يتم استخدام النص الأصلي ( request.original_utterance ). في الواقع ، يتم عمل المزيد في request.command (وهو غير موصوف في الوثائق). على سبيل المثال ، يتم تحويل رقم الهاتف إلى التنسيق (916) 123-45-67 - الآن يمكن للمستخدم الذي يتمتع بمهاراتي الاتصال بالهاتف بأي تنسيق مناسب له. أيضا ، عبارة "Alice ، اطلب مثل هذه المهارة" ، يتم قطع رسائل "Alice" ، يتم تصحيح الأخطاء المطبعية.

من جانب Alice ، يمكن تحويل الأجزاء الفردية من الاستعلامات (الأرقام والأسماء والعناوين والتواريخ) إلى الكيانات المسماة . لكنه يعمل غريب. طلب 79161234567 1234 ، في الكيانات المسماة تحويلها إلى رقمين - 791612345 70 و 1234 . لماذا تبين أن الرقم الأول مختلف ، لم يكن من الممكن معرفة ذلك. دعم Yandex.Dialog لا يزال يفكر في الإجابة.

وقت استجابة المهارة


تنتظر أليس استجابة من المهارة في غضون 3 ثوانٍ (لدى Google هذا الحد - 5/10 ثانية ). مهارتي هي الوصول إلى خوادم الطرف الثالث لبدء وإنهاء وقوف السيارات. يجيبون ببطء. في بعض الأحيان في 3 ثوانٍ ، لا يتوفر لدى مهارتي الوقت لإعطاء إجابة. بشكل فردي ، لم يكن من الممكن زيادة وقت الاستجابة للمهارة. لذلك ، في بعض الحالات ، كان من الضروري التضحية بالراحة - على سبيل المثال ، في بداية وقوف السيارات ، لا تطلب المهارة السيارة الفعلية المحددة في ملف تعريف تطبيق مواقف موسكو ، ولكنها تستخدم السيارة التي احتفظت بها أثناء ترخيص المستخدم.

حسنا ، على حقوق "أنا العلاقات العامة" ؛) -

Source: https://habr.com/ru/post/ar471388/


All Articles