كيف قمت بتدريس Yandex.Alice للحديث عن اللعب الجنسية

ندمج Yandex.Alisa ومحلات الجنس من خلال Spring Spring.

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

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

يتكون التكامل من جزأين:

  • تكامل خدمة الويب و REST API لموردي البضائع.
  • تكامل Yandex.Alice وخدمة الويب لمعالجة طلبات المستخدمين.

تكامل خدمة الويب و REST API لموردي البضائع


يجب أن تفهم الخدمة بالضبط ما طلبه المستخدم وطلب هذه البيانات من خادم المورد. قررنا أن نكتب خدمة على Spring Boot.

إعداد المشروع


ننشئ مستودعًا في Git وباستخدام spring initializr نقوم بنشر المشروع في برنامج spring spring (نحدد الويب في التبعيات).

يأتي الطلب إلى الخدمة بتنسيق JSON. يحتوي على بنية موثقة جيدًا ، لذا فإن إنشاء الطبقات بسيط جدًا:

صورة

ملائمًا ، يتم تمييز الكلمات الرئيسية في الطلب ، مثل عنوان معترف به. تقع في كتلة “entities” :

صورة

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

تم تنفيذ التكامل مع الموفر من خلال مكتبة أباتشي httpclients ، وإلغاء تسلسل استجابة XML من خلال jaxb.

لذلك ، قمنا بفرز الطلب وطلب البيانات من المورد. لكن أليس فتاة صارمة ، وبالتالي لن تقبل إجابتنا بعد ثلاث ثوانٍ. وقد يرغب المستخدم في الحصول على وصف مقارن لمتجره على مدار العامين الماضيين ، الأمر الذي سيستغرق المزيد من الوقت. لحل هذه المشكلة ، قمنا بتمكين التخزين المؤقت من خلال مكتبة ehCache وقمنا بتهيئة تحميل بيانات المستخدم. واجه فارقًا بسيطًا: لا تعطي Alice أي بيانات مستخدم مخصصة تقريبًا. وهذا يعني أنك لا ترى حتى البريد الإلكتروني في الطلب الوارد. لا يوجد سوى userId الذي يعرض المعرف الفريد للجهاز. تم جعله المفتاح لتحديد المستخدمين.

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

لاختبار كامل ومزيد من العمل في prod ، قررنا نشر التطبيق في السحابة على Heroku. للقيام بذلك ، انتقل إلى موقع Heroku على الويب وقم بالتسجيل وتنزيل heroku cli وتثبيته. ثم افتح وحدة التحكم وأدخل heroku login . انتقل إلى الدليل باستخدام القرص المضغوط للمشروع ~ / myapp وتنفيذ heroku create .

عند إنشاء التطبيق ، ينشئ Git مستودعًا عن بُعد يسمى heroku ، وهو مرتبط بمستودع Git المحلي. افتراضيًا ، ينشئ Heroku اسمًا عشوائيًا على الخادم لمشروعك. يمكنك استبداله بتمرير اسم التطبيق باستخدام heroku create myapp .

للتحقق من إطلاق التطبيق ، قم بتنفيذ الأمر.

heroku ps:scale web=1

وإذا كنت بحاجة إلى السير على طول المسار "/" ، فإننا ننفذ heroku open .
نقطة التكامل الأولى جاهزة.

تكامل Yandex.Alice وطلب خدمة المعالجة


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

صورة

في علامة التبويب "الإعدادات" وتحتاج إلى ملء الحقول:

صورة

  • اسم المهارة - الاسم الذي سيتم عرضه في كتالوج أليس. باستخدامه ، سيكون المستخدم قادرًا على تنشيط المهارة ، على سبيل المثال ، "إطلاق المهارة [اسم المهارة]".
  • اسم التنشيط - هنا يمكنك تحديد خيارات متعددة للوصول إلى المهارة. افتراضيًا ، هناك خيار واحد لاسم التنشيط هو اسم المهارة.
  • مثال على الطلب عبارة عن عبارة تقوم أليس بتنشيط هذه المهارة بها. سيتم تقديم الطلبات كأزرار في الدليل بعد النشر.
  • Webhook URL - يجب عليك تحديد عنوان URL لخدمة الويب الخاصة بنا والذي سيعالج طلبات المستخدمين.
  • Yandex.Cloud - يمكن لـ Yandex تقديم منحة إلى السحابة الخاصة بها ، لكننا سننشر الخدمة على heroku ، لذلك نحن لا نضع علامة عليها.
  • صوت - هنا يمكنك اختيار الصوت الذي ستتحدثه مهارتك. هناك اختلافات مختلفة من الذكور والإناث. لكن تجدر الإشارة إلى أن المستخدم سيقول على الأرجح: "أليس ، أطلق المهارة" ، وإذا كانت "أليس" تجيب على الباريتون الذكري ، فقد يكون هذا مربكًا إلى حد ما.
  • القيود المفروضة على المنصات المستخدمة - ما إذا كانت الشاشة مطلوبة عند العمل بمهارة. في حالتنا ، لا ، لذلك لا تضع علامة.
  • الخصوصية - حدد المربع إذا كنت لا تريد أن تنعكس المهارة في الكتالوج.
  • موقع التحقق من العلامة التجارية - عنوان موقع المهارة. سيتم الإشراف على المهارة التي ملأت بها هذا الحقل فقط إذا كنت قد أكدت حقوق الموقع المحدد في Yandex.Webmaster.
  • الفئة - في حالتنا ، هو "الأعمال التجارية والمالية".
  • الوصف - لماذا تحتاج مهارتك. سيتم عرض وصف المهارات في كتالوج المهارات وسيكون متاحًا للمستخدمين.
  • ملاحظات للمشرف - ربما الحقل الأكثر إثارة للاهتمام. للوصول إلى الكتالوج ، يجب أن تكون المهارة خاضعة للإشراف ، مما يعني أنه يجب أن يتوافق مع بعض القواعد الموضحة هنا. في هذا المجال ، يمكنك وصف عملية الاختبار. على سبيل المثال ، كيفية الحصول على إذن وسيناريو مستخدم نموذجي واحد.
  • قيود السن - على الرغم من موضوع المهارة ، سننقل البيانات المناسبة لأي فئة عمرية. لذلك ، لا تضع علامة.
  • أيقونة أمر لا بد منه :)

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

نحن تكوين التكامل ، وكتب الخدمة ، والآن يمكنك اختباره.

انتقل إلى علامة التبويب "اختبار".

صورة

هنا يمكنك التحقق من أداء المهارة. من أجل الراحة ، أضفنا وصولاً سريعًا إلى أزرار الوظائف للمهارة.

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

صورة

بعد الإشراف ، سيظهر الزر نشر بدلاً من هذا الزر. بعد النشر ، ستظهر المهارة في كتالوج ياندكس الرسمي.

الميزات والقيود


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

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

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


All Articles