بازی تمرین املا با استفاده از Google Assistant و Cloud Firestore

1. بررسی اجمالی

پلتفرم توسعه‌دهنده Google Assistant به شما امکان می‌دهد نرم‌افزاری ایجاد کنید تا عملکرد Google Assistant، یک دستیار شخصی مجازی، را در بیش از 1 میلیارد دستگاه، از جمله بلندگوهای هوشمند، تلفن‌ها، خودروها، تلویزیون‌ها، هدفون‌ها و موارد دیگر گسترش دهید. کاربران برای انجام کارهایی مانند خرید مواد غذایی یا رزرو یک سواری، دستیار را در مکالمه قرار می دهند. به‌عنوان یک توسعه‌دهنده، می‌توانید از پلتفرم توسعه‌دهنده Assistant برای ایجاد و مدیریت تجربیات گفتگوی لذت‌بخش و مؤثر بین کاربران و سرویس‌های شخص ثالث خود استفاده کنید.

این کد لبه مفاهیم سطح متوسط ​​را برای توسعه با دستیار Google، توابع ابری و Cloud Firestore پوشش می‌دهد. در این لبه کد، شما یک بازی به نام «تمرین املا» خواهید ساخت که با استفاده از دستیار گوگل از کاربران می‌خواهد تا کلمات را املا کنند.

چیزی که خواهی ساخت

در این کد لبه، شما یک بازی پیچیده با قابلیت های زیر می سازید:

  • پاسخ‌های املایی را از کاربر دریافت می‌کند و بسته به مقدار، درخواست‌های مکالمه را تغییر می‌دهد.
  • با نکات مربوط به املای کلمه مانند تعریف آن یا تکرار کلمه پاسخ می دهد
  • یک حلقه بازی ایجاد می کند تا کاربر بتواند پس از املای کلمه دوباره با دستیار ارتباط برقرار کند

قبل از شروع ساخت، می‌توانید با گفتن «Hey Google, Talk to Spelling Practice» در دستگاهی که دارای «دستیار Google» است، با اکشن زنده تعامل کنید. مسیر پیش‌فرض این Action برای یک کاربر بازگشتی شبیه تعامل زیر است:

وقتی این کد لبه را تمام کردید، Action تکمیل شده شما جریان مکالمه زیر را خواهد داشت:

2e9f94dc0ceafc96.png

چیزی که یاد خواهید گرفت

  • نحوه تعامل با Cloud Firestore
  • نحوه استفاده از اسلات ها برای جمع آوری داده ها از کاربر
  • نحوه پردازش ورودی کاربر و بازگشت پاسخ
  • نحوه استفاده از شرایط برای افزودن منطق به صحنه
  • چگونه یک حلقه بازی اضافه کنیم

آنچه شما نیاز دارید

پیش نیازهای این کد لبه شامل موارد زیر است:

  • یک مرورگر وب، مانند گوگل کروم
  • یک IDE برای نوشتن توابع ابری.
  • یک روش پرداخت این کد لبه از توابع Cloud برای Firebase استفاده می کند که نیاز دارد پروژه شما در طرح قیمت گذاری Firebase Blaze باشد ( بیشتر بیاموزید ).
  • یک ترمینال برای اجرای دستورات پوسته
  • Node.js 10 یا بالاتر

2. کد توابع را دریافت کنید

مخزن GitHub را از خط فرمان کلون کنید:

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

3. یک پروژه Firebase ایجاد کنید و برنامه خود را راه اندازی کنید

یک پروژه Firebase ایجاد کنید

  1. وارد Firebase شوید.
  2. در کنسول Firebase، روی Add Project (یا Create a project ) کلیک کنید، سپس پروژه Firebase خود را Spelling-Practice نامگذاری کنید.

66ae8d1894f4477.png

  1. روی گزینه های ایجاد پروژه کلیک کنید. در صورت درخواست، شرایط Firebase را بپذیرید. از تنظیم Google Analytics صرفنظر کنید، زیرا از Analytics برای این برنامه استفاده نخواهید کرد.

برای کسب اطلاعات بیشتر درباره پروژه‌های Firebase، به درک پروژه‌های Firebase مراجعه کنید.

به طرح قیمت گذاری Blaze ارتقا دهید

برای استفاده از توابع Cloud برای Firebase، باید پروژه Firebase خود را به طرح قیمت گذاری Blaze ارتقا دهید، به این معنی که یک حساب Google Cloud Billing را به پروژه خود متصل خواهید کرد. برای این کار باید کارت اعتباری یا روش پرداخت دیگری ارائه کنید.

همه پروژه‌های Firebase، از جمله پروژه‌های موجود در طرح Blaze، همچنان به سهمیه‌های استفاده بدون هزینه برای توابع ابری دسترسی دارند. مراحل ذکر شده در این کد لبه در محدوده استفاده بدون هزینه قرار می گیرند. با این حال، هزینه های کوچک ( حدود 0.03 دلار ) را از Cloud Storage خواهید دید که برای میزبانی تصاویر ساخت Cloud Functions شما استفاده می شود.

4. Firebase CLI را نصب کنید

Firebase CLI (رابط خط فرمان) شما را قادر می سازد تا توابع Cloud خود را مستقر کنید.

گزینه های مختلفی برای نصب Firebase CLI بسته به سیستم عامل و مورد استفاده شما وجود دارد. اگر از توابع ابری نیز استفاده می کنید، مراحل زیر رایج ترین گزینه را شرح می دهد.

  1. مطمئن شوید که npm را نصب کرده اید که معمولاً با Node.js ارائه می شود.
  2. با اجرای دستور npm زیر، CLI را نصب یا ارتقا دهید:
$ npm -g install firebase-tools
  1. با اجرای زیر بررسی کنید که CLI به درستی نصب شده است:
$ firebase --version

مطمئن شوید که نسخه Firebase CLI 9.0.0 یا جدیدتر باشد تا آخرین ویژگی های مورد نیاز برای Cloud Function را داشته باشد. اگر نه، npm install -g firebase-tools را اجرا کنید تا همانطور که در بالا نشان داده شده است ارتقا دهید.

  1. مجوز Firebase CLI را با اجرای:
$ firebase login
  1. از دایرکتوری spelling-functions-start، Firebase CLI را برای استفاده از پروژه Firebase خود تنظیم کنید. دستور زیر را اجرا کنید، ID پروژه خود را انتخاب کنید، سپس دستورالعمل ها را دنبال کنید. وقتی از شما خواسته شد، می‌توانید هر نام مستعاری را انتخاب کنید، مثلاً codelab .
$ firebase use --add

5. دایرکتوری توابع

اکنون با استفاده از Firebase SDK for Cloud Functions عملکردی را برای ساختن پس‌زمینه بازی، Spelling Practice اضافه می‌کنید.

Cloud Functions به شما امکان می دهد کدی داشته باشید که بدون نیاز به راه اندازی سرور در فضای ابری اجرا شود. این کد لبه به شما نشان می دهد که چگونه توابعی بسازید که به رویدادهای Firebase Authentication، Cloud Storage و Firebase Realtime Database واکنش نشان دهند. بیایید با احراز هویت شروع کنیم.

هنگام استفاده از Firebase SDK برای توابع Cloud، کد توابع شما در فهرست functions (به طور پیش فرض) قرار می گیرد. برای اینکه کار را برای شما آسان‌تر کنیم، قبلاً فایل functions/index.js را ایجاد کرده‌ایم که کد شما در آن قرار می‌گیرد. قبل از حرکت به جلو، به راحتی دایرکتوری functions را بررسی کنید.

$ cd functions
$ ls

کد توابع شما نیز یک برنامه Node.js است و بنابراین به یک package.json نیاز دارد که اطلاعاتی درباره برنامه شما ارائه دهد و وابستگی ها را فهرست کند.

اگر با Node.js آشنایی ندارید، به شما کمک می کند تا قبل از ادامه نرم افزار Codelab بیشتر در مورد آن بدانید.

فایل package.json قبلاً دو وابستگی لازم را فهرست می‌کند: Firebase SDK برای توابع Cloud و 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.

ابتدا ماژول های مورد نیاز را وارد می کنید، سپس چهار تابع را به جای TODO ها می نویسید. برای وارد کردن ماژول ها، به مرحله بعدی کد لبه ادامه دهید.

6. ماژول های مورد نیاز را وارد کنید

این کد لبه به سه ماژول نیاز دارد.

  • ماژول firebase-functions به ما اجازه می‌دهد تا محرک‌های عملکردهای ابری خود را بنویسیم
  • ماژول firebase-admin به ما این امکان را می دهد که از پلتفرم Firebase در سروری با دسترسی ادمین استفاده کنیم، به عنوان مثال برای نوشتن در Cloud Firestore.
  • Actions SDK Node.js Fulfillment Library کنترل‌کننده‌های Actions SDK را برای دستیار Google تکمیل می‌کند.
  1. با اجرای دستور npm زیر Actions SDK را نصب کنید:
$ 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.

حالا بیایید منطق تجاری را با استفاده از توابع برای پشتیبانی از Assistant Actions اضافه کنیم.

7. توابع ایجاد کنید

تعاریف کلمات را دریافت کنید و آنها را در Cloud Firestore بنویسید

برای دریافت تعاریف کلمه از API عمومی 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 Function ایجاد می کنید که هر زمان که یک سند جدید در Cloud Firestore ایجاد می شود، فعال می شود. برای دریافت تعاریف کلمات از طریق تابع getWordDetailsFromDictionaryAPI که درست در بالا نوشتیم، API dictionaryapi.dev را فراخوانی می کند.

در فایل 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');
});

بازی را فعال کنید تا کلمه را تکرار کند

می توانید یک Cloud Function بنویسید که کلمه فعلی بازی را تکرار می کند.

در فایل 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');
});

تعریف کلمه را دریافت کنید

می توانید یک Cloud Function بنویسید که تعریف کلمه فعلی بازی را ارائه دهد.

در فایل 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);

همه توابع خود را مستقر کنید

توابع Cloud شما فقط پس از استقرار آنها در 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

برای استفاده بعدی، نشانی وب نقطه پایانی Http تابع ActionsOnGoogleFulfillment را یادداشت کنید. برای دریافت نقطه پایانی، کنسول Firebase را باز کنید و سپس روی spelling-practice project کلیک کنید. برای مشاهده نقطه پایانی توابع، داشبورد توابع را باز کنید.

332cb0437411a242.png

شما افزودن تمام توابع مورد نیاز را تکمیل کرده اید. حالا بیایید به راه اندازی Cloud Firestore برویم.

8. Cloud Firestore را فعال کنید

باید Cloud Firestore را فعال کنید.

در بخش ساخت کنسول Firebase، روی Firestore کلیک کنید. سپس روی ایجاد پایگاه داده کلیک کنید.

5c0b4abf4410ffcf.png

دسترسی به داده ها در Cloud Firestore توسط قوانین امنیتی کنترل می شود. ابتدا برای شروع باید قوانین اساسی را روی داده ها تنظیم کنید. روی Firestore کلیک کنید و سپس در تب Rules کنسول Firebase، قوانین زیر را اضافه کنید، سپس روی Publish کلیک کنید.

قوانین زیر دسترسی به داده‌ها را برای کاربرانی که به سیستم وارد شده‌اند محدود می‌کند، که از خواندن یا نوشتن کاربران احراز هویت نشده جلوگیری می‌کند.

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 می نویسید تا بتوانید لیستی از کلمات را برای Assistant (و بازی) ایجاد کنید.

داده‌های Cloud Firestore به مجموعه‌ها، اسناد، فیلدها و زیرمجموعه‌ها ساختاربندی می‌شوند. هر کلمه برای بازی به عنوان سند خود در یک مجموعه سطح بالا به نام wordlist ذخیره می شود. برای هر سند جدید در مجموعه Firestore، تابع createSpellingPracticeWord برای دریافت جزئیات کلمه از سرویس Dictionary API فعال می شود.

یک مجموعه Cloud Firestore ایجاد کنید

  1. در کنسول Firebase، به بخش Cloud Firestore بروید.
  2. روی + شروع مجموعه کلیک کنید.
  3. در کادر متنی مجموعه شناسه ، wordlist وارد کنید، سپس روی Next کلیک کنید.

1b4ccadb90f52f02.png

بعد، یک سند برای یک کلمه ایجاد می کنیم: توافق

  1. در جعبه متن شناسه سند ، agreement وارد کنید.
  2. در کادر متنی فیلد ، word وارد کنید و در کادر متنی مقدار agreement وارد کنید.
  3. روی ذخیره کلیک کنید.

379037e011e8511e.png

وقتی این سند را به Cloud Firestore اضافه می‌کنید، تابع createSpellingPracticeWord شما را برای واکشی جزئیات تعریف کلمه فعال می‌کند. با ایجاد یک سند جدید برای هر کلمه، کلمات بیشتری (به عنوان مثال: awe, car, true, tell, better, commute,...) اضافه کنید.

10. دستیار گوگل را راه اندازی کنید

بخش‌های زیر نحوه راه‌اندازی محیط توسعه Google Assistant و ایجاد پروژه Actions را توضیح می‌دهند.

تنظیمات مجوز Google خود را بررسی کنید

برای آزمایش اکشنی که در این کد لبه می سازید، باید مجوزهای لازم را فعال کنید تا شبیه ساز بتواند به اکشن شما دسترسی داشته باشد. برای فعال کردن مجوزها، مراحل زیر را دنبال کنید:

  1. به صفحه Activity Controls بروید.
  2. اگر قبلاً این کار را نکرده‌اید، با حساب Google خود وارد شوید.
  3. مجوزهای زیر را فعال کنید:
  • فعالیت وب و برنامه
  • در بخش «فعالیت وب و برنامه» ، کادر تأیید کنار «شامل سابقه Chrome و فعالیت از سایت‌ها، برنامه‌ها و دستگاه‌هایی که از خدمات Google استفاده می‌کنند» را انتخاب کنید.

c988e1e639e6d6e1.png

یک پروژه Actions ایجاد کنید

پروژه Actions شما محفظه ای برای Action شماست. برای ایجاد پروژه Actions خود برای این کد لبه، مراحل زیر را دنبال کنید:

  1. کنسول Actions را باز کنید.
  2. پروژه جدید را کلیک کنید.
  3. شرایط خدمات را بپذیرید

b174d45710b8086b.png

  1. spelling-practice-codelab را که با استفاده از Firebase Console ایجاد کرده اید، تایپ کرده یا انتخاب کنید. (این نام برای مرجع داخلی شما است. بعداً می توانید یک نام خارجی برای پروژه خود تعیین کنید.)

a2951de5d2001fac.png

  1. روی Import project کلیک کنید.
  2. در چه نوع اکشنی می خواهید بسازید؟ کارت سفارشی را انتخاب کنید.
  3. روی Next کلیک کنید.
  4. کارت پروژه خالی را انتخاب کنید.
  5. روی Start building کلیک کنید.
  6. برای نام نمایشی ، Spelling Practice را وارد کنید و روی ذخیره کلیک کنید.

کاربران مکالمه را با Action شما از طریق فراخوانی شروع می کنند. برای مثال، کاربران می‌توانند با گفتن عبارتی مانند «Hey Google, talk to Spelling Practice» که در آن Spelling Practice نام نمایشی است، Action شما را فراخوانی کنند.

اگر می‌خواهید اکشن شما را در تولید اجرا کنید، باید نام نمایشی داشته باشد. با این حال، برای آزمایش Action خود، نیازی به تعریف نام نمایشی ندارید. در عوض، می توانید از عبارت Talk to my test app در شبیه ساز برای فراخوانی Action خود استفاده کنید.

پیکربندی انجام

شما باید به Assistant وصل کنید، کنترل‌کننده‌های رویداد را برای توابع Cloud که قبلاً در این Codelab نوشته‌اید و اجرا کرده‌اید.

برای پیکربندی تکمیل خود، این مراحل را دنبال کنید:

  1. روی Webhook در ناوبری کناری کلیک کنید.
  2. نقطه پایانی Https را به عنوان گزینه تکمیل انتخاب کنید:

d523bf003e96e66f.png

  1. URL نقطه پایانی تابع خود را در کادر متنی HTTPs endpoint وارد کنید، سپس روی Save کلیک کنید.

be53e2cd0d914d54.png

در بخش بعدی، درخواست برای فراخوانی اصلی خود را در کنسول Actions سفارشی می‌کنید.

فراخوانی اصلی را تنظیم کنید

شما باید فراخوان اصلی را ویرایش کنید تا مشخص کنید پس از اینکه کاربر اقدام شما را فراخواند چه اتفاقی می افتد.

به‌طور پیش‌فرض، Actions Builder هنگامی که فراخوانی شما راه‌اندازی می‌شود، یک اعلان عمومی ارائه می‌دهد ( "با تعریف فراخوان اصلی شروع به ساختن کنش کنید.").

برای اصلاح درخواستی که Action شما هنگام فراخوانی Action شما برای کاربر ارسال می‌کند، این مراحل را دنبال کنید:

  1. روی فراخوان اصلی در مسیریابی کلیک کنید.

9ff088c04c995cde.png

  1. Call your webhook علامت بزنید و نام مدیریت رویداد getSpellingWordList را در جعبه متن اضافه کنید.
  2. در ویرایشگر کد، متن را در قسمت speech با پیام خوشامدگویی زیر جایگزین کنید: Welcome to Spelling Practice

توجه: می‌توانید از قالب‌بندی YAML یا JSON برای ویرایش درخواست‌های خود استفاده کنید.

  1. روی ذخیره کلیک کنید.

فراخوانی اصلی را در شبیه ساز تست کنید

کنسول Actions یک ابزار وب برای آزمایش Action شما به نام شبیه ساز ارائه می دهد. این رابط دستگاه‌های سخت‌افزاری و تنظیمات آن‌ها را شبیه‌سازی می‌کند، بنابراین می‌توانید با Action خود طوری صحبت کنید که گویی روی نمایشگر هوشمند، تلفن، بلندگو یا KaiOS اجرا می‌شود.

برای آزمایش فراخوانی اصلی Action خود در شبیه ساز، این مراحل را دنبال کنید:

  1. در نوار پیمایش بالا، روی Test کلیک کنید تا به شبیه ساز بروید.
  2. برای فراخوانی Action خود در شبیه ساز، Talk to Spelling Practice در قسمت ورودی سمت چپ تایپ کنید، سپس Enter را در صفحه کلید خود فشار دهید.

651fc8da1ac9aa0a.png

وقتی فراخوان اصلی Action خود را فعال می‌کنید، «دستیار» با پیام خوش‌آمدگویی سفارشی‌شده شما پاسخ می‌دهد. در این مرحله، پس از پاسخ دستیار با سلام و احوالپرسی، مکالمه به پایان می رسد.

مشاهده گزارش رویداد

وقتی در برگه تست هستید، پانل سمت راست گزارش‌های رویداد را نشان می‌دهد که تاریخچه مکالمه را به عنوان گزارش رویداد نمایش می‌دهد. هر گزارش رویداد رویدادهایی را که در آن نوبت مکالمه اتفاق می‌افتد نمایش می‌دهد. برای مشاهده گزارش رویداد روی نماد خاکستری قبل از رویداد کلیک کنید.

Action شما در حال حاضر دارای یک گزارش رویداد است که هم ورودی کاربر ( "Talk to Spelling Practice" ) و هم پاسخ Action شما را نشان می دهد. اسکرین شات زیر گزارش رویداد Action شما را نشان می دهد:

a6fb192f94426824.png

11. مکالمه را برای تمرین املا بسازید

اکنون که مشخص کرده اید پس از فراخوانی یک کاربر Action شما چه اتفاقی می افتد، می توانید بقیه مکالمه Action خود را بسازید. Spelling Practice چهار صحنه دارد و شما باید هر صحنه را قبل از اجرا فعال کنید. متداول ترین راه برای فعال کردن یک صحنه این است که Action خود را به گونه ای پیکربندی کنید که وقتی یک کاربر با هدف کاربر در یک صحنه مطابقت دارد، آن قصد انتقال به صحنه دیگری را آغاز کرده و آن را فعال می کند.

انتقال از فراخوان اصلی به صحنه شروع

در این بخش، شما یک صحنه جدید به نام Start ایجاد می‌کنید که از کاربر درخواست می‌کند که آیا می‌خواهد بازی Spelling Practice را شروع کند یا خیر. شما همچنین یک انتقال از فراخوان اصلی به صحنه Start جدید اضافه می کنید.

برای ایجاد این صحنه و افزودن یک انتقال به آن، مراحل زیر را دنبال کنید:

  1. روی توسعه در پیمایش بالا کلیک کنید. سپس، روی فراخوانی اصلی در ناوبری سمت چپ کلیک کنید.
  2. در قسمت Transition در سمت راست، روی منوی کشویی کلیک کنید، سپس Start در قسمت متن تایپ کنید.

dd4f1807a57f794d.png

  1. روی افزودن کلیک کنید. این یک صحنه به نام Start ایجاد می‌کند و به Action می‌گوید که پس از اینکه Action اعلان خوش‌آمدگویی را به کاربر تحویل می‌دهد، به صحنه Start منتقل شود.
  2. برای نمایش لیست صحنه ها روی صحنه ها در ناوبری سمت چپ کلیک کنید.
  3. در قسمت Scenes ، روی Start کلیک کنید تا صحنه Start را ببینید.
  4. در قسمت On enter صحنه Start روی + کلیک کنید.
  5. Send prompts را انتخاب کنید.
  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?

تراشه‌های پیشنهاد پیشنهادات قابل کلیکی را برای کاربر ارائه می‌دهند که Action شما به عنوان ورودی کاربر پردازش می‌کند. در این بخش، تراشه‌های پیشنهادی را اضافه می‌کنید که در زیر فرمانی که پیکربندی کرده‌اید ظاهر می‌شوند ( Do you want to play

Spelling Practice

? ) برای پشتیبانی از کاربران در دستگاه های دارای صفحه نمایش.

برای افزودن تراشه‌های پیشنهادی به درخواست صحنه Start ، این مراحل را دنبال کنید:

  1. در صحنه Start ، روی پیشنهادات زیر ویرایشگر کد کلیک کنید. این عمل یک تراشه پیشنهادی را اضافه می کند.
  2. در قسمت title ، Suggested Response با 'Yes' جایگزین کنید.
  3. با استفاده از همان قالب‌بندی، به صورت دستی یک تراشه پیشنهادی با عنوان 'No' و 'Help with Phonetics' اضافه کنید. کد شما باید شبیه قطعه زیر باشد:
  4. روی ذخیره کلیک کنید.

5ff2ecdc56801b91.png

اکشن خود را در شبیه ساز تست کنید

در این مرحله، Action شما باید از فراخوان اصلی به صحنه Start منتقل شود و از کاربر بپرسد که آیا مایل به ادامه کار است یا خیر. تراشه های پیشنهادی نیز باید در نمایشگر شبیه سازی شده ظاهر شوند.

برای آزمایش Action خود در شبیه ساز، مراحل زیر را دنبال کنید:

  1. در نوار پیمایش، روی Test کلیک کنید تا به شبیه ساز هدایت شوید.
  2. برای آزمایش Action خود در شبیه ساز، Talk to Spelling Practice در قسمت Input تایپ کنید.
  3. Enter را فشار دهید. اکشن شما باید با فرمان Main invocation و اعلان صحنه Start اضافه شده، "به تمرین املا خوش آمدید. از الفبای آوایی برای املای کلمه استفاده کنید. به عنوان مثال آلفا برای a، براوو برای b، چارلی برای c و غیره پاسخ دهد. آیا می خواهید ادامه هید؟" .

تصویر زیر این تعامل را نشان می دهد:

338c9570b02a618e.png

  1. برای پاسخ به درخواست، روی تراشه پیشنهاد Yes یا No یا Help with Phonetics کلیک کنید. (همچنین می توانید بگویید "بله" یا "خیر" یا "کمک با آوایی" یا Yes یا No یا Help with Phonetics در قسمت ورودی وارد کنید.)

وقتی به درخواست پاسخ می‌دهید، Action شما با پیامی پاسخ می‌دهد که نشان می‌دهد نمی‌تواند ورودی شما را بفهمد: "متأسفم، متوجه نشدم. می‌توانید دوباره امتحان کنید؟" از آنجایی که هنوز Action خود را برای درک و پاسخ دادن به ورودی «بله» یا «خیر» پیکربندی نکرده‌اید، Action شما ورودی شما را با یک هدف NO_MATCH مطابقت می‌دهد.

به طور پیش‌فرض، هدف سیستم NO_MATCH پاسخ‌های عمومی را ارائه می‌دهد، اما می‌توانید این پاسخ‌ها را سفارشی کنید تا به کاربر نشان دهید که ورودی او را متوجه نشده‌اید. دستیار مکالمه کاربر را با Action شما پس از اینکه سه بار با ورودی کاربر مطابقت نداشته باشد پایان می‌دهد.

نه و مقاصد آوایی را اضافه کنید

اکنون که کاربران می‌توانند به سؤالی که Action شما مطرح می‌کند پاسخ دهند، می‌توانید Action خود را طوری پیکربندی کنید که پاسخ‌های کاربران را بفهمد ( "بله" یا "خیر" یا "کمک به آواشناسی" ). در بخش‌های بعدی، مقاصد کاربر را ایجاد می‌کنید که با گفتن «بله» یا «نه» یا «کمک به فونتیک» با کاربر مطابقت دارند و این مقاصد را به صحنه Start اضافه می‌کنید. ما از سیستم intent yes استفاده خواهیم کرد و قصدهای دیگری ایجاد خواهیم کرد.

no قصدی ایجاد نکنید

اکنون، شما باید no قصد برای درک و پاسخ به کاربر در زمانی که او نمی خواهد بازی را انجام دهد، ایجاد کنید. برای ایجاد این هدف، مراحل زیر را دنبال کنید:

  1. روی توسعه در مسیریابی کلیک کنید.
  2. برای باز کردن لیست مقاصد، روی Custom Intents در ناوبری کلیک کنید.
  3. روی + (علامت بعلاوه) در انتهای لیست مقاصد کلیک کنید. نام intent جدید را no گذاشته و Enter را فشار دهید.
  4. روی no کلیک کنید تا صفحه no قصد باز شود.
  5. در قسمت افزودن عبارات آموزشی ، در کادر متنی Enter Phrase کلیک کنید و عبارات زیر را وارد کنید:
  • No
  • N
  • I don't want
  • nope

98b0c9a7b67ea9b9.png

  1. روی ذخیره کلیک کنید.

no قصد به صحنه Start اضافه کنید

اکنون، Action می‌تواند بفهمد که کاربر در حال بیان «نه» یا چیزی شبیه به «نه» ، مانند «نه» است. شما باید هدف no کاربر را به صحنه Start اضافه کنید زیرا کاربر به دستور Start پاسخ می دهد (" به تمرین املا خوش آمدید. از الفبای آوایی برای املای کلمه استفاده کنید. به عنوان مثال alpha برای a، bravo برای b، charlie برای c. و غیره می خواهید ادامه دهید؟" ).

برای افزودن این intent به صحنه Start ، مراحل زیر را دنبال کنید:

  1. روی صحنه شروع در مسیریابی کلیک کنید.
  2. روی + (علامت بعلاوه) در صحنه Start کنار User intent handling کلیک کنید.
  3. در قسمت Intent از منوی کشویی no را انتخاب کنید.

51f752e78c8b4942.png

  1. روی Send prompts کلیک کنید و قسمت speech را با متن زیر به روز کنید: Good Bye .

کد موجود در ویرایشگر شما باید شبیه قطعه زیر باشد:

candidates:
  - first_simple:
      variants:
        - speech: >-
             Goodbye.
  1. در بخش Transition ، از منوی بازشو، پایان مکالمه را انتخاب کنید.
  2. روی ذخیره کلیک کنید.

no قصد در شبیه ساز تست کنید

در این مرحله، Action شما متوجه می‌شود که کاربر نمی‌خواهد بازی را انجام دهد و پاسخ مناسب را برمی‌گرداند.

برای آزمایش این هدف در شبیه ساز، مراحل زیر را دنبال کنید:

  1. در نوار پیمایش، روی تست کلیک کنید.
  2. Talk to Spelling Practice در قسمت Input تایپ کنید و Enter فشار دهید.
  3. No در قسمت Input تایپ کنید و Enter را فشار دهید. یا روی تراشه بدون پیشنهاد کلیک کنید.

7727a456b522f31b.png

سیستم YES intent را به صحنه Start اضافه کنید

اکنون، منظور SYSTEM "YES" را به صحنه Start اضافه می کنیم، زیرا کاربر به دستور Start پاسخ مثبت می دهد (" به تمرین املا خوش آمدید. برای املای کلمه از الفبای آوایی استفاده کنید. به عنوان مثال alpha برای a، bravo برای ب، چارلی برای ج و غیره. آیا می خواهید ادامه دهید؟ ).

برای افزودن این هدف کاربر به صحنه Start ، مراحل زیر را دنبال کنید:

  1. روی صحنه شروع در مسیریابی کلیک کنید.
  2. روی + (علامت بعلاوه) در صحنه Start در کنار User intent handling کلیک کنید.
  3. در قسمت All System Intent ها، YES را در منوی کشویی Intent انتخاب کنید.

f6cbe789cde49e8f.png

  1. روی Call your webhook کلیک کنید و جعبه متن event handler را با تابعی که قبلا ایجاد کردید به روز کنید: getSpellingWordList
  2. در بخش انتقال ، روی منوی کشویی کلیک کنید و پایان مکالمه را انتخاب کنید.
  3. روی ذخیره کلیک کنید.

قصد YES در شبیه ساز تست کنید

در این مرحله، Action شما متوجه می شود که کاربر چه زمانی می خواهد بازی را انجام دهد و پاسخ مناسب را برمی گرداند.

برای آزمایش این هدف در شبیه ساز، مراحل زیر را دنبال کنید:

  1. در نوار پیمایش، روی تست کلیک کنید.
  2. برای آزمایش Action خود در شبیه ساز، Talk to Spelling Practice در قسمت Input تایپ کنید و Enter را فشار دهید.
  3. Yes در قسمت Input تایپ کرده و Enter را فشار دهید. یا روی تراشه پیشنهاد Yes کلیک کنید.

Action شما فهرستی از تمام کلمات تمرین املایی را دریافت می کند و آنها را در جلسه ذخیره می کند. سپس Action شما جلسه را به پایان می‌رساند زیرا انتقال End conversation را برای هدف YES انتخاب کرده‌اید.

ایجاد هدف Phonetics

برای ایجاد هدف Phonetics ، مراحل زیر را دنبال کنید:

  1. روی توسعه در ناوبری کلیک کنید.
  2. برای باز کردن لیست مقاصد، روی Custom Intents در ناوبری کلیک کنید.
  3. روی + (علامت بعلاوه) در انتهای لیست مقاصد کلیک کنید. نام phonetics قصد جدید را بگذارید و Enter فشار دهید.
  4. روی قصد phonetics کلیک کنید تا صفحه هدف phonetics باز شود.
  5. در قسمت افزودن عبارات آموزشی، روی کادر متنی Enter Phrase کلیک کنید و عبارات زیر را وارد کنید:
  • 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 کنار User intent handling کلیک کنید.
  3. Phonetics را در منوی کشویی intent انتخاب کنید.

67ee2e08000b2aee.png

  1. در بخش Transition ، روی منوی کشویی کلیک کنید و پایان گفتگو را انتخاب کنید.
  2. روی ذخیره کلیک کنید.

انتقال از صحنه شروع به صحنه املا

در این بخش، یک صحنه جدید به نام Spelling ایجاد می‌کنید که با استفاده از الفبای آوایی، یک اعلان به کاربر ارسال می‌کند.

برای ایجاد این صحنه و افزودن یک انتقال به آن، مراحل زیر را دنبال کنید:

  1. روی توسعه در پیمایش بالا کلیک کنید. سپس، روی شروع صحنه در ناوبری سمت چپ کلیک کنید.
  2. در قسمت User intent handling when actions.intent.YES is matched کلیک کنید و در سمت راست در قسمت transition روی منوی کشویی کلیک کنید و Spelling در قسمت متن تایپ کنید.
  3. روی افزودن کلیک کنید. این یک صحنه به نام Spelling ایجاد می‌کند و به Action می‌گوید پس از تطبیق با قصد YES، به صحنه Spelling منتقل شود.
  4. برای نمایش فهرست صحنه ها ، صحنه ها را در پیمایش سمت چپ باز کنید.
  5. در بخش صحنه‌ها ، روی Spelling کلیک کنید تا صحنه Spelling را ببینید.
  6. در قسمت On enter صحنه Spelling روی + کلیک کنید.
  7. روی Call your webhook کلیک کنید و getSpellingWord را در جعبه متنی رویداد handler وارد کنید.
  8. Send prompts را انتخاب کنید.
  9. جمله را در قسمت speech ( Enter the response that users will see or hear... ) با {} قرار دهید. درخواست واقعی با webhook پر می شود.

تراشه‌های پیشنهاد پیشنهادات قابل کلیکی را برای کاربر ارائه می‌دهند که Action شما به عنوان ورودی کاربر پردازش می‌کند.

برای افزودن تراشه‌های پیشنهادی به درخواست صحنه Spelling ، این مراحل را دنبال کنید:

  1. در صحنه Spelling ، روی پیشنهادات زیر ویرایشگر کد کلیک کنید. این عمل سه تراشه پیشنهاد اضافه می کند.
  2. در قسمت title ، Suggested Response با 'Repeat' جایگزین کنید.
  3. با استفاده از همان قالب‌بندی، به صورت دستی یک تراشه پیشنهادی با عنوان 'Skip' اضافه کنید.
  4. با استفاده از همان قالب‌بندی، به صورت دستی یک تراشه پیشنهادی با عنوان 'Quit' اضافه کنید. کد شما باید شبیه قطعه زیر باشد:
  5. روی ذخیره کلیک کنید.
suggestions:
      - title: 'Repeat'
      - title: 'Skip'
      - title: 'Quit'

e1d437f714ea1539.png

Repeat intent ایجاد کنید

برای ایجاد repeat intent، مراحل زیر را دنبال کنید:

  1. روی توسعه در ناوبری کلیک کنید.
  2. برای باز کردن لیست مقاصد، روی Custom Intents در ناوبری کلیک کنید.
  3. روی + (علامت بعلاوه) در انتهای لیست مقاصد کلیک کنید. نام repeat قصد جدید را بگذارید و Enter فشار دهید.
  4. روی repeat قصد کلیک کنید تا صفحه هدف definition باز شود.
  5. در قسمت افزودن عبارات آموزشی ، روی کادر متنی Enter Phrase کلیک کنید و عبارات زیر را وارد کنید:
  • one more time please
  • say the word again
  • repeat the word
  • tell me again
  • repeat

e61f0b9f80510bc9.png

  1. روی ذخیره کلیک کنید.

قصد repeat به صحنه Spelling اضافه کنید

اکنون، Action می‌تواند بفهمد که یک کاربر قصد "تکرار" را بیان می‌کند. می‌توانید قصد repeat کاربر را به صحنه Spelling اضافه کنید، زیرا کاربر به اعلان Spelling پاسخ می‌دهد (" املا کلمه با استفاده از الفبای آوایی ").

برای افزودن این هدف کاربر به صحنه Spelling ، این مراحل را دنبال کنید:

  1. روی صحنه املا در ناوبری کلیک کنید.
  2. روی + (علامت بعلاوه) در صحنه Spelling در کنار User intent handling کلیک کنید.
  3. تکرار را در منوی کشویی intent انتخاب کنید.

5cfd623b25bedbed.png

  1. برای دریافت تعریف کلمه، گزینه Call your webhook را علامت بزنید و repeatSpellingWord را در کادر متنی رویداد handler وارد کنید.
  2. دستورات ارسال را علامت بزنید.
  3. جمله را در قسمت speech ( Enter the response that users will see or hear... ) با '' قرار دهید. درخواست واقعی با webhook پر می شود.

افزودن تراشه‌های پیشنهادی به «وقتی تکرار مطابقت دارد»

  1. در « وقتی تکرار تطبیق داده می‌شود » در بخش مدیریت هدف کاربر، روی پیشنهادات زیر ویرایشگر کد کلیک کنید. این عمل سه تراشه پیشنهاد اضافه می کند.
  2. در قسمت title ، 'Skip' را جایگزین « Suggested Response کنید.
  3. با استفاده از همان قالب‌بندی، به صورت دستی یک تراشه پیشنهادی با عنوان 'Quit' اضافه کنید. کد شما باید شبیه قطعه زیر باشد:
suggestions:
      - title: 'Skip'
      - title: 'Quit'

ab40e4b0c432b97c.png

  1. روی ذخیره کلیک کنید.

قصد definition ایجاد کنید

برای ایجاد هدف definition ، مراحل زیر را دنبال کنید:

  1. روی توسعه در ناوبری کلیک کنید.
  2. برای باز کردن لیست مقاصد، روی Custom Intents در ناوبری کلیک کنید.
  3. روی + (علامت بعلاوه) در انتهای لیست مقاصد کلیک کنید. definition قصد جدید را نامگذاری کنید و Enter فشار دهید.
  4. روی قصد definition کلیک کنید تا صفحه هدف definition باز شود.
  5. در قسمت افزودن عبارات آموزشی ، روی کادر متنی Enter Phrase کلیک کنید و عبارات زیر را وارد کنید:
  • 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 اضافه کنید

اکنون، Action می‌تواند بفهمد که یک کاربر قصد "تعریف" را بیان می‌کند. می‌توانید هدف کاربر definition را به صحنه Spelling اضافه کنید، زیرا کاربر به فرمان Spelling پاسخ می‌دهد (" املا کلمه با استفاده از الفبای آوایی ").

برای افزودن این هدف کاربر به صحنه Spelling ، این مراحل را دنبال کنید:

  1. روی صحنه املا در ناوبری کلیک کنید.
  2. روی + (علامت بعلاوه) در صحنه Spelling در کنار User intent handling کلیک کنید.
  3. تعریف را در منوی کشویی intent انتخاب کنید.

646bdcac3ad3eb0c.png

  1. Call your webhook را بررسی کنید و definitionOfSpellingWord را در کادر متنی رویداد handler وارد کنید تا تعریف کلمه را دریافت کنید.
  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 Intent ، روی skip Intent کلیک کنید.
  5. در بخش Add Presses ، روی کادر متن Enter Phrase کلیک کنید و عبارات زیر را وارد کنید:
  • next word
  • go next
  • next
  • skip
  • skip word

D1C4908A3D7882F8.PNG

  1. روی ذخیره کلیک کنید.

Skip به صحنه Spelling اضافه کنید

اکنون ، این عمل می تواند درک کند که کاربر در حال بیان یک هدف "پرش" است. می توانید هدف کاربر skip را به صحنه Spelling اضافه کنید ، زیرا کاربر در حال پاسخ دادن به سریع Spelling (" هجی کردن کلمه با استفاده از الفبای آوایی ") است.

برای افزودن این هدف کاربر به صحنه Spelling ، این مراحل را دنبال کنید:

  1. روی صحنه املا در ناوبری کلیک کنید.
  2. در صحنه Spelling کنار کاربر با هدف Handlin G ، روی + (به علاوه علامت) کلیک کنید.
  3. Skip را در کشویی قصد انتخاب کنید.

5465F97542217964.png

  1. در بخش انتقال در سمت راست ، روی منوی کشویی کلیک کنید و Spelling انتخاب کنید.

c8072485ca82bd3f.png

  1. روی ذخیره کلیک کنید.

قصد quit را ایجاد کنید

برای ایجاد هدف Quit ، این مراحل را دنبال کنید:

  1. روی توسعه در ناوبری کلیک کنید.
  2. برای باز کردن لیست اهداف ، روی اهداف موجود در ناوبری کلیک کنید.
  3. در انتهای لیست اهداف ، + (به علاوه علامت) را کلیک کنید. نام جدید را Quit و Enter فشار دهید.
  4. برای باز کردن صفحه Definition Intent ، روی هدف Quit کلیک کنید.
  5. در بخش Add Presses ، روی کادر متن Enter Phrase کلیک کنید و عبارات زیر را وارد کنید:
  • I quit
  • Goodbye
  • Cancel
  • Exit
  • Quit

9916F77B8766541E.PNG

  1. روی ذخیره کلیک کنید.

اضافه کردن قصد به صحنه Quit Spelling اضافه کنید

اکنون ، این عمل می تواند درک کند که کاربر در حال بیان یک هدف "ترک" است. شما می توانید هدف کاربر را به صحنه quit اضافه کنید ، زیرا کاربر در حال پاسخ دادن به سریع Spelling Spelling (" کلمه را با استفاده از الفبای آوایی" هجی کنید ).

برای افزودن این هدف کاربر به صحنه Spelling ، این مراحل را دنبال کنید:

  1. روی صحنه املا در ناوبری کلیک کنید.
  2. روی + (به علاوه علامت) در صحنه Spelling کنار کاربری قصد کاربر کلیک کنید.
  3. SELECT را در کشویی قصد انتخاب کنید.

5F62FB18A3653D66.PNG

  1. در بخش Transition در سمت راست ، روی منوی کشویی کلیک کنید و End conversation انتخاب کنید. 1FFBE35A7BBBBB4B0.PNG
  2. روی ذخیره کلیک کنید.

نوع phonetic_alphabet ایجاد کنید

در این بخش ، شما یک نوع جدید به نام phonetic_alphabet ایجاد می کنید ، که گزینه های الفبای آوایی را که کاربران می توانند برای هجی کردن کلمه انتخاب کنند ، مشخص می کند. در صورتی که کاربر چیزی مشابه را بگوید ، می توانید چند مترادف را برای این گزینه ها تعریف کنید. در بخش بعدی ، نوع phonetic_alphabet را به یک شکاف اضافه می کنید تا مشخص کنید که می خواهید پاسخ کاربر را بدست آورید.

برای ایجاد نوع phonetic_alphabet ، این مراحل را دنبال کنید:

  1. روی توسعه در ناوبری کلیک کنید.
  2. روی انواع + (به علاوه علامت) کلیک کنید.
  3. phonetic_alphabet تایپ کرده و Enter فشار دهید.
  4. برای باز کردن گزینه ها ، روی phonetic_alphabet کلیک کنید.
  5. در چه نوع مقادیری از این نوع پشتیبانی می کند؟ بخش ، گزینه کلمات و مترادف را انتخاب کنید
  6. ورودی های زیر و مقادیر مربوطه را در بخش Add Entries وارد کنید:

آ

آلفا ، اپل ، آمستردام

ب

براوو ، کره ، بالتیمور

ج

چارلی ، گربه ، کازابلانکا

د

دلتا ، سگ ، دانمارک

ه

اکو ، ادوارد ، ادیسون

f

Foxtrot ، Fox ، فلوریدا

g

گلف ، جورج ، گالیپولی

ساعت

هتل ، هری ، هاوانا

من

هند ، جوهر ، ایتالیا

j

جولیت ، جانی ، اورشلیم

ک

کیلو ، کینگ ، کیلوگرم

ل

لیما ، عشق ، لندن

متر

مایک ، پول ، ماداگاسکار

n

نوامبر ، نیویورک ، نانسی

o

اسکار ، نارنجی ، اسلو

پ

پاپا ، پاریس ، پیتر

q

کبک ، ملکه

r

رومئو ، رومی ، رابرت

س

سیرا ، شکر ، سانتیاگو

تی

تانگو ، تامی ، طرابلس

تو

یکنواخت ، چتر ، دایی

v

ویکتور ، سرکه ، والنسیا

w

ویسکی ، ویلیام ، واشنگتن

ایکس

اشعه ایکس

y

یانکی ، زرد ، یورکی

z

زولو ، زبرا ، زوریخ

جدول ارزش کلید شما باید مانند موارد زیر باشد:

5b5a5cd9fa557e1b.png

  1. روی ذخیره کلیک کنید.

پیکربندی را پر کنید

در مرحله بعد ، شما باید در صحنه املایی پر کنید. برای پیکربندی منطق پر کردن شکاف ، این مراحل را دنبال کنید:

  1. روی صحنه املا در ناوبری کلیک کنید.
  2. برای پر کردن شکاف روی + (به علاوه علامت) در صحنه Spelling کلیک کنید.
  3. در قسمت Enter Slot Name ، userresponse به عنوان نام شکاف اضافه کنید.
  4. در نوع کشویی Select ، phonet_alphabet را به عنوان نوع شکاف انتخاب کنید.
  5. بررسی کنید این شکاف لیستی از مقادیر را می پذیرد
  6. بررسی این شکاف مورد نیاز است .
  7. گزینه ارسال برگه Slot Customize را انتخاب کنید و UserResponse را در جعبه Texte Parameter Session وارد کنید.

BA57A419877A07F3.PNG

  1. روی ذخیره کلیک کنید.

شرط را به صفحه Spelling اضافه کنید

برای افزودن شرط به صحنه Spelling ، این مراحل را دنبال کنید:

  1. روی صحنه املا در ناوبری کلیک کنید.
  2. در صحنه Spelling کنار شرط ، روی + (به علاوه علامت) کلیک کنید.
  3. وارد scene.slots.status == "FINAL" به عنوان شرایط
  4. با تلفن خود تماس بگیرید و در جعبه متن Handler Event 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'

AC3D7A936EBC1B1.png

  1. روی ذخیره کلیک کنید.

12. تمرین املایی را در شبیه ساز تست کنید

برای آزمایش عملکرد خود در شبیه ساز ، این مراحل را دنبال کنید:

  1. در نوار ناوبری ، روی تست کلیک کنید تا شما را به شبیه ساز ببرد.
  2. برای آزمایش عملکرد خود در شبیه ساز ، در قسمت ورودی صحبت کنید Talk to Spelling Practice .
  3. Enter را فشار دهید. عمل شما باید با درخواست Main invocation و سریع صحنه Start ، پاسخ دهد ، "به تمرین املایی خوش آمدید. از الفبای آوایی برای هجی کردن کلمه استفاده کنید. به عنوان مثال Alpha برای A ، Bravo برای B ، Charlie for C و غیره. آیا می خواهید ادامه هید؟" .
  4. برای ادامه کار بله بگویید
  5. شبیه ساز برای هجی یک صدا صدا می زند
  6. می توانید کلمه را با استفاده از الفبای آوایی هجی کنید. به عنوان مثال ، برای بهتر بگویید یا "Bravo Echo Tango Tango Echo Romeo" را تایپ کنید
  7. شبیه ساز با پاسخ صحیح یا نادرست پاسخ خواهد داد.
  8. برای ادامه کلمه بعدی بگویید یا برای خروج از حلقه بازی ، کنار بگذارید .

13. تبریک می گویم

تبریک می گویم ، شما با موفقیت بازی خود را ، تمرین املایی ساخته اید!

شما اکنون مراحل اصلی لازم برای ساختن یک بازی را با استفاده از Firestore Cloud ، توابع ابر و Assistant Assistant Action Builder می دانید.

آنچه را پوشانده اید

  • نحوه تعامل با Firestore Cloud
  • نحوه استفاده از اسلات برای جمع آوری داده ها از کاربر
  • نحوه پردازش ورودی کاربر و بازگشت پاسخ
  • نحوه استفاده از شرایطی برای افزودن منطق به صحنه
  • نحوه اضافه کردن یک حلقه بازی

منابع یادگیری اضافی

شما می توانید برای یادگیری در مورد اقدامات برای دستیار Google این منابع را کشف کنید:

پروژه خود را پاک کنید [توصیه شده]

برای جلوگیری از تحمل هزینه های احتمالی ، توصیه می شود پروژه هایی را که قصد استفاده از آنها را ندارید حذف کنید. برای حذف پروژه هایی که در این CodeLab ایجاد کرده اید ، این مراحل را دنبال کنید:

  1. برای حذف پروژه و منابع Firebase خود ، مراحل ذکر شده در بخش پروژه های خاموش (حذف) را انجام دهید.

احتیاط: اطمینان حاصل کنید که پروژه صحیح حذف را در صفحه تنظیمات کنسول Google Cloud انتخاب کرده اید.

  1. اختیاری: برای حذف بلافاصله پروژه خود از کنسول اقدامات ، مراحل ذکر شده در بخش حذف یک پروژه را تکمیل کنید. اگر این مرحله را کامل نکنید ، پروژه شما پس از حدود 30 روز به طور خودکار حذف می شود.

ActionSongOogle و FireBase را در توییتر دنبال کنید تا با آخرین اطلاعیه های ما در ارتباط باشید و به #googleio توییت کنید تا آنچه را که ساخته اید به اشتراک بگذارید!