في نهاية الشهر الماضي ، تم إصدار مساعد Google
رسميًا باللغة الروسية ، لذلك حان الوقت لمعرفة كيفية إنشاء تطبيقاتك (
الإجراءات ) الخاصة بالمساعد على حزمة تكنولوجيا Google القياسية. في هذه المقالة ، سننظر في إنشاء إجراء في
Actions on Google ، وتحليل عملية استخراج الكيانات والنوايا من عبارات في
Dialogflow ، وتعلم كيفية كتابة معالجات للمعلومات المستخرجة والعمل مع شبكة في
Cloud Functions for Firebase .
التين. 1. بنية التطبيق للمساعد.بدأ تطوير المساعد في التطور مؤخرًا نسبيًا ، لذلك تحتوي الشبكة على القليل من المواد ، ويزيد عدد الأدوات والتقنيات المستخدمة بشكل كبير من حد الدخول. هذه المقالة ، على الرغم من أنها لا تحل ، ولكنها تساهم على الأقل في حل هذه المشاكل. لنبدأ ببنية التطبيق للمساعد (الشكل 1) ، التي يتم تنفيذها على مكدس Google التكنولوجي القياسي:
- Actions on Google هو نظام أساسي لإنشاء تطبيقات لمساعد Google.
- Dialogflow - محرك NLU (فهم اللغة الطبيعية) ، المسؤول عن معالجة اللغات الطبيعية ومربعات حوار التصميم.
- وظائف السحابة لـ Firebase (من أجل الراحة ، سنستخدم اختصار وظائف Firebase) - وظائف السحابة لمعالجة المنطق المعقد لتفاعل المستخدم والعمل مع خدمات الطرف الثالث. تتفاعل وظائف Firebase و Dialogflow عبر الرد التلقائي على الويب ، لذا يمكن استخدام أي حل خادم آخر تقنيًا. ومع ذلك ، تعد وظائف Firebase بديلاً جيدًا ، وأحيانًا بديلًا عن الواجهة الخلفية الخاصة بها. يسمح لك بإنشاء الخدمات وتشغيلها على البنية التحتية لـ Google ، دون القلق بشأن تخصيص الخوادم أو تغيير حجمها أو إدارتها. من ناحية ، يسمح لك هذا بالتركيز على مكون المنتج لتطوير ووظيفة الخدمة ، دون إضاعة الوقت في مهام البنية التحتية والإدارة. ولكن من ناحية أخرى ، كقاعدة ، يستلزم التفويض إضعاف السيطرة على الوضع.
تركز المقالة على الجانب التقني من التنمية ؛ لن يتم تحليل تكلفة استخدام الخدمات المدرجة.
التين. 2. تفاعل مكونات مساعد Google (بناءً على المادة: Google Home and Google Assistant Workshop ).داخل المكدس الموصوف ، يبدو منطق الإجراء كما يلي (الشكل 2):
- يصل المستخدم إلى تطبيق مساعد Google ويبدأ محادثة بإجراء محدد.
- يعمل مساعد Google من خلال Actions on Google على ترجمة كل عبارة مستخدم بتنسيق نصي في Dialogflow ، بالإضافة إلى توفير معلومات حول المستخدم نفسه (بناءً على طلب مسبق وبموافقة المستخدم) والمحادثة الحالية .
- يعالج Dialogflow العبارة المستلمة ، ويستخرج المعلومات الضرورية منها ، ويتخذ قرارات بشأن الإجابة التي سيتم إنشاؤها على أساس ML.
- في بعض الحالات ، قد يفوض Dialogflow تكوين استجابة للخادم في وظائف Firebase ، والتي بدورها يمكنها استخدام خدمات الجهات الخارجية للحصول على المعلومات اللازمة للاستجابة.
- بعد تكوين الإجابة ، يُعيدها Dialogflow إلى Actions on Google ، حيث يدخل تطبيق Google Assistant.
فكرة
سيحدد إجراءنا بالعبارة أي نوع من صور gif التي يريد المستخدم رؤيتها ، ثم سيبحث عنها من خلال واجهة برمجة تطبيقات GIPHY ويعيدها إلى المستخدم في شكل بطاقات. عند تنفيذ الإجراء ، سنقوم بتحليل حل المهام التالية:
- قم بإعداد وربط الإجراءات على Google و Dialogflow ووظائف Firebase.
- استخرج الكلمات الرئيسية من عبارات المستخدم (Dialogflow).
- مربع حوار البرمجة النصية (Dialogflow).
- العمل مع سياق الحوار (Dialogflow).
- إنشاء ربط ويب وربطه لإنشاء استجابة لعبارة مستخدم (Dialogflow ، Firebase Function).
- عرض رف البطاقات في الواجهة (وظائف Firebase).
- تنزيل المعلومات من خدمة طرف ثالث (وظائف Firebase).
الإعداد الأولي
التين. 3. إنشاء وكيل Dialogflow.بادئ ذي بدء ، نحن بحاجة إلى حساب جوجل. لنبدأ بإنشاء مشروع في Dialogflow ، لهذا ، في
وحدة التحكم ، انقر فوق الزر إنشاء وكيل واملأ الحقول المطلوبة (الشكل 3):
- اللغة الافتراضية هي "الروسية - رو".
- المنطقة الزمنية: "(GMT + 3: 00) Europe / Moscow".
- Google Cloud Project: سيتم إنشاء GCP جديد لوكيل Dialogflow تلقائيًا ، أو يمكنك اختيار أحد مشروعات GCP الحالية ، إن وجدت.
ثم انقر فوق الزر إنشاء في الزاوية اليمنى العليا وانتظر وحدة التحكم لتكوين مشروع جديد.
التين. 4. المقاصد القياسية.بشكل افتراضي ، عند إنشاء وكيل Dialogflow ، يتم إنشاء نيتين (الشكل 4):
- "هدف الترحيب الافتراضي" - مسؤول عن تحية المستخدم ؛
- "Default Fallback Intent" - يعالج العبارات غير المعروفة التي لا يمكن لـ Dialogflow أن ينسبها إلى أي أهداف أخرى.
لقد تم بالفعل وصف إنشاء الحوارات في Dialogflow بالتفصيل في المقالات
هنا وهنا وهنا ، لذلك لن أركز على مبدأ عملها.
التين. 5. إجابات "هدف الترحيب الافتراضي".سنضيف بعض إجابات الترحيب إلى "هدف الترحيب الافتراضي" الذي سيساعد المستخدم على فهم الغرض من الإجراء والوظائف التي يمكنه القيام بها. في قسم "الردود" ، حدد علامة التبويب "مساعد Google" ، وفي "سفن الاقتراحات" سنكتب أمثلة على العبارات لنخبر المستخدم بكيفية التواصل مع الإجراء (الشكل 5).
يمكن تصحيح الإجراء في مساعد Google على الهاتف وفي المحاكي الرسمي. لفتح المحاكي ، تحتاج إلى الانتقال إلى قسم "التكامل" في بطاقة "مساعد Google" ، انقر فوق الزر "إعدادات التكامل" وانقر على "إدارة تطبيق المساعد". في كل من الهاتف والمحاكي ، يمكن تشغيل الإجراء بعبارة الرمز "Ok Google ، أريد التحدث مع تطبيق الاختبار الخاص بي".
السيناريو الأساسي: بحث GIF
أنشئ هدف بحث جديدًا ، والذي سيستخرج الكلمات الرئيسية من عبارة المستخدم ويرسلها عبر خادم webhook إلى وظائف Firebase. سيجد الخادم ، بدوره ، باستخدام GIPHY API صور gif المقابلة ويعيد النتيجة إلى المستخدم في شكل بطاقات.
التين. 6. إضافة عبارات التدريب.بادئ ذي بدء ، سنضيف عبارات نموذجية للتدريب في قسم عبارات التدريب (الشكل 6):
- "أريد أن أرى الزرافات الراقصة."
- "ابحث عن animashki."
- "إظهار الأختام."
- أرني صور متحركة.
- "البحث عن الفيلة المتحركة."
- "عرض صور متحركة من الباندا".
- "متحركة مع خطوط الراكون."
- "لديك أختام".
- "ابحث عن السقوط المضحك."
التين. 7. استخراج المعلمات من النص.بالنسبة إلى العبارات المضافة ، لاحظ معلمة البحث التي يجب أن يحددها Dialogflow من النص. في هذه الحالة ، يكون نوع المعلمة الأكثر ملاءمة هو
@sys.any
، نظرًا لأنه يمكن استخدام أي
@sys.any
تقريبًا
@sys.any
استعلام بحث. نسمي هذا
query
المعلمة
query
علامة عليه كما هو مطلوب (الشكل 7).
التين. 8. قائمة الأسئلة الرائدة.في القسم الفرعي "Prompts" ، سنكتب أسئلة توضيحية توضح Dialogflow ما إذا كان لا يمكنه استخراج الكلمات الأساسية من العبارة (الشكل 8).
بعد ذلك ، انتقل إلى قسم "الوفاء" في أسفل الصفحة (لا يجب الخلط بينه وبين القسم الذي يحمل نفس الاسم في القائمة اليسرى). انقر فوق الزر "تمكين Fullfilment" ، ثم قم بتمكين إعداد "تمكين مكالمة عبر الويب لهذا الغرض". سيسمح هذا لـ Dialogflow بتفويض تشكيل استجابة وظائف Firebase عندما يصل إلى الهدف.
انتقل الآن إلى علامة التبويب "الوفاء" في القائمة اليسرى وقم بتشغيل "المحرر المضمن" ، حيث سنكتب منطق "هدف البحث" الذي تم إنشاؤه حديثًا. للبحث عن ملفات GIF حسب الكلمات الرئيسية ، سنستخدم الطلب
https://api.giphy.com/v1/gifs/search ، والذي يعرض قائمة بالأشياء التي تم العثور عليها بتنسيق JSON وفقًا
للمواصفات . سيتم عرض الرد الذي تم تلقيه من GIPHY في شكل
كاروسيل التصفح -
كاروسيل من البطاقات مع الصور ، عند النقر ، تفتح صفحة ويب. في حالتنا ، عندما تنقر على البطاقة ، سيذهب المستخدم إلى صفحة خدمة GIPHY مع هذه الرسوم المتحركة وقائمة من الرسوم المتحركة المماثلة.
الكود الذي ينفذ الوظيفة الموضحة أعلاه موضح أدناه.
'use strict'; const GIPHY_API_KEY = 'API_KEY'; const SEARCH_RESULTS = [ '-, .', ', .', ', !' ];
التبعيات { "name": "dialogflowFirebaseFulfillment", "description": "This is the default fulfillment for a Dialogflow agents using Cloud Functions for Firebase", "version": "0.0.1", "private": true, "license": "Apache Version 2.0", "author": "Google Inc.", "engines": { "node": "~6.0" }, "scripts": { "start": "firebase serve --only functions:dialogflowFirebaseFulfillment", "deploy": "firebase deploy --only functions:dialogflowFirebaseFulfillment" }, "dependencies": { "actions-on-google": "2.0.0-alpha.4", "firebase-admin": "^4.2.1", "firebase-functions": "^0.5.7", "dialogflow": "^0.1.0", "dialogflow-fulfillment": "0.3.0-beta.3", "request": "^2.81.0", "request-promise": "^4.2.1" } }
نظرًا لأنه يمكن للمستخدم الوصول إلى نفس النية عدة مرات ، فمن المستحسن إعادة الإجابات المختلفة إليه. وللقيام بذلك ، استخدمنا كائن جزيء Talk.data ، الذي يحتفظ بقيمته عند الوصول إلى القصد مرة أخرى ، وعند الإشارة إلى النصوص البرمجية الأخرى للمحادثة.
التين. 9. بدء المحادثة (يسار) ، وصقل معلمات البحث وعرض النتائج (في الوسط) ، وعرض نتائج البحث لاستعلام جديد (يمين)ملاحظة: للعمل مع API لخدمات الجهات الخارجية من خلال وظائف Firebase ، تحتاج إلى تمكين الفوترة ، وإلا ، عند محاولة العمل مع الشبكة ، سيحدث خطأ:"حساب الفوترة غير مكوّن. لا يمكن الوصول إلى الشبكة الخارجية والحصص محدودة للغاية. تكوين حساب الفوترة لإزالة هذه القيود. "
للقيام بذلك ، انقر على "حساب مدفوع" في القائمة اليسرى وحدد Flame (25 دولارًا في الشهر) أو Blaze (الدفع حسب الاستخدام) من بين خطط التعرفة المقترحة. لقد اخترت الخيار الأخير ، لأنه كجزء من تطوير تطبيق اختبار ، بدا لي أكثر ربحية.السيناريو المتقدم: ترقيم الصفحات
في معظم الحالات ، بالنسبة إلى استعلام البحث ، سيجد GIPHY أكثر من عشرة ملفات GIF بشكل ملحوظ ، لذلك سيكون من الصحيح السماح للمستخدم برؤية نتيجة البحث بالكامل ، أي أضف ترقيم الصفحات.
في وحدة تحكم Dialogflow ، مرّر مؤشر الماوس فوق خلية "هدف البحث". ستظهر عدة أزرار على اليمين ، انقر على "إضافة هدف المتابعة". سيسمح لنا ذلك بإنشاء فرع محادثة يتبع هدف البحث. من بين عناصر القائمة المنسدلة ، نختار "المزيد" - وهو معيار جاهز لبدء عرض معلومات إضافية.
التين. 10. سياق القصد هو "القصد من البحث - المزيد".دعنا نذهب إلى الهدف الذي تم إنشاؤه حديثًا وإجراء تغييرات على قسم "السياق". نظرًا لأنه يمكن للمستخدم طلب عرض المزيد من صور GIF عدة مرات متتالية ، يجب أن يتم استدعاء هذا الهدف بشكل متكرر. لهذا ، في السياق الصادر ، من الضروري تسجيل نفس الخط المشار إليه في الوارد (الشكل 10). في قسم "Fullfilment" ، يجب أيضًا تمكين إعداد "تمكين مكالمة عبر الويب لهذا الغرض".
لنعد الآن إلى "Fillfulment" من القائمة الجانبية ، حيث نقوم بتهيئة معالج "Search Intent - more". نضيف أيضًا معلمة
offset
إلى وظيفة
search
، والتي سيتم استخدامها لترقيم الصفحات في واجهة برمجة تطبيقات GIPHY.
const SEARCH_RESULTS_MORE = [ ' !', ', .', ', . , .' ]; function search(conv, query, offset) {
التين. 11. ترقيم الصفحات عند البحث عن صور متحركة.النتيجة
يتم عرض فيديو العمل أدناه.
رمز المشروع وتفريغ مساعد متاح في
جيثب .
تعليمات تثبيت المشروع واستيراد المكب- انتقل إلى وحدة تحكم Dialogflow وقم بإنشاء وكيل جديد أو حدد وكيلًا موجودًا.
- انقر على أيقونة الإعدادات ، وانتقل إلى قسم "التصدير والاستيراد" وانقر على الزر "استعادة من ZIP". حدد ملف ZIP من الدليل الجذر للمستودع.
- حدد "الوفاء" من قائمة التنقل اليسرى.
- شغّل إعداد "Inline Editor".
- انسخ محتويات الملفات من دليل
functions
إلى علامات التبويب المناسبة في "الوفاء". - أدخل مفتاح الوصول إلى GIPHY API في علامة التبويب index.js .
- انتقل إلى وحدة تحكم Firebase وغير خطتك إلى Flame أو Blaze. لا يتوفر العمل مع خدمات الطرف الثالث عبر الشبكة مع خطة تعرفة مجانية.