لعبة التدريب على التهجئة باستخدام Google Assistant وCloud Firestore

1. نظرة عامة

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

يغطي هذا الدرس التطبيقي حول البرمجة مفاهيم المستوى المتوسط ​​للتطوير باستخدام Google Assistant وCloud Functions وCloud Firestore. في هذا الدرس التطبيقي حول البرمجة، ستنشئ لعبة تسمى "Spelling Practice" تستخدم مساعد Google لمطالبة المستخدمين بتهجئة الكلمات.

ما سوف تبنيه

في هذا الدرس التطبيقي حول البرمجة، ستنشئ لعبة متطورة تتضمن الوظائف التالية:

  • يتلقى استجابات إملائية من المستخدم، ويعدل مطالبات المحادثة، اعتمادًا على القيمة
  • يستجيب للتلميحات المتعلقة بتهجئة الكلمة، مثل تعريفها أو تكرار الكلمة
  • ينشئ حلقة لعبة حتى يتمكن المستخدم من التفاعل مع المساعد مرة أخرى بعد تهجئة الكلمة

قبل البدء في الإنشاء، يمكنك التفاعل مع الإجراء المباشر على جهازك الذي يدعم مساعد Google من خلال قول "مرحبًا Google، تحدث إلى Spelling Practice". يبدو المسار الافتراضي من خلال هذا الإجراء للمستخدم العائد كالتفاعل التالي:

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

2e9f94dc0ceafc96.png

ما ستتعلمه

  • كيفية التفاعل مع Cloud Firestore
  • كيفية استخدام الفتحات لجمع البيانات من المستخدم
  • كيفية معالجة مدخلات المستخدم وإرجاع الرد
  • كيفية استخدام الشروط لإضافة المنطق إلى المشهد
  • كيفية إضافة حلقة اللعبة

ماذا ستحتاج

تتضمن المتطلبات الأساسية لهذا الدرس التطبيقي حول التعليمات البرمجية ما يلي:

  • متصفح ويب، مثل Google Chrome
  • بيئة تطوير متكاملة (IDE) لكتابة الوظائف السحابية.
  • طريقة الدفع. يستخدم هذا الدرس التطبيقي للبرمجة وظائف السحابة في Firebase والتي تتطلب أن يكون مشروعك مدرجًا في خطة تسعير Firebase Blaze ( معرفة المزيد ).
  • محطة لتشغيل أوامر الصدفة
  • Node.js 10 أو الأحدث

2. احصل على رمز الوظائف

انسخ مستودع GitHub من سطر الأوامر:

$ git clone https://github.com/FirebaseExtended/codelab-actions-firestore

3. أنشئ مشروع Firebase وقم بإعداد تطبيقك

إنشاء مشروع Firebase

  1. قم بتسجيل الدخول إلى Firebase .
  2. في وحدة تحكم Firebase، انقر على إضافة مشروع (أو إنشاء مشروع )، ثم قم بتسمية Spelling-Practice لمشروع Firebase .

66ae8d1894f4477.png

  1. انقر فوق خيارات إنشاء المشروع. اقبل شروط Firebase إذا طُلب منك ذلك. تخطي إعداد Google Analytics، لأنك لن تستخدم Analytics لهذا التطبيق.

لمعرفة المزيد حول مشاريع Firebase، راجع فهم مشاريع Firebase .

الترقية إلى خطة تسعير Blaze

لاستخدام Cloud Functions for Firebase، ستحتاج إلى ترقية مشروع Firebase الخاص بك إلى خطة تسعير Blaze ، مما يعني أنك ستربط حساب فوترة Google Cloud بمشروعك. يتطلب هذا منك تقديم بطاقة ائتمان أو طريقة دفع أخرى.

لا تزال جميع مشاريع Firebase، بما في ذلك تلك الموجودة في خطة Blaze، تتمتع بإمكانية الوصول إلى حصص الاستخدام المجانية لوظائف السحابة. ستقع الخطوات الموضحة في هذا الدرس التطبيقي حول التعليمات البرمجية ضمن حدود الاستخدام بدون تكلفة. ومع ذلك، ستلاحظ رسومًا بسيطة ( حوالي 0.03 دولارًا أمريكيًا ) من Cloud Storage، والتي تُستخدم لاستضافة صور إنشاء وظائف السحابة الخاصة بك.

4. قم بتثبيت Firebase CLI

تمكنك Firebase CLI (واجهة سطر الأوامر) من نشر وظائف السحابة الخاصة بك.

هناك العديد من الخيارات لتثبيت Firebase CLI اعتمادًا على نظام التشغيل وحالة الاستخدام لديك. تصف الخطوات التالية الخيار الأكثر شيوعًا إذا كنت تستخدم Cloud Functions أيضًا.

  1. تأكد من تثبيت npm الذي يأتي عادةً مع Node.js.
  2. قم بتثبيت أو ترقية واجهة سطر الأوامر (CLI) عن طريق تشغيل الأمر npm التالي:
$ npm -g install firebase-tools
  1. تحقق من تثبيت واجهة سطر الأوامر (CLI) بشكل صحيح عن طريق تشغيل:
$ firebase --version

تأكد من أن إصدار Firebase CLI هو 9.0.0 أو أحدث بحيث يحتوي على أحدث الميزات المطلوبة لوظائف السحابة. إذا لم يكن الأمر كذلك، فقم بتشغيل npm install -g firebase-tools للترقية كما هو موضح أعلاه.

  1. قم بتخويل Firebase CLI عن طريق تشغيل:
$ firebase login
  1. من دليل بدء وظائف التدقيق الإملائي، قم بإعداد واجهة سطر أوامر Firebase لاستخدام مشروع Firebase الخاص بك. قم بتشغيل الأمر التالي، وحدد معرف المشروع الخاص بك، ثم اتبع التعليمات. عندما يُطلب منك ذلك، يمكنك اختيار أي اسم مستعار، مثل codelab على سبيل المثال.
$ firebase use --add

5. دليل الوظائف

ستضيف الآن وظيفة باستخدام Firebase SDK for Cloud Functions لإنشاء الواجهة الخلفية للعبة، Spelling Practice .

تتيح لك Cloud Functions الحصول على تعليمات برمجية يتم تشغيلها في السحابة دون الحاجة إلى إعداد خادم. سيوضح لك هذا الدرس التطبيقي حول التعليمات البرمجية كيفية إنشاء وظائف تتفاعل مع أحداث Firebase Authentication وCloud Storage وFirebase Realtime Database. لنبدأ بالمصادقة.

عند استخدام Firebase SDK للوظائف السحابية، سيظل رمز الوظائف الخاص بك موجودًا ضمن دليل functions (افتراضيًا). لتسهيل الأمر عليك، قمنا بالفعل بإنشاء ملف functions/index.js حيث سيتم وضع الكود الخاص بك. لا تتردد في فحص دليل functions قبل المضي قدمًا.

$ cd functions
$ ls

رمز الوظائف الخاص بك هو أيضًا تطبيق Node.js ، وبالتالي يحتاج إلى package.json الذي يوفر بعض المعلومات حول تطبيقك ويسرد التبعيات.

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

يسرد الملف package.json بالفعل اثنين من التبعيات المطلوبة: Firebase SDK for Cloud Functions و Firebase Admin SDK . لتثبيتها محليًا، قم بتشغيل npm install من دليل functions :

$ npm install

دعونا الآن نلقي نظرة على ملف index.js :

Index.js

/**
 * Copyright 2021 Google Inc. All Rights Reserved.
 * ...
 */
// TODO(DEVELOPER): Import the Cloud Functions for Firebase and Firebase Admin modules here. Also import the Actions SDK here.
// TODO(DEVELOPER): Write the getWordDetailsFromDictionaryAPI function here.
// TODO(DEVELOPER): Write the createSpellingPracticeWord function here.
// TODO(DEVELOPER): Write the app Handle getSpellingWordList function here.
// TODO(DEVELOPER): Write the app Handle getSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle repeatSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle definitionOfSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle verifySpellingWord function here.

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

6. قم باستيراد الوحدات المطلوبة

يتطلب هذا الدرس التطبيقي حول الترميز ثلاث وحدات.

  • تسمح لنا وحدة firebase-functions بكتابة المشغلات لوظائفنا السحابية
  • تسمح لنا وحدة firebase-admin باستخدام منصة Firebase على خادم يتمتع بوصول إداري، على سبيل المثال، للكتابة إلى Cloud Firestore.
  • تفي مكتبة تنفيذ Actions SDK Node.js بمعالجات Actions SDK لمساعد Google.
  1. قم بتثبيت Actions SDK عن طريق تشغيل الأمر npm التالي:
$ npm install @assistant/conversation
  1. في ملف index.js ، استبدل أول TODO بما يلي.

تقوم هذه التغييرات باستيراد كل من الوحدات المطلوبة.

كما يمكن تكوين Firebase Admin SDK تلقائيًا عند نشرها على بيئة Cloud Functions أو حاوية Google Cloud الأخرى. هذا ما يحدث عندما نستدعي admin.initializeApp(); في التغييرات أدناه.

Index.js

/**
 * Copyright 2021 Google Inc. All Rights Reserved.
 * ...
 */

// Import the Actions SDK
const {conversation} = require('@assistant/conversation');
const https = require('https');
const app = conversation();
const cors = require('cors')({origin: true});

// Import the Firebase SDK for Cloud Functions.
const functions = require('firebase-functions');
// Import and initialize the Firebase Admin SDK.
const admin = require('firebase-admin');
admin.initializeApp();
// To access Cloud Firestore
const db = admin.firestore();
// TODO(DEVELOPER): Write the getWordDetailsFromDictionaryAPI function here.
// TODO(DEVELOPER): Write the createSpellingPracticeWord function here.
// TODO(DEVELOPER): Write the shuffleWordList function here.
// TODO(DEVELOPER): Write the app Handle getSpellingWordList function here.
// TODO(DEVELOPER): Write the app Handle getSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle repeatSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle definitionOfSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle verifySpellingWord function here.

الآن دعونا نضيف منطق الأعمال باستخدام الوظائف لدعم إجراءات المساعد.

7. إنشاء وظائف

احصل على تعريفات الكلمات واكتبها في Cloud Firestore

ستستخدم واجهة برمجة التطبيقات العامة dictionaryapi.dev للحصول على تعريفات الكلمات.

في ملف index.js ، استبدل TODO لـ getWordDetailsFromDictionaryAPI بما يلي:

Index.js

// Retrieves word definition and audio pronunciation from api.dictionaryapi.dev service
// Function uses service provided by https://dictionaryapi.dev/
async function getWordDetailsFromDictionaryAPI(word) {
  let responseData="";
  let req = https.request({
    host: 'api.dictionaryapi.dev',
    port: 443,
    path:'/api/v2/entries/en/' + word,
    method:'GET'
  }, (res) => {
    res.setEncoding('utf8');
    res.on('data', d => {
        responseData+=d;
    })
    res.on('end',function(){
        let object = JSON.parse(responseData)
        const wordListRef = db.collection('wordlist');
        wordListRef.doc(object[0].word).set(
          object[0]
        );
       return responseData;
     });
  });
  req.end();
}

أضف مشغل Cloud Firestore

بعد ذلك، ستقوم بإنشاء وظيفة سحابية يتم تشغيلها عند إنشاء مستند جديد في Cloud Firestore. سوف يستدعي dictionaryapi.dev API للحصول على تعريفات الكلمات عبر وظيفة getWordDetailsFromDictionaryAPI التي كتبناها أعلاه.

في ملف index.js ، استبدل TODO الخاص بـ createSpellingPracticeWord بما يلي:

Index.js

// مشغل Firestore الذي يجلب تعريفات الكلمات من خلال getWordDetailsFromDictionaryAPI لكل مستند Firestore جديد

exports.createSpellingPracticeWord = functions.firestore
  .document('wordlist/{word}')
  .onCreate((snap, context) => {
    const newValue = snap.data();
    const word = newValue.word;
    getWordDetailsFromDictionaryAPI(word);
});

الحصول على قائمة الكلمات للعبة

يمكنك كتابة وظيفة سحابية تسترد قائمة بكلمات التدريب الإملائي من Cloud Firestore للمساعد. لهذا نستخدم معالج التطبيق.

في ملف index.js ، استبدل TODO الخاص بـ getSpellingWordList بما يلي.

تعد إضافة هذه الوظيفة إلى app.handle الخاص طريقة لجعل الوظيفة قابلة للوصول من المساعد.

Index.js

// Store the list of spelling words in Assistant session
app.handle('getSpellingWordList', conv => {
  const wordListRef = db.collection('wordlist').limit(50);
  const snapshot = wordListRef;

  if (snapshot.empty) {
    console.log('No matching documents.');
    return;
  }
  VocabularyList = []

  return snapshot.get().then(snapshot => {
    snapshot.forEach(doc => {
      if (doc.data().word) {
          let definition = 'unknown';
          let audio = 'unknown';
          try {
            if(doc.data().hasOwnProperty('meanings')) {
              if(doc.data().meanings[0].hasOwnProperty('definitions')) {
                  definition = doc.data().meanings[0].definitions[0].definition;
              }
            }
            if(doc.data().hasOwnProperty('phonetics')) {
              if(doc.data().phonetics.length > 0)
                audio = doc.data().phonetics[0].audio;
            }
          } catch (error) {
            console.log(error);
          }

          let obj = {
            word: doc.data().word,
            answer: doc.data().word.split("").join(" "),
            definition: definition,
            audio: audio
          }
          VocabularyList.push(obj);
      }
      // Shuffle the array
      let currentIndex = VocabularyList.length, temporaryValue, randomIndex;
      while (0 !== currentIndex) {
        randomIndex = Math.floor(Math.random() * currentIndex);
        currentIndex -= 1;
        temporaryValue = VocabularyList[currentIndex];
        VocabularyList[currentIndex] = VocabularyList[randomIndex];
        VocabularyList[randomIndex] = temporaryValue;
      }
      conv.session.params.vocabWord = VocabularyList;
      conv.session.params.vocabWordIndex = 0;
    });
  });
})

احصل على كلمة من جلسة المساعد

يمكنك كتابة دالة سحابية تقوم بإرجاع الكلمة الإملائية التالية من قائمة الكلمات.

في ملف index.js ، استبدل TODO الخاص بـ getSpellingWord بما يلي:

Index.js

// Returns a spelling practice word to Google Assistant and uses Speech Synthesis Markup Language (SSML) to format the response
app.handle('getSpellingWord',  conv => {
  if (!conv.session.params.vocabWord.empty) {
    conv.session.params.vocabWordIndex+=1;
    const ssml = '<speak>' +
    '<audio src="'+ conv.session.params.vocabWord[conv.session.params.vocabWordIndex].audio +'">Use phonetics to spell the word.</audio> ' +
    '</speak>';
    conv.add(ssml);
  }
  else
    conv.add('Great job! You completed the Spelling practice');
});

تمكين اللعبة من تكرار الكلمة

يمكنك كتابة دالة سحابية تكرر الكلمة الحالية للعبة.

في ملف index.js ، استبدل TODO لـ repeatSpellingWord بما يلي:

Index.js

// Returns current spelling word
app.handle('repeatSpellingWord',  conv => {
  if (!conv.session.params.vocabWord.empty) {
    const ssml = '<speak>' +
    '<audio src="'+ conv.session.params.vocabWord[conv.session.params.vocabWordIndex].audio +'">Use phonetics to spell the word. </audio> ' +
    '</speak>';
    conv.add(ssml);
  }
  else
    conv.add('Great job! You completed the Spelling practice');
});

الحصول على تعريف الكلمة

يمكنك كتابة وظيفة سحابية توفر تعريفًا للكلمة الحالية للعبة.

في ملف index.js ، استبدل TODO الخاص بـ definitionOfSpellingWord بما يلي:

Index.js

// Returns spelling word definition from Assistant session parameter
app.handle('definitionOfSpellingWord',  conv => {
  conv.add( 'It means ' + conv.session.params.vocabWord[conv.session.params.vocabWordIndex].definition);
});

التحقق من الاستجابة الإملائية للمستخدم

يمكنك كتابة وظيفة سحابية تتحقق من استجابة المستخدم لكيفية تهجئة الكلمة الحالية للعبة.

في ملف index.js ، استبدل TODO الخاص بـ verifySpellingWord بما يلي:

Index.js

// Verifies user spelling response
app.handle('verifySpellingWord', conv => {
  try {
    userResponse = conv.intent.params.userresponse.resolved.join("");
    if (userResponse.toLowerCase() === conv.session.params.vocabWord[conv.session.params.vocabWordIndex].word.toLowerCase()) {
      conv.add('You are correct. Say next to continue.');
    }
    else {
      conv.add('Sorry, wrong answer. The correct answer is ' + conv.session.params.vocabWord[conv.session.params.vocabWordIndex].answer + ' . Say next to continue.');
    }
  } catch (error) {
    conv.add('Sorry. I did not understand your response' );
  }
});
exports.ActionsOnGoogleFulfillment = functions.https.onRequest(app);

نشر جميع وظائفك

لن تكون وظائف السحابة الخاصة بك نشطة إلا بعد نشرها على Firebase.

من جذر دليل spelling-functions-start الإملائي، قم بتشغيل الأمر التالي:

$ firebase deploy --only functions

هذا هو إخراج وحدة التحكم الذي يجب أن تراه:

i  deploying functions
i  functions: ensuring necessary APIs are enabled...
⚠  functions: missing necessary APIs. Enabling now...
i  env: ensuring necessary APIs are enabled...
⚠  env: missing necessary APIs. Enabling now...
i  functions: waiting for APIs to activate...
i  env: waiting for APIs to activate...
✔  env: all necessary APIs are enabled
✔  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...
i  functions: packaged functions (X.XX KB) for uploading
✔  functions: functions folder uploaded successfully
i  starting release process (may take several minutes)...
i  functions: creating function createSpellingPracticeWord(us-central1)...
✔  functions[createSpellingPracticeWord(us-central1)]: Successful create operation.
i  functions: creating function ActionsOnGoogleFulfillment(us-central1)...
✔  functions[ActionsOnGoogleFulfillment(us-central1)]: Successful create operation.

✔  Deploy complete!
Project Console: https://console.firebase.google.com/project/spelling-practice-1234/overview

قم بتدوين وظيفة ActionsOnGoogleFulfillment بعنوان URL لنقطة نهاية Http لاستخدامها لاحقًا. للحصول على نقطة النهاية، افتح Firebase Console ثم انقر فوق Spelling-practice project. افتح لوحة معلومات الوظائف لعرض نقطة نهاية الوظائف.

332cb0437411a242.png

لقد أكملت إضافة جميع الوظائف المطلوبة. الآن دعنا ننتقل إلى إعداد Cloud Firestore.

8. تمكين Cloud Firestore

ستحتاج إلى تمكين Cloud Firestore.

في قسم الإنشاء بوحدة تحكم Firebase، انقر فوق Firestore . ثم انقر فوق إنشاء قاعدة بيانات .

5c0b4abf4410ffcf.png

يتم التحكم في الوصول إلى البيانات في Cloud Firestore من خلال قواعد الأمان. تحتاج أولاً إلى وضع بعض القواعد الأساسية بشأن البيانات للبدء. انقر فوق Firestore، ثم في علامة التبويب "القواعد" بوحدة تحكم Firebase، أضف القواعد التالية، ثم انقر فوق "نشر" .

تقيد القواعد التالية الوصول إلى البيانات للمستخدمين الذين قاموا بتسجيل الدخول، مما يمنع المستخدمين غير المصادقين من القراءة أو الكتابة.

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      //
      // WARNING: These rules are insecure! We will replace them with
      // more secure rules later in the codelab
      //
      allow read, write: if request.auth != null;
    }
  }
}

9. أضف بيانات الكلمات الإملائية إلى Cloud Firestore

في هذه الخطوة، ستكتب بيانات الكلمات الإملائية إلى Cloud Firestore حتى تتمكن من إنشاء قائمة كلمات للمساعد (واللعبة).

يتم تنظيم بيانات Cloud Firestore في مجموعات ومستندات وحقول ومجموعات فرعية. سيتم تخزين كل كلمة في اللعبة كمستند خاص بها في مجموعة عالية المستوى تسمى wordlist . بالنسبة لكل مستند جديد في مجموعة Firestore، سيتم تشغيل وظيفة createSpellingPracticeWord للحصول على تفاصيل الكلمة من خدمة Dictionary API .

قم بإنشاء مجموعة Cloud Firestore

  1. في وحدة تحكم Firebase، انتقل إلى قسم Cloud Firestore.
  2. انقر فوق + ابدأ المجموعة .
  3. في مربع النص "معرف المجموعة" ، أدخل wordlist ، ثم انقر فوق "التالي" .

1b4ccadb90f52f02.png

بعد ذلك، سنقوم بإنشاء مستند لكلمة: اتفاقية

  1. في مربع نص معرف المستند ، أدخل agreement .
  2. في مربع النص " الحقل "، أدخل word وفي مربع النص "القيمة "، أدخل agreement .
  3. انقر فوق حفظ .

379037e011e8511e.png

عند إضافة هذا المستند إلى Cloud Firestore، فإنه يقوم بتشغيل وظيفة createSpellingPracticeWord لجلب تفاصيل التعريف للكلمة. أضف المزيد من الكلمات (على سبيل المثال: awe، car، true، say، Better، commute، ...) عن طريق إنشاء مستند جديد لكل كلمة.

10. قم بإعداد مساعد جوجل

تصف الأقسام التالية كيفية إعداد بيئة تطوير مساعد Google وإنشاء مشروع الإجراءات الخاص بك.

تحقق من إعدادات إذن جوجل الخاصة بك

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

  1. انتقل إلى صفحة عناصر التحكم في النشاط .
  2. قم بتسجيل الدخول باستخدام حساب Google الخاص بك، إذا لم تكن قد قمت بذلك بالفعل.
  3. تمكين الأذونات التالية:
  • نشاط الويب والتطبيقات
  • ضمن نشاط الويب والتطبيقات ، حدد مربع الاختيار الموجود بجوار تضمين سجل Chrome والنشاط من المواقع والتطبيقات والأجهزة التي تستخدم خدمات Google .

c988e1e639e6d6e1.png

إنشاء مشروع الإجراءات

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

  1. افتح وحدة تحكم الإجراءات .
  2. انقر فوق مشروع جديد .
  3. قبول شروط الخدمة

b174d45710b8086b.png

  1. اكتب أو حدد spelling-practice-codelab التي قمت بإنشائها باستخدام Firebase Console. (الاسم هو كمرجع داخلي. يمكنك لاحقًا تعيين اسم خارجي لمشروعك.)

a2951de5d2001fac.png

  1. انقر فوق استيراد المشروع .
  2. في ما نوع الإجراء الذي تريد بناءه؟ الشاشة، حدد البطاقة المخصصة .
  3. انقر فوق {التالي .
  4. حدد بطاقة المشروع الفارغة .
  5. انقر فوق بدء البناء .
  6. أدخل ممارسة التدقيق الإملائي لاسم العرض وانقر فوق حفظ.

يبدأ المستخدمون المحادثة مع الإجراء الخاص بك من خلال الاستدعاء . على سبيل المثال، يمكن للمستخدمين استدعاء الإجراء الخاص بك عن طريق قول عبارة مثل "مرحبًا Google، تحدث إلى Spelling Practice"، حيث يكون Spelling Practice هو اسم العرض.

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

تكوين الوفاء

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

لتكوين التنفيذ الخاص بك، اتبع الخطوات التالية:

  1. انقر فوق Webhook في شريط التنقل الجانبي.
  2. حدد نقطة نهاية Https كخيار تنفيذ:

d523bf003e96e66f.png

  1. أدخل عنوان URL لنقطة نهاية وظيفتك في مربع النص الخاص بنقطة نهاية HTTPs ، ثم انقر فوق "حفظ" .

be53e2cd0d914d54.png

في القسم التالي، ستقوم بتخصيص المطالبة لاستدعائك الرئيسي في وحدة تحكم الإجراءات.

إعداد الاستدعاء الرئيسي

يجب عليك تحرير الاستدعاء الرئيسي لتحديد ما يحدث بعد أن يستدعي المستخدم الإجراء الخاص بك.

بشكل افتراضي، يوفر Actions Builder مطالبة عامة عند تشغيل الاستدعاء الخاص بك ( "ابدأ في إنشاء الإجراء الخاص بك عن طريق تحديد الاستدعاء الرئيسي.").

لتعديل المطالبة التي يرسلها الإجراء الخاص بك مرة أخرى إلى المستخدم عند استدعاء الإجراء الخاص بك، اتبع الخطوات التالية:

  1. انقر فوق الاستدعاء الرئيسي في التنقل.

9ff088c04c995cde.png

  1. حدد Call your webhook وأضف اسم معالج الحدث getSpellingWordList في مربع النص.
  2. في محرر التعليمات البرمجية، استبدل النص الموجود في حقل speech برسالة الترحيب التالية: Welcome to Spelling Practice

ملاحظة: يمكنك استخدام تنسيق YAML أو JSON لتحرير المطالبات الخاصة بك.

  1. انقر فوق حفظ .

اختبار الاستدعاء الرئيسي في جهاز المحاكاة

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

لاختبار الاستدعاء الرئيسي للإجراء الخاص بك في جهاز المحاكاة، اتبع الخطوات التالية:

  1. في شريط التنقل العلوي، انقر فوق اختبار للانتقال إلى جهاز المحاكاة.
  2. لاستدعاء الإجراء الخاص بك في جهاز المحاكاة، اكتب Talk to Spelling Practice في حقل الإدخال أعلى اليسار، ثم اضغط على Enter بلوحة المفاتيح.

651fc8da1ac9aa0a.png

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

عرض سجلات الأحداث

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

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

a6fb192f94426824.png

11. قم ببناء المحادثة لممارسة التهجئة

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

الانتقال من الاستدعاء الرئيسي إلى مشهد البداية

في هذا القسم، يمكنك إنشاء مشهد جديد يسمى Start "، والذي يرسل مطالبة للمستخدم يسأله عما إذا كان يرغب في بدء تشغيل Spelling Practice . يمكنك أيضًا إضافة انتقال من الاستدعاء الرئيسي إلى مشهد Start الجديد.

لإنشاء هذا المشهد وإضافة انتقال إليه، اتبع الخطوات التالية:

  1. انقر فوق تطوير في شريط التنقل العلوي. ثم انقر فوق الاستدعاء الرئيسي في شريط التنقل الأيمن.
  2. في قسم "الانتقال" الموجود على اليمين، انقر على القائمة المنسدلة، ثم اكتب Start في حقل النص.

dd4f1807a57f794d.png

  1. انقر فوق إضافة . يؤدي هذا إلى إنشاء مشهد يسمى Start ، ويخبر الإجراء بالانتقال إلى مشهد Start بعد أن يقوم الإجراء بتسليم رسالة الترحيب للمستخدم.
  2. انقر فوق المشاهد في شريط التنقل الأيمن لإظهار قائمة المشاهد.
  3. ضمن المشاهد ، انقر فوق ابدأ لرؤية مشهد Start .
  4. انقر فوق + في قسم "عند الإدخال" في مشهد Start .
  5. حدد إرسال المطالبات .
  6. استبدل الجملة في حقل speech ( Enter the response that users will see or hear... ) بسؤال لطرحه على المستخدم: Use phonetic alphabet to spell the word. For example alpha for a, bravo for b, charlie for c etc. Do you want to continue?

تقدم شرائح الاقتراحات اقتراحات قابلة للنقر للمستخدم والتي يعالجها الإجراء الخاص بك كمدخلات المستخدم. في هذا القسم، يمكنك إضافة شرائح الاقتراحات التي تظهر أسفل المطالبة التي قمت بتكوينها للتو ( Do you want to play

Spelling Practice

? ) لدعم المستخدمين على الأجهزة ذات الشاشات.

لإضافة شرائح الاقتراحات إلى موجه مشهد Start ، اتبع الخطوات التالية:

  1. في مشهد Start ، انقر فوق الاقتراحات الموجودة أسفل محرر التعليمات البرمجية. يضيف هذا الإجراء شريحة اقتراح واحدة.
  2. في حقل title ، استبدل Suggested Response بـ 'Yes' .
  3. باستخدام نفس التنسيق، قم يدويًا بإضافة شريحة اقتراح بعنوان 'No' و 'Help with Phonetics' . يجب أن تبدو شفرتك مثل المقتطف التالي:
  4. انقر فوق حفظ .

5ff2ecdc56801b91.png

اختبر نشاطك في جهاز المحاكاة

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

لاختبار الإجراء الخاص بك في جهاز المحاكاة، اتبع الخطوات التالية:

  1. في شريط التنقل، انقر فوق اختبار للانتقال إلى جهاز المحاكاة.
  2. لاختبار الإجراء الخاص بك في جهاز المحاكاة، اكتب Talk to Spelling Practice في حقل الإدخال.
  3. اضغط دخول . يجب أن يستجيب الإجراء الخاص بك من خلال موجه Main invocation وموجه مشهد Start المضاف، "مرحبًا بك في ممارسة التدقيق الإملائي. استخدم الأبجدية الصوتية لتهجئة الكلمة. على سبيل المثال alpha لـ a، وbravo لـ b، وcharlie لـ c، وما إلى ذلك. هل تريد أن يكمل؟" .

توضح لقطة الشاشة التالية هذا التفاعل:

338c9570b02a618e.png

  1. انقر فوق شريحة اقتراح Yes " أو No أو Help with Phonetics للرد على المطالبة. (يمكنك أيضًا قول "نعم" أو "لا" أو "المساعدة في علم الصوتيات" أو إدخال Yes أو No أو Help with Phonetics في حقل الإدخال .)

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

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

إضافة لا والمقاصد الصوتية

الآن بعد أن أصبح بإمكان المستخدمين الرد على السؤال الذي يطرحه الإجراء الخاص بك، يمكنك تكوين الإجراء الخاص بك لفهم ردود المستخدمين ( "نعم" أو "لا" أو "مساعدة في علم الصوتيات" ). في الأقسام التالية، يمكنك إنشاء أهداف المستخدم التي تتطابق عندما يقول المستخدم "نعم" أو "لا" أو "المساعدة في علم الصوتيات" وإضافة هذه الأغراض إلى مشهد Start . سنستخدم نية النظام yes وسننشئ نوايا أخرى.

no تخلق أي نية

الآن، تحتاج إلى no نية لفهم المستخدم والرد عليه عندما لا يرغب في ممارسة اللعبة. لإنشاء هذه النية، اتبع الخطوات التالية:

  1. انقر فوق تطوير في التنقل.
  2. انقر على النوايا المخصصة في شريط التنقل لفتح قائمة النوايا.
  3. انقر فوق + (علامة الزائد) في نهاية قائمة النوايا. قم بتسمية النية الجديدة no ثم اضغط على Enter .
  4. انقر فوق لا لفتح صفحة no النية.
  5. في قسم إضافة عبارات التدريب ، انقر فوق مربع النص أدخل عبارة وأدخل العبارات التالية:
  • No
  • N
  • I don't want
  • nope

98b0c9a7b67ea9b9.png

  1. انقر فوق حفظ .

no تضيف أي نية Start المشهد

الآن، يمكن للإجراء أن يفهم عندما يعبر المستخدم عن "لا" أو شيء مشابه لـ "لا" ، مثل "لا" . تحتاج إلى إضافة نية no مستخدم إلى مشهد Start لأن المستخدم يستجيب لموجه Start (" مرحبًا بك في ممارسة التدقيق الإملائي. استخدم الأبجدية الصوتية لتهجئة الكلمة. على سبيل المثال alpha لـ a، وbravo لـ b، وcharlie لـ c إلخ. هل تريد الاستمرار؟" ).

لإضافة هذه النية لمشهد Start ، اتبع الخطوات التالية:

  1. انقر فوق مشهد البدء في التنقل.
  2. انقر فوق + (علامة الجمع) في مشهد Start بجوار معالجة نية المستخدم.
  3. في قسم النية ، حدد لا في القائمة المنسدلة.

51f752e78c8b4942.png

  1. انقر فوق إرسال المطالبات وقم بتحديث حقل speech بالنص التالي: Good Bye .

يجب أن يبدو الكود الموجود في محررك مثل المقتطف التالي:

candidates:
  - first_simple:
      variants:
        - speech: >-
             Goodbye.
  1. في قسم النقل ، حدد إنهاء المحادثة من القائمة المنسدلة.
  2. انقر فوق حفظ .

اختبار no نية في محاكاة

في هذه المرحلة، يفهم الإجراء الخاص بك عندما لا يرغب المستخدم في لعب اللعبة ويعيد الاستجابة المناسبة.

لاختبار هذه النية في جهاز المحاكاة، اتبع الخطوات التالية:

  1. في شريط التنقل، انقر فوق اختبار .
  2. اكتب Talk to Spelling Practice في حقل الإدخال ثم اضغط على Enter .
  3. اكتب No في حقل الإدخال ثم اضغط على إنتر. وبدلاً من ذلك، انقر فوق شريحة لا توجد اقتراحات.

7727a456b522f31b.png

أضف نية النظام YES Start المشهد

الآن، سنضيف هدف النظام "YES" إلى مشهد Start ، نظرًا لأن المستخدم يستجيب بنعم لموجه Start (" مرحبًا بك في ممارسة التدقيق الإملائي. استخدم الأبجدية الصوتية لتهجئة الكلمة. على سبيل المثال، alpha لـ a، bravo لـ b، charlie for c وما إلى ذلك. هل تريد المتابعة؟" ).

لإضافة نية المستخدم هذه إلى مشهد Start ، اتبع الخطوات التالية:

  1. انقر فوق مشهد البدء في التنقل.
  2. انقر فوق + (علامة الجمع) في مشهد Start بجوار معالجة غرض المستخدم .
  3. ضمن كافة نوايا النظام، حدد نعم في القائمة المنسدلة للنوايا.

f6cbe789cde49e8f.png

  1. انقر فوق الاتصال بخطاف الويب الخاص بك وقم بتحديث مربع نص event handler بالوظيفة التي قمت بإنشائها مسبقًا: getSpellingWordList
  2. في قسم النقل ، انقر على القائمة المنسدلة وحدد إنهاء المحادثة .
  3. انقر فوق حفظ .

اختبار نية YES في جهاز المحاكاة

في هذه المرحلة، يفهم الإجراء الخاص بك عندما يريد المستخدم تشغيل اللعبة ويعيد الاستجابة المناسبة.

لاختبار هذه النية في جهاز المحاكاة، اتبع الخطوات التالية:

  1. في شريط التنقل، انقر فوق اختبار .
  2. لاختبار الإجراء الخاص بك في جهاز المحاكاة، اكتب Talk to Spelling Practice في حقل الإدخال واضغط على Enter .
  3. اكتب Yes في حقل الإدخال ثم اضغط على Enter . وبدلاً من ذلك، انقر فوق شريحة الاقتراح Yes .

يجلب الإجراء الخاص بك قائمة بجميع كلمات التدريب الإملائي ويخزنها في الجلسة. يقوم الإجراء الخاص بك بعد ذلك بإنهاء الجلسة لأنك حددت انتقال End conversation لغرض YES .

إنشاء نية Phonetics

لإنشاء هدف Phonetics ، اتبع الخطوات التالية:

  1. انقر فوق تطوير في التنقل.
  2. انقر على النوايا المخصصة في شريط التنقل لفتح قائمة النوايا.
  3. انقر فوق + (علامة الزائد) في نهاية قائمة النوايا. قم بتسمية phonetics الهدف الجديد واضغط على Enter .
  4. انقر فوق غرض phonetics لفتح صفحة غرض phonetics .
  5. في قسم إضافة عبارات التدريب، انقر فوق مربع النص أدخل عبارة وأدخل العبارات التالية:
  • how do I spell words
  • phonetics
  • help me with phonetics
  • phonetic alphabet

1455bdfca8dae46.png

  1. انقر فوق حفظ .

أضف نية phonetics إلى مشهد Start

الآن، يمكن للإجراء أن يفهم عندما يعبر المستخدم عن نية "الصوتيات" . يمكنك إضافة غرض المستخدم phonetics إلى مشهد Start ، حيث أن المستخدم يستجيب لموجه Start (" مرحبًا بك في ممارسة التدقيق الإملائي. استخدم الأبجدية الصوتية لتهجئة الكلمة. على سبيل المثال alpha لـ a، وbravo لـ b، وcharlie لـ c إلخ. هل تريد الاستمرار؟" ).

لإضافة نية المستخدم هذه إلى مشهد Start ، اتبع الخطوات التالية:

  1. انقر فوق مشهد البدء في التنقل.
  2. انقر فوق + (علامة الجمع) في مشهد Start بجوار معالجة نية المستخدم.
  3. حدد الصوتيات في القائمة المنسدلة للقصد.

67ee2e08000b2aee.png

  1. في قسم النقل ، انقر فوق القائمة المنسدلة وحدد إنهاء المحادثة.
  2. انقر فوق حفظ .

الانتقال من مشهد البداية إلى مشهد التدقيق الإملائي

في هذا القسم، يمكنك إنشاء مشهد جديد يسمى Spelling ، والذي يرسل مطالبة للمستخدم لتهجئة الكلمة باستخدام الأبجدية الصوتية.

لإنشاء هذا المشهد وإضافة انتقال إليه، اتبع الخطوات التالية:

  1. انقر فوق تطوير في شريط التنقل العلوي. ثم انقر فوق "ابدأ المشهد" في شريط التنقل الأيمن.
  2. في قسم معالجة غرض المستخدم، انقر when actions.intent.YES is matched وعلى اليمين في قسم النقل ، انقر فوق القائمة المنسدلة واكتب Spelling في حقل النص.
  3. انقر فوق إضافة . يؤدي هذا إلى إنشاء مشهد يسمى Spelling ، ويخبر الإجراء بالانتقال إلى مشهد Spelling بعد المطابقة بقصد YES.
  4. قم بتوسيع المشاهد في شريط التنقل الأيمن لإظهار قائمة المشاهد.
  5. ضمن المشاهد ، انقر فوق تدقيق إملائي لرؤية مشهد Spelling .
  6. انقر فوق + في قسم "عند الإدخال " في مشهد Spelling .
  7. انقر فوق الاتصال بخطاف الويب الخاص بك وأدخل getSpellingWord في مربع نص معالج الأحداث.
  8. حدد إرسال المطالبات .
  9. استبدل الجملة في حقل speech ( Enter the response that users will see or hear... ) بـ {} . سيتم ملء المطالبة الفعلية بواسطة webhook.

تقدم شرائح الاقتراحات اقتراحات قابلة للنقر للمستخدم والتي يعالجها الإجراء الخاص بك كمدخلات المستخدم.

لإضافة شرائح الاقتراحات إلى موجه مشهد Spelling الإملائي، اتبع الخطوات التالية:

  1. في مشهد Spelling ، انقر فوق الاقتراحات الموجودة أسفل محرر التعليمات البرمجية. يضيف هذا الإجراء ثلاث شرائح اقتراح.
  2. في حقل title ، استبدل Suggested Response بـ 'Repeat' .
  3. باستخدام نفس التنسيق، قم بإضافة شريحة اقتراح يدويًا بعنوان 'Skip' .
  4. باستخدام نفس التنسيق، قم بإضافة شريحة اقتراح يدويًا بعنوان 'Quit' . يجب أن تبدو شفرتك مثل المقتطف التالي:
  5. انقر فوق حفظ .
suggestions:
      - title: 'Repeat'
      - title: 'Skip'
      - title: 'Quit'

e1d437f714ea1539.png

إنشاء نية Repeat

لإنشاء نية repeat ، اتبع الخطوات التالية:

  1. انقر فوق تطوير في التنقل.
  2. انقر على النوايا المخصصة في شريط التنقل لفتح قائمة النوايا.
  3. انقر فوق + (علامة الزائد) في نهاية قائمة النوايا. قم بتسمية repeat النية الجديدة ثم اضغط على Enter .
  4. انقر فوق نية repeat لفتح صفحة نية definition .
  5. في قسم إضافة عبارات التدريب ، انقر فوق مربع النص أدخل عبارة وأدخل العبارات التالية:
  • one more time please
  • say the word again
  • repeat the word
  • tell me again
  • repeat

e61f0b9f80510bc9.png

  1. انقر فوق حفظ .

أضف نية repeat إلى المشهد Spelling

الآن، يمكن للإجراء أن يفهم عندما يعبر المستخدم عن نية "متكررة" . يمكنك إضافة نية المستخدم repeat إلى مشهد Spelling ، نظرًا لأن المستخدم يستجيب لمطالبة Spelling (" تهجئة الكلمة باستخدام الأبجدية الصوتية ").

لإضافة هدف المستخدم هذا إلى مشهد Spelling ، اتبع الخطوات التالية:

  1. انقر فوق مشهد التدقيق الإملائي في شريط التنقل.
  2. انقر فوق + (علامة الجمع) في مشهد Spelling بجوار معالجة غرض المستخدم .
  3. حدد تكرار في القائمة المنسدلة للقصد.

5cfd623b25bedbed.png

  1. تحقق من الاتصال بخطاف الويب الخاص بك وأدخل RepeatSpellingWord في مربع نص معالج الأحداث للحصول على تعريف الكلمة.
  2. تحقق من إرسال المطالبات .
  3. استبدل الجملة في حقل speech ( Enter the response that users will see or hear... ) بـ ''. سيتم ملء المطالبة الفعلية بواسطة webhook.

إضافة شرائح الاقتراح إلى "عند مطابقة التكرار"

  1. في " عند مطابقة التكرار " ضمن معالجة نية المستخدم، انقر فوق الاقتراحات الموجودة أسفل محرر التعليمات البرمجية. يضيف هذا الإجراء ثلاث شرائح اقتراح.
  2. في حقل title ، استبدل Suggested Response بـ 'Skip' .
  3. باستخدام نفس التنسيق، قم بإضافة شريحة اقتراح يدويًا بعنوان 'Quit' . يجب أن يبدو الكود الخاص بك مثل المقتطف التالي:
suggestions:
      - title: 'Skip'
      - title: 'Quit'

ab40e4b0c432b97c.png

  1. انقر فوق حفظ.

إنشاء نية definition

لإنشاء هدف definition ، اتبع الخطوات التالية:

  1. انقر فوق تطوير في التنقل.
  2. انقر على النوايا المخصصة في شريط التنقل لفتح قائمة النوايا.
  3. انقر فوق + (علامة الزائد) في نهاية قائمة النوايا. قم بتسمية definition النية الجديد واضغط على Enter .
  4. انقر فوق هدف definition لفتح صفحة هدف definition .
  5. في قسم إضافة عبارات التدريب ، انقر فوق مربع النص أدخل عبارة وأدخل العبارات التالية:
  • I would like to know the definition
  • tell me the definition
  • what does it mean
  • meaning
  • definition
  • what is the definition?

c1b88a9c0b1ac082.png

  1. انقر فوق حفظ .

أضف هدف definition إلى المشهد Spelling

الآن، يمكن للإجراء أن يفهم عندما يعبر المستخدم عن نية "التعريف" . يمكنك إضافة هدف definition المستخدم إلى مشهد Spelling ، نظرًا لأن المستخدم يستجيب لمطالبة Spelling (" تهجئة الكلمة باستخدام الأبجدية الصوتية ").

لإضافة هدف المستخدم هذا إلى مشهد Spelling ، اتبع الخطوات التالية:

  1. انقر فوق مشهد التدقيق الإملائي في شريط التنقل.
  2. انقر فوق + (علامة الجمع) في مشهد Spelling بجوار معالجة غرض المستخدم .
  3. حدد التعريف في القائمة المنسدلة للقصد.

646bdcac3ad3eb0c.png

  1. تحقق من استدعاء WebHook وأدخل DefinistOfspellingword في مربع نص معالج الأحداث للحصول على تعريف الكلمة.
  2. تحقق من إرسال المطالبات .
  3. استبدل الجملة في حقل speech ( Enter the response that users will see or hear... ) بـ ''. سيتم ملء المطالبة الفعلية بواسطة WebHook.

أضف رقائق الاقتراح إلى استجابة WebHook

  1. في مشهد Start ، انقر فوق اقتراحات أسفل محرر الرمز. يضيف هذا الإجراء ثلاث رقائق اقتراحات.
  2. في حقل title ، استبدل Suggested Response بـ 'Skip' .
  3. باستخدام نفس التنسيق ، أضف يدويًا رقاقة اقتراح بعنوان 'Quit' . يجب أن يبدو رمزك مثل المقتطف التالي:
suggestions:
      - title: 'Skip'
      - title: 'Quit'

25227545839D933F.PNG

  1. انقر فوق حفظ .

إنشاء نية skip

لإنشاء نية skip ، اتبع هذه الخطوات:

  1. انقر فوق تطوير في التنقل.
  2. انقر فوق المقصود في التنقل لفتح قائمة النوايا.
  3. انقر فوق + (علامة بالإضافة إلى علامة) في نهاية قائمة النوايا. اسم القصد الجديد skip واضغط على Enter .
  4. انقر فوق نية skip فتح صفحة نية skip .
  5. في قسم "عبارات التدريب" ، انقر فوق مربع نص إدخال العبارة وأدخل العبارات التالية:
  • next word
  • go next
  • next
  • skip
  • skip word

D1C4908A3D7882F8.PNG

  1. انقر فوق حفظ .

أضف نية Skip إلى مشهد Spelling

الآن ، يمكن أن يفهم الإجراء عندما يعبر المستخدم عن نية "تخطي" . يمكنك إضافة نية مستخدم skip إلى مشهد Spelling ، لأن المستخدم يستجيب لمطالبة Spelling (" تهجئة الكلمة باستخدام الأبجدية الصوتية ").

لإضافة نية المستخدم إلى مشهد Spelling ، اتبع هذه الخطوات:

  1. انقر فوق مشهد الإملاء في التنقل.
  2. انقر فوق + (بالإضافة إلى علامة) في مشهد Spelling بجوار نية المستخدم Handlin G.
  3. حدد تخطي في القصد المنسدلة.

5465F97542217964.PNG

  1. في قسم الانتقال على اليمين ، انقر فوق القائمة المنسدلة وحدد Spelling .

C8072485CA82BD3F.PNG

  1. انقر فوق حفظ .

إنشاء نية quit

لإنشاء نية Quit ، اتبع هذه الخطوات:

  1. انقر فوق تطوير في التنقل.
  2. انقر فوق المقصود في التنقل لفتح قائمة النوايا.
  3. انقر فوق + (علامة بالإضافة إلى علامة) في نهاية قائمة النوايا. قم بتسمية النية الجديدة Quit واضغط على Enter .
  4. انقر على نية الإقلاع Quit لفتح صفحة نية التعريف .
  5. في قسم "عبارات التدريب" ، انقر فوق مربع نص إدخال العبارة وأدخل العبارات التالية:
  • I quit
  • Goodbye
  • Cancel
  • Exit
  • Quit

9916F77B8766541E.PNG

  1. انقر فوق حفظ.

أضف نية Quit عن المشهد Spelling

الآن ، يمكن أن يفهم الإجراء عندما يعبر المستخدم عن نية "إنهاء" . يمكنك إضافة نية مستخدم quit إلى مشهد Spelling ، لأن المستخدم يستجيب لمطالبة Spelling (" تهجئة الكلمة باستخدام الأبجدية الصوتية ").

لإضافة نية المستخدم إلى مشهد Spelling ، اتبع هذه الخطوات:

  1. انقر فوق مشهد الإملاء في التنقل.
  2. انقر فوق + (بالإضافة إلى علامة) في مشهد Spelling بجوار معالجة نية المستخدم .
  3. حدد الإقلاع عن القصد من المنسدلة.

5F62FB18A3653D66.PNG

  1. في قسم الانتقال على اليمين ، انقر فوق القائمة المنسدلة وحدد End conversation . 1ffbe35a7bbb4b0.png
  2. انقر فوق حفظ .

إنشاء نوع phonetic_alphabet

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

لإنشاء نوع phonetic_alphabet ، اتبع هذه الخطوات:

  1. انقر فوق تطوير في التنقل.
  2. انقر فوق + (علامة زائد) تحت الأنواع .
  3. اكتب phonetic_alphabet واضغط على Enter .
  4. انقر فوق phonetic_alphabet لفتح الخيارات.
  5. في أي نوع من القيم سيدعم هذا النوع؟ القسم ، حدد خيار الكلمات والمرادفات
  6. أدخل الإدخالات التالية والقيم المقابلة في قسم الإدخالات إضافة :

أ

ألفا ، أبل ، أمستردام

ب

برافو ، زبدة ، بالتيمور

ج

تشارلي ، كات ، الدار البيضاء

د

دلتا ، كلب ، الدنمارك

ه

صدى ، إدوارد ، إديسون

F

Foxtrot ، Fox ، Florida

ز

الجولف ، جورج ، جاليبولي

ح

فندق ، هاري ، هافانا

أنا

الهند ، الحبر ، إيطاليا

ي

جولييت ، جوني ، القدس

ك

كيلو ، الملك ، كيلوغرام

ل

ليما ، الحب ، لندن

م

مايك ، المال ، مدغشقر

ن

نوفمبر ، نيويورك ، نانسي

س

أوسكار ، أورانج ، أوسلو

ص

بابا ، باريس ، بيتر

س

كيبيك ، الملكة

ص

روميو ، روما ، روبرت

س

سييرا ، السكر ، سانتياغو

ر

تانجو ، تومي ، طرابلس

ش

موحد ، مظلة ، عمه

الخامس

فيكتور ، الخل ، فالنسيا

ث

الويسكي ، وليام ، واشنطن

س

الأشعة السينية

ذ

يانكي ، الأصفر ، يوركر

ض

زولو ، حمار وحشي ، زيوريخ

يجب أن يبدو جدول القيمة الرئيسي الخاص بك مثل ما يلي:

5B5A5CD9FA557E1B.PNG

  1. انقر فوق حفظ .

تكوين حشوة الفتحة

بعد ذلك ، تحتاج إلى تكوين حشوة الفتحة في مشهد الإملاء. لتكوين منطق ملء الفتحات ، اتبع هذه الخطوات:

  1. انقر فوق مشهد الإملاء في التنقل.
  2. انقر فوق + (علامة بالإضافة إلى علامة) في مشهد Spelling لملء الفتحة .
  3. في حقل اسم SLOT ، أضف userresponse كاسم الفتحة.
  4. في نوع تحديد النوع المنسدل ، حدد phonetic_alphabet كنوع الفتحة.
  5. تحقق من هذه الفتحة تقبل قائمة القيم
  6. تحقق من هذه الفتحة مطلوبة .
  7. حدد خيار تخصيص قيمة SLOT DRITION وأدخل USERRESPONSE في مربع نص معلمة الجلسة.

BA57A419877A07F3.PNG

  1. انقر فوق حفظ .

أضف حالة إلى شاشة Spelling

لإضافة حالة إلى مشهد Spelling ، اتبع هذه الخطوات:

  1. انقر فوق مشهد الإملاء في التنقل.
  2. انقر فوق + (علامة بالإضافة إلى علامة) في مشهد Spelling بجوار الحالة.
  3. أدخل scene.slots.status == "FINAL" كشرط
  4. تحقق من استدعاء WebHook وأدخل VerifySpellingWord في مربع نص معالج الأحداث للتحقق من استجابة المستخدم.
  5. تحقق من إرسال المطالبات.
  6. استبدل الجملة في حقل speech ( Enter the response that users will see or hear... ) بـ {} . سيتم ملء المطالبة الفعلية بواسطة WebHook.

أضف رقائق الاقتراح إلى استجابة WebHook

  1. في مشهد Start ، انقر فوق اقتراحات أسفل محرر الرمز. يضيف هذا الإجراء ثلاث رقائق اقتراحات.
  2. في حقل title ، استبدل Suggested Response بـ 'Next' .
  3. باستخدام نفس التنسيق ، أضف يدويًا رقاقة اقتراح بعنوان 'Quit' . يجب أن يبدو رمزك مثل المقتطف التالي:
suggestions:
      - title: 'Next'
      - title: 'Quit'

AC3D7A9366EBC1B1.PNG

  1. انقر فوق حفظ .

12. اختبار التهجئة في المحاكاة

لاختبار الإجراء الخاص بك في المحاكاة ، اتبع هذه الخطوات:

  1. في شريط التنقل ، انقر فوق اختبار لأخذك إلى جهاز المحاكاة.
  2. لاختبار الإجراء الخاص بك في المحاكاة ، اكتب Talk to Spelling Practice في حقل الإدخال.
  3. اضغط دخول . يجب أن يستجيب إجراءك بمطالبة Main invocation ومطالبة مشهد Start المضافة ، "مرحبًا بك في ممارسة الإملاء. استخدم الأبجدية الصوتية لتهجئة الكلمة. يكمل؟" .
  4. قل نعم للمتابعة
  5. سوف يقوم Simulator بتشغيل صوت كلمة لتهجئة
  6. يمكنك تهجئة الكلمة باستخدام الحروف الهجائية الصوتية. على سبيل المثال ، لأفضل أو اكتب "Bravo Echo Tango Tango Echo Romeo"
  7. سوف يستجيب Simulator إما الاستجابة الصحيحة أو غير الصحيحة.
  8. قل بجانب المتابعة إلى الكلمة التالية أو قول إنهاء للخروج من حلقة اللعبة.

13. مبروك

تهانينا ، لقد قمت بنجاح لعبتك ، ممارسة الإملاء !

أنت تعرف الآن الخطوات الرئيسية المطلوبة لإنشاء لعبة باستخدام Cloud Firestore ، ووظائف السحابة ، وباني Assistant Action Builder Google.

ما غطته

  • كيفية التفاعل مع Cloud Firestore
  • كيفية استخدام فتحات لجمع البيانات من المستخدم
  • كيفية معالجة إدخال المستخدم وإعادة استجابة
  • كيفية استخدام الظروف لإضافة المنطق إلى مشهد
  • كيفية إضافة حلقة لعبة

مصادر تعليمية إضافية

يمكنك استكشاف هذه الموارد للتعرف على إجراءات بناء مساعد Google:

تنظيف مشروعك [الموصى به]

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

  1. لحذف مشروع Firebase ومواردك ، أكمل الخطوات المدرجة في قسم مشاريع الإغلاق (حذف) .

تحذير: تأكد من تحديد المشروع الصحيح للحذف على صفحة إعدادات Google Cloud Console.

  1. اختياري: لإزالة مشروعك فورًا من وحدة التحكم في الإجراءات ، أكمل الخطوات المذكورة في حذف قسم المشروع . إذا لم تكمل هذه الخطوة ، فسيتم إزالة مشروعك تلقائيًا بعد حوالي 30 يومًا.

اتبع actionsongoogle & firebase على Twitter لتربية أحدث إعلاناتنا وتغريدة إلى #Gooleio لمشاركة ما قمت بإنشائه!