1. סקירה כללית
פלטפורמת הפיתוח של Google Assistant מאפשרת ליצור תוכנה להרחבת הפונקציונליות של Google Assistant, העוזרת האישית הווירטואלית, ביותר ממיליארד מכשירים, כולל רמקולים חכמים, טלפונים, מכוניות, טלוויזיות, אוזניות ועוד. משתמשים מדברים עם Assistant כדי לבצע משימות, כמו קניית מצרכים או הזמנת נסיעה. כמפתחים, אתם יכולים להשתמש בפלטפורמה למפתחים של Assistant כדי ליצור ולנהל בקלות חוויות שיחה יעילות ומעניינות בין המשתמשים לבין שירות מילוי ההזמנות של צד שלישי.
בקודלאב הזה נסביר מושגים ברמה בינונית לפיתוח עם Google Assistant, Cloud Functions ו-Cloud Firestore. ב-Codelab הזה, בונים משחק שנקרא 'תרגול איות' שמשתמשת ב-Google Assistant כדי לבקש ממשתמשים לאיית מילים.
מה תפַתחו
ב-codelab הזה תלמדו ליצור משחק מתוחכם עם הפונקציונליות הבאה:
- מקבל תשובות מהמשתמש לגבי איות, ובהתאם לערך, משנה את ההנחיות לשיחת הצ'אט
- התשובה תכלול רמזים לגבי איות המילה, כמו ההגדרה שלה או חזרה על המילה
- יצירת לולאת משחק כדי שהמשתמש יוכל לקיים אינטראקציה עם Assistant שוב אחרי שהוא איית את המילה
לפני שמתחילים לפתח את האפליקציה, אפשר לבצע אינטראקציה עם הפעולה בשידור חי במכשיר עם Google Assistant מובנית. כדי לעשות את זה, אומרים "Ok Google, talk to buging Practice". נתיב ברירת המחדל של הפעולה הזו למשתמש חוזר נראה כמו האינטראקציה הבאה:
בסיום הקודלאב הזה, תהליך השיחה של הפעולה שהשלמתם יהיה:
מה תלמדו
- איך יוצרים אינטראקציה עם Cloud Firestore
- איך משתמשים ב-slots כדי לאסוף נתונים מהמשתמש
- איך לעבד קלט של משתמש ולהחזיר תשובה
- איך משתמשים בתנאים כדי להוסיף לוגיקה לסצנה
- איך מוסיפים לולאת משחק
מה צריך להכין
התנאים המוקדמים הנדרשים ל-codelab הזה כוללים את הדברים הבאים:
- דפדפן אינטרנט, כמו Google Chrome
- סביבת פיתוח משולבת (IDE) לצורכי כתיבת Cloud Functions.
- אמצעי תשלום. בקודלאב הזה נעשה שימוש ב-Cloud Functions for Firebase. כדי להשתמש ב-Cloud Functions for Firebase, הפרויקט צריך להיות בתוכנית התמחור Firebase Blaze (מידע נוסף).
- טרמינל להרצת פקודות מעטפת
- Node.js 10 ואילך
2. אחזור הקוד של הפונקציות
משכפלים את מאגר GitHub משורת הפקודה:
$ git clone https://github.com/FirebaseExtended/codelab-actions-firestore
3. יצירת פרויקט Firebase והגדרת האפליקציה
יוצרים פרויקט Firebase
- נכנסים ל-Firebase.
- במסוף Firebase, לוחצים על Add Project (הוספת פרויקט) (או על Create a project (יצירת פרויקט)), ואז נותנים שם לפרויקט ב-Firebase –
Spelling-Practice
.
- לוחצים על האפשרויות ליצירת פרויקט. מאשרים את התנאים של Firebase, אם מופיעה בקשה. מדלגים על הגדרת Google Analytics כי לא תשתמשו ב-Analytics באפליקציה הזו.
מידע נוסף על פרויקטים ב-Firebase זמין במאמר הסבר על פרויקטים ב-Firebase.
שדרוג לתוכנית התמחור של Blaze
כדי להשתמש ב-Cloud Functions for Firebase, צריך לשדרג את פרויקט Firebase לתוכנית התמחור והתשלומים של Bllaze. כלומר, תצרפו לפרויקט חשבון לחיוב ב-Google Cloud. לשם כך, תצטרכו לספק כרטיס אשראי או אמצעי תשלום אחר.
לכל הפרויקטים ב-Firebase, כולל אלה בתוכנית Blaze, עדיין יש גישה למכסות השימוש ללא עלות ב-Cloud Functions. השלבים שמפורטים ב-codelab הזה יהיו במסגרת מגבלות השימוש ללא עלות. עם זאת, יופיעו חיובים קטנים (כ-0.03$) מ-Cloud Storage, שבו מתארחים קובצי האימג' של ה-build של Cloud Functions.
4. התקנת ה-CLI של Firebase
באמצעות ה-CLI (ממשק שורת הפקודה) של Firebase אפשר לפרוס את Cloud Functions.
יש כמה אפשרויות להתקנת Firebase CLI, בהתאם למערכת ההפעלה ולתרחיש לדוגמה. בשלבים הבאים מתוארת האפשרות הנפוצה ביותר אם משתמשים גם ב-Cloud Functions.
- חשוב לוודא שהתקנתם את npm, שמגיע בדרך כלל עם Node.js.
- כדי להתקין או לשדרג את ה-CLI, מריצים את הפקודה הבאה ב-npm:
$ npm -g install firebase-tools
- כדי לוודא שה-CLI הותקן בצורה נכונה, מריצים את:
$ firebase --version
צריך לוודא שהגרסה של Firebase CLI היא בגרסה 9.0.0 ואילך, כדי שתכלול את כל התכונות העדכניות ביותר שנדרשות ל-Cloud Functions. אם לא, מריצים את npm להתקין -g firebase-tools כדי לשדרג כמו שמוצג למעלה.
- כדי לאשר את ה-CLI של Firebase, מריצים את:
$ firebase login
- מהספרייה 'התחלה של פונקציות איות', מגדירים את ה-CLI של Firebase כדי להשתמש בפרויקט Firebase. מריצים את הפקודה הבאה, בוחרים את מזהה הפרויקט ופועלים לפי ההוראות. כשמוצגת הנחיה, אפשר לבחור כינוי כלשהו, כמו
codelab
, למשל.
$ firebase use --add
5. ספריית הפונקציות
עכשיו נוסיף פונקציונליות באמצעות ה-SDK של Firebase ל-Cloud Functions כדי ליצור את הקצה העורפי של המשחק, תרגול איות.
Cloud Functions מאפשר לכם להריץ קוד בענן בלי להגדיר שרת. בשיעור הזה תלמדו איך ליצור פונקציות שמגיבות לאימות ב-Firebase, ל-Cloud Storage ולאירועים של מסד נתונים בזמן אמת ב-Firebase. נתחיל עם האימות.
כשמשתמשים ב-Firebase SDK ל-Cloud Functions, קוד הפונקציות נמצא בתיקייה 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.
קודם תייבא את המודולים הנדרשים, ואז תכתוב ארבע פונקציות במקום הערות ה-TODO. כדי לייבא את המודולים, ממשיכים לשלב הבא ב-Codelab.
6. לייבא את המודולים הנדרשים
בקודלאב הזה נדרשים שלושה מודולים.
- המודול
firebase-functions
מאפשר לנו לכתוב את הטריגרים של פונקציות Cloud - המודול
firebase-admin
מאפשר לנו להשתמש בפלטפורמת Firebase בשרת עם הרשאת אדמין, למשל כדי לכתוב ב-Cloud Firestore. - ספריית ה-Fulfillment של Node.js ב-Actions SDK ממלאת את הטיפולים של Actions SDK עבור Google Assistant.
- כדי להתקין את Actions SDK, מריצים את פקודת ה-npm הבאה:
$ npm install @assistant/conversation
- בקובץ
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.
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 Functions בכל פעם שנוצר מסמך חדש ב-Cloud Firestore. תתבצע קריאה ל-API dictionaryapi.dev
כדי לקבל הגדרות מילים באמצעות הפונקציה getWordDetailsFromDictionaryAPI
שכתבנו למעלה.
בקובץ index.js
, מחליפים את המשימה לביצוע עבור 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 Functions שמאחזרת רשימה של מילים לתרגול איות מ-Cloud Firestore בשביל Assistant. לשם כך אנחנו משתמשים ב-app handler.
בקובץ index.js
, מחליפים את הערך TODO של getSpellingWordList
בקוד הבא.
הוספת הפונקציה הזו למשתנה המיוחד app.handle
היא דרך להפוך את הפונקציה לזמינה דרך Assistant.
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; }); }); })
קבלת מילה מסשן של Assistant
אפשר לכתוב פונקציה של Cloud Functions שמחזירה את מילת האיות הבאה מרשימת המילים.
בקובץ index.js
, מחליפים את המשימה לביצוע עבור 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 Functions שחוזרת על המילה הנוכחית במשחק.
בקובץ index.js
, מחליפים את המשימה לביצוע עבור 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 Functions שמספקת את ההגדרה של המילה הנוכחית במשחק.
בקובץ index.js
, מחליפים את המשימה לביצוע עבור 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); });
בדיקת האיות של התגובה
אפשר לכתוב פונקציה של Cloud Functions שתבדוק את התשובה של המשתמש לגבי איות המילה הנוכחית במשחק.
בקובץ 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 Functions יהיו פעילות רק אחרי שפורסים אותן ב-Firebase.
מהרמה הבסיסית (root) של הספרייה 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
חשוב לרשום את כתובת ה-URL של נקודת הקצה (endpoint) של פונקציית ActionsOnGoogleFulfillment לשימוש מאוחר יותר. כדי לקבל את נקודת הקצה, פותחים את מסוף Firebase ולוחצים על הפרויקט spelling-practice. פותחים את מרכז הבקרה של Functions כדי להציג את נקודת הקצה של הפונקציות.
השלמת את ההוספה של כל הפונקציות הנדרשות. עכשיו נעבור להגדרה של Cloud Firestore.
8. הפעלת Cloud Firestore
צריך להפעיל את Cloud Firestore.
בקטע Build במסוף Firebase, לוחצים על Firestore. לאחר מכן לוחצים על יצירת מסד נתונים.
הגישה לנתונים ב-Cloud Firestore מבוקרת על ידי כללי אבטחה. כדי להתחיל, קודם צריך להגדיר כללים בסיסיים לגבי הנתונים. לוחצים על Firestore ואז על Rules Tab (כללים) במסוף 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
- במסוף Firebase, עוברים לקטע Cloud Firestore.
- לוחצים על + התחלת האוסף.
- בתיבת הטקסט Collection ID, מזינים
wordlist
ולוחצים על Next.
בשלב הבא ניצור מסמך עבור מילה: הסכם
- בתיבת הטקסט Document ID (מזהה מסמך), מזינים
agreement
. - בתיבת הטקסט Field מזינים
word
ובתיבת הטקסט Value מזיניםagreement
. - לוחצים על שמירה.
כשמוסיפים את המסמך הזה ל-Cloud Firestore, הוא מפעיל את הפונקציה create הימוריםWord לאחזר את פרטי ההגדרה של המילה. אפשר להוסיף עוד מילים (לדוגמה: כבוד, מכונית, נכון, לספר, טוב יותר, נסיעה יומית, ...) על ידי יצירת מסמך חדש לכל מילה.
10. הגדרת Google Assistant
בקטעים הבאים מוסבר איך להגדיר את סביבת הפיתוח של Google Assistant וליצור פרויקט Actions.
בדיקת הגדרות ההרשאות ב-Google
כדי לבדוק את הפעולה שתיצרו בסדנת הקוד הזו, תצטרכו להפעיל את ההרשאות הנדרשות כדי שהסימולטור יוכל לגשת לפעולה. כדי להפעיל את ההרשאות:
- עוברים לדף בקרת הפעילות בחשבון.
- נכנסים לחשבון Google, אם עדיין לא עשיתם זאת.
- מפעילים את ההרשאות הבאות:
- פעילות באינטרנט ובאפליקציות
- בקטע פעילות באינטרנט ובאפליקציות, מסמנים את התיבה שלצד הכללה של ההיסטוריה והפעילות של Chrome מאתרים, מאפליקציות וממכשירים המשתמשים בשירותי Google.
יוצרים פרויקט ב-Actions
פרויקט הפעולות הוא מאגר של הפעולה. כדי ליצור פרויקט פעולות עבור ה-Codelab הזה, מבצעים את השלבים הבאים:
- פותחים את מסוף Actions.
- לוחצים על פרויקט חדש.
- יש לאשר את התנאים וההגבלות
- מקלידים או בוחרים את החלק
spelling-practice-codelab
שיצרתם באמצעות מסוף Firebase. (השם הוא לעיונך הפנימי. לאחר מכן, אפשר להגדיר שם חיצוני לפרויקט.)
- לוחצים על ייבוא פרויקט.
- במסך איזה סוג של פעולה ברצונך ליצור?, בוחרים את הכרטיס בהתאמה אישית.
- לוחצים על הבא.
- בוחרים את הכרטיס Blank project.
- לוחצים על התחלת הבנייה.
- מזינים תרגול איות לשם המוצג ולוחצים על 'שמירה'.
המשתמשים מתחילים את השיחה עם הפעולה באמצעות הפעלה. לדוגמה, משתמשים יכולים להפעיל את הפעולה שלכם על ידי ביטוי כמו "Ok Google, talk to Spelling Practice", כאשר Spelling Practice הוא השם המוצג.
אם רוצים לפרוס את הפעולה בסביבת הייצור, צריך לתת לה שם מוצג. עם זאת, כדי לבדוק את הפעולה, לא צריך להגדיר את השם המוצג. במקום זאת, אפשר להשתמש בביטוי "דיבור אל אפליקציית הבדיקה שלי" בסימולטור כדי להפעיל את הפעולה.
הגדרת מילוי ההזמנות
צריך לחבר ל-Assistant את פונקציות הטיפול באירועים של Cloud Functions שכתבתם ופרסמתם מוקדם יותר בקודלאב הזה.
כדי להגדיר את מילוי ההזמנות:
- לוחצים על Webhook בתפריט הניווט הצדדי.
- בוחרים באפשרות Https endpoint (נקודת קצה מסוג Https) כאפשרות למלא את ההזמנה:
- מזינים את כתובת ה-URL של נקודת הקצה של הפונקציה בתיבת הטקסט HTTPs endpoint ולוחצים על Save (שמירה).
בקטע הבא תתבצע התאמה אישית של ההנחיה להפעלה הראשית של הדף במסוף Actions.
הגדרת ההפעלה הראשית
צריך לערוך את הקריאה הראשית כדי להגדיר מה יקרה אחרי שמשתמש יפעיל את הפעולה.
כברירת מחדל, הכלי ליצירת פעולות מספק הנחיה כללית כשההפעלה מופעלת ("Start building your Action by defining main invocation").
כדי לשנות את הבקשה שהפעולה שולחת חזרה למשתמש כשהוא מפעיל את הפעולה, פועלים לפי השלבים הבאים:
- לוחצים על הפעלה ראשית בניווט.
- מסמנים את התיבה
Call your webhook
ומוסיפים את השם של הגורם המטפל באירועיםgetSpellingWordList
בתיבת הטקסט. - בעורך הקוד, מחליפים את הטקסט בשדה
speech
בהודעת הפתיחה הבאה:Welcome to Spelling Practice
הערה: אפשר לערוך את ההנחיות בפורמט YAML או בפורמט JSON.
- לוחצים על שמירה.
בדיקת ההפעלה הראשית בסימולטור
הקונסולה ל-Actions כוללת כלי אינטרנט לבדיקת הפעולה שנקרא סימולטור. הממשק מדמה מכשירי חומרה ואת ההגדרות שלהם, כך שאפשר לשוחח עם הפעולה כאילו היא פועלת במסך חכם, בטלפון, ברמקול או ב-KaiOS.
כדי לבדוק את ההפעלה הראשית של הפעולה בסימולטור:
- בסרגל הניווט העליון, לוחצים על בדיקה כדי לעבור לסימולטור.
- כדי להפעיל את הפעולה בסימולטור, מקלידים
Talk to Spelling Practice
בשדה הקלט בפינה הימנית העליונה, ואז מקישים על Enter במקלדת.
כשתפעילו את ההפעלה העיקרית של הפעולה, Assistant תגיב עם הודעת הפתיחה המותאמת אישית. בשלב הזה, השיחה תסתיים אחרי ש-Assistant תגיב פתיח.
צפייה ביומני האירועים
בכרטיסייה בדיקה, בחלונית שמשמאל מוצגים יומני האירועים, שמציגים את היסטוריית השיחות כיומני אירועים. בכל יומן אירועים מוצגים האירועים שהתרחשו במהלך התור הזה בשיחה. כדי להציג את יומן האירועים, לוחצים על הסמל האפור לפני האירוע.
לפעולה יש כרגע יומן אירועים אחד, שבו מוצגים הנתונים של המשתמש ("דיבור אל תרגול איות") וגם של התגובה של הפעולה. בצילום המסך הבא מוצג יומן האירועים של הפעולה:
11. יצירת השיחה לתרגול איות
עכשיו, אחרי שהגדרתם מה קורה אחרי שמשתמש מפעיל את הפעולה, אתם יכולים להמשיך לפתח את שאר השיחה עם הפעולה. תרגול האיות כולל ארבע סצנות, וצריך להפעיל כל סצנה כדי שהיא תוכל לפעול. הדרך הנפוצה ביותר להפעיל סצנה היא להגדיר את הפעולה כך שכאשר משתמש תואם לכוונה של משתמש בסצנה, הכוונה הזו מפעילה את המעבר לסצנה אחרת ומפעילה אותה.
מעבר מהקריאה הראשית לסצנת ההתחלה
בקטע הזה יוצרים סצנה חדשה בשם Start
, ששולחת למשתמש הודעה עם שאלה אם הוא רוצה להתחיל לשחק בתרגול איות. אתם מוסיפים גם מעבר מההפעלה הראשית לסצנה החדשה של Start
.
כדי ליצור את הסצנה הזו ולהוסיף לה מעבר:
- בתפריט הניווט שבחלק העליון של הדף לוחצים על פיתוח. לאחר מכן, לוחצים על Main invocation בתפריט הניווט הימני.
- בקטע Transition (מעבר) שמשמאל, לוחצים על התפריט הנפתח ומקלידים
Start
בשדה הטקסט.
- לוחצים על הוספה. נוצרת סצנה בשם
Start
, שמציינת לפעולה לעבור לסצנהStart
אחרי שהפעולה כוללת את הודעת הפתיחה למשתמש. - לוחצים על Scenes (סצנות) בתפריט הניווט הימני כדי להציג את רשימת הסצנות.
- בקטע Scenes (סצנות), לוחצים על Start (התחלה) כדי להציג את הסצנה
Start
. - לוחצים על + בקטע בכניסה של הסצנה
Start
. - בוחרים באפשרות שליחת הנחיות.
- מחליפים את המשפט שבשדה
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
, מבצעים את השלבים הבאים:
- בסצנה
Start
, לוחצים על 'הצעות' מתחת לעורך הקוד. הפעולה הזו מוסיפה צ'יפ הצעה יחיד. - בשדה
title
, מחליפים אתSuggested Response
ב-'Yes'
. - מוסיפים ידנית צ'יפ של הצעה באותו עיצוב:
'No'
ו-'Help with Phonetics'
. הקוד אמור להיראות כמו קטע הקוד הבא: - לוחצים על שמירה.
בדיקת הפעולה בסימולטור
בשלב הזה, הפעולה צריכה לעבור מההפעלה הראשית לסצנה Start, ולשאול את המשתמשים אם הם רוצים להמשיך. צ'יפים של הצעות אמורים להופיע גם בתצוגה המדומה.
כדי לבדוק את הפעולה בסימולטור, פועלים לפי השלבים הבאים:
- בסרגל הניווט, לוחצים על בדיקה כדי לעבור לסימולטור.
- כדי לבדוק את הפעולה בסימולטור, מקלידים
Talk to Spelling Practice
בשדה הקלט. - מקישים Enter. הפעולה צריכה לכלול את ההנחיה
Main invocation
וההנחיה שמופיעה בסצנהStart
בתור "Welcome to בניהול תרגול איות". אפשר להשתמש באלפבית הפונטי כדי לאיית את המילה. לדוגמה alpha עבור a, bravo for b, charlie for c וכו'. רוצה להמשיך?"
האינטראקציה הזו מוצגת בצילום המסך הבא:
- לוחצים על צ'יפ ההצעה
Yes
אוNo
אוHelp with Phonetics
כדי להגיב להנחיה. (אפשר גם לומר "כן" או "לא" או "עזרה עם ההגייה" או להזיןYes
אוNo
אוHelp with Phonetics
בשדה קלט).
כשמגיבים להנחיה, הפעולה משיבה הודעה שמציינת שהיא לא מבינה את הנתונים שהזנת: "סליחה, לא הבנתי. תוכל לנסות שוב?" עדיין לא הגדרת את הפעולה כך שהיא תבין את הקלטים 'כן' או 'לא' ולהשיב להם, ולכן הפעולה מתאימה את הקלט ל-Intent של NO_MATCH
.
כברירת מחדל, כוונת המערכת NO_MATCH
מספקת תשובות כלליות, אבל אפשר להתאים אישית את התשובות האלה כדי להצביע למשתמש שלא הבנתם את הקלט שלו. Assistant מסיימת את השיחה של המשתמש עם הפעולה שלכם אחרי שהיא לא מצליחה להתאים את הקלט של המשתמש שלוש פעמים.
הוספת כוונות של 'לא' וכוונות פונטיות
עכשיו, כשהמשתמשים יכולים להשיב לשאלה של הפעולה, אפשר להגדיר את הפעולה כך שתבין את התשובות של המשתמשים ("כן" או "לא" או "עזרה עם הפונטיקה"). בקטעים הבאים, יוצרים כוונות של משתמשים שמותאמות למשתמשים כשאומרים 'כן', 'לא' או 'עזרה בנושא פונטיקה'. ולהוסיף את ה-Intents האלה לסצנה Start
. נשתמש בכוונה המערכת yes
ונתכנן כוונות אחרות.
יצירת Intent מסוג no
עכשיו צריך ליצור את הכוונה no
כדי להבין את המשתמש ולענות לו כשהוא לא רוצה לשחק במשחק. כדי ליצור את Intent, צריך לפעול לפי השלבים הבאים:
- לוחצים על פיתוח בתפריט הניווט.
- לוחצים על Custom Intents (כוונות מותאמות אישית) בתפריט הניווט כדי לפתוח את רשימת הכוונות.
- לוחצים על + (סימן פלוס) בסוף רשימת הכוונות. נותנים שם ל-Intent החדש
no
ומקישים על Enter. - לוחצים על לא כדי לפתוח את דף ה-Intent
no
. - בקטע Add training phrases, לוחצים על תיבת הטקסט Enter Phrase ומזינים את הביטויים הבאים:
No
N
I don't want
nope
- לוחצים על שמירה.
הוספת הכוונה no
לסצנה Start
עכשיו הפעולה יכולה להבין מתי משתמש אומר 'לא' או משהו שדומה ל'לא', כמו 'לא'. אתם צריכים להוסיף את הכוונה של המשתמשים ב-no
לסצנה Start
כי המשתמש מגיב להנחיה Start
("אנחנו שמחים שהצטרפת לתרגול איות. משתמשים באלפבית הפונטי כדי לאיית את המילה. לדוגמה alpha עבור a, bravo for b, charlie for c וכו'. רוצה להמשיך?").
כדי להוסיף את הכוונה הזו לסצנה Start
:
- לוחצים על הסצנה התחלה בתפריט הניווט.
- לוחצים על + (סמל הפלוס) בסצנה
Start
לצד 'טיפול בכוונת המשתמש'. - בקטע Intent, בוחרים באפשרות no בתפריט הנפתח.
- לוחצים על שליחת הנחיות ומעדכנים את השדה
speech
בטקסט הבא:Good Bye
.
הקוד בעורך אמור להיראות כמו קטע הקוד הבא:
candidates: - first_simple: variants: - speech: >- Goodbye.
- בקטע מעבר, בוחרים באפשרות סיום השיחה בתפריט הנפתח.
- לוחצים על שמירה.
בדיקת ה-Intent של no
בסימולטור
בשלב הזה, הפעולה מבינה מתי המשתמש לא רוצה לשחק במשחק, ומחזירה את התגובה המתאימה.
כדי לבדוק את הכוונה הזו בסימולטור:
- בסרגל הניווט, לוחצים על בדיקה.
- מקלידים
Talk to Spelling Practice
בשדה להזנת קלט ומקישים עלEnter
. - מקלידים
No
בשדה Input (קלט) ומקישים על Enter. לחלופין, לוחצים על הצ'יפ 'אין הצעה'.
הוספת הכוונה YES
למערכת לסצנה Start
עכשיו נוסיף את הכוונה SYSTEM "YES" לסצנה Start
, כי המשתמש משיב 'כן' להנחיה Start
('Welcome to Spelling Practice. אפשר להשתמש באלפבית הפונטי כדי לאיית את המילה. לדוגמה, alpha עבור a, bravo עבור b, charlie עבור c וכו'. רוצה להמשיך?").
כדי להוסיף את כוונת המשתמש הזו לסצנה Start
:
- לוחצים על הסצנה התחלה בתפריט הניווט.
- לוחצים על + (סימן הפלוס) בסצנה
Start
לצד טיפול בכוונות משתמש. - בקטע 'כל אובייקטי המערכת', בוחרים באפשרות כן בתפריט הנפתח של Intent.
- לוחצים על Call your webhook (קריאה לתגובה לפעולה מאתר אחר) ומעדכנים את תיבת הטקסט
event handler
בפונקציה שיצרתם מקודם:getSpellingWordList
- בקטע Transition (מעבר), לוחצים על התפריט הנפתח ובוחרים באפשרות End conversation (סיום השיחה).
- לוחצים על שמירה.
בדיקת הכוונה YES
בסימולטור
בשלב הזה, הפעולה מבינה מתי המשתמש רוצה לשחק במשחק ומחזירה את התגובה המתאימה.
כדי לבדוק את הכוונה הזו בסימולטור:
- בסרגל הניווט, לוחצים על בדיקה.
- כדי לבדוק את הפעולה בסימולטור, מקלידים
Talk to Spelling Practice
בשדה קלט ומקישים על Enter. - מקלידים
Yes
בשדה קלט ומקישים על Enter. לחלופין, לוחצים על צ'יפ ההצעהYes
.
הפעולה מאחזרת רשימה של כל מילות האימון לאיות ושומרת אותן בסשן. לאחר מכן, הפעולה תסתיים את הסשן כי בחרתם את המעבר End conversation
לכוונה YES
.
יצירת כוונה מסוג Phonetics
כדי ליצור את הכוונה Phonetics
:
- לוחצים על פיתוח בתפריט הניווט.
- לוחצים על Custom Intents (כוונות מותאמות אישית) בתפריט הניווט כדי לפתוח את רשימת הכוונות.
- לוחצים על + (סימן חיבור) בסוף רשימת ה-Intent. נותנים שם לכוונה החדשה
phonetics
ולוחצים עלEnter
. - לוחצים על הכוונה
phonetics
כדי לפתוח את דף הכוונהphonetics
. - בקטע 'הוספת ביטויים לאימון', לוחצים על תיבת הטקסט הזנת ביטוי ומזינים את הביטויים הבאים:
how do I spell words
phonetics
help me with phonetics
phonetic alphabet
- לוחצים על שמירה.
הוספת Intent מסוג phonetics
לסצנה אחת (Start
)
עכשיו הפעולה יכולה להבין מתי המשתמש מבטא כוונה פונטית. אתם יכולים להוסיף את הכוונה של המשתמשים ב-phonetics
לסצנה Start
, כי המשתמש מגיב להנחיה Start
("אנחנו שמחים שהצטרפת לתרגול איות. אפשר להשתמש באלפבית הפונטי כדי לאיית את המילה. לדוגמה, alpha עבור a, bravo עבור b, charlie עבור c וכו'. רוצה להמשיך?").
כדי להוסיף את הכוונה של המשתמש לסצנה Start
, פועלים לפי השלבים הבאים:
- לוחצים על הסצנה התחלה בתפריט הניווט.
- לוחצים על הסמל + (פלוס) בסצנה
Start
לצד 'טיפול בכוונת המשתמש'. - בוחרים באפשרות פונטיקה בתפריט הנפתח של Intent.
- בקטע מעבר, לוחצים על התפריט הנפתח ובוחרים באפשרות סיום השיחה.
- לוחצים על שמירה.
מעבר מסצנת ההתחלה לסצנת איות
בקטע הזה יוצרים סצנה חדשה בשם איות, שבה נשלחת למשתמש הנחיה לאיית את המילה באמצעות האלפבית הפונטי.
כדי ליצור את הסצנה הזו ולהוסיף לה מעבר, מבצעים את השלבים הבאים:
- לוחצים על פיתוח בסרגל הניווט העליון. לאחר מכן, לוחצים על הסצנה התחלה בתפריט הניווט הימני.
- בקטע טיפול בכוונת המשתמש, לוחצים על
when actions.intent.YES is matched
, ובצד שמאל בקטע מעבר, לוחצים על התפריט הנפתח ומקלידיםSpelling
בשדה הטקסט. - לוחצים על הוספה. הפעולה הזו יוצרת סצנה בשם
Spelling
ומורה לפעולה לעבור לסצנהSpelling
אחרי ההתאמה עם הכוונה YES. - מרחיבים את הקטע סצנות בתפריט הניווט הימני כדי להציג את רשימת הסצנות.
- בקטע סצנות, לוחצים על 'איות' כדי לראות את הסצנה
Spelling
. - לוחצים על + בקטע On enter (כשנכנסים) בסצנה
Spelling
. - לוחצים על Call your webhook (קריאה להווק-בק) ומזינים getSpellingWord (קבלת מילה לאיות) בתיבת הטקסט של פונקציית הטיפול באירוע.
- בוחרים באפשרות שליחת הנחיות.
- מחליפים את המשפט בשדה
speech
(Enter the response that users will see or hear...
) ב-{}. ההנחיה בפועל תתמלא על ידי webhook.
צ'יפים של הצעות מכילים הצעות למשתמש שניתן ללחוץ עליהן, שאותן הפעולה מעבדת כקלט של משתמשים.
כדי להוסיף צ'יפים של הצעות להנחיה של הסצנה Spelling
:
- בסצנה
Spelling
, לוחצים על 'הצעות' מתחת לעורך הקוד. הפעולה הזו מוסיפה שלושה צ'יפים של הצעות. - בשדה
title
, מחליפים אתSuggested Response
ב-'Repeat'
. - באותו עיצוב, מוסיפים באופן ידני צ'יפ הצעה בשם
'Skip'
. - באותו עיצוב, מוסיפים באופן ידני צ'יפ הצעה בשם
'Quit'
. הקוד שלכם אמור להיראות כמו קטע הקוד הבא: - לוחצים על שמירה.
suggestions: - title: 'Repeat' - title: 'Skip' - title: 'Quit'
יצירת כוונה Repeat
כדי ליצור את ה-Intent repeat
, פועלים לפי השלבים הבאים:
- לוחצים על פיתוח בתפריט הניווט.
- לוחצים על Custom Intents (כוונות מותאמות אישית) בתפריט הניווט כדי לפתוח את רשימת הכוונות.
- לוחצים על + (סימן פלוס) בסוף רשימת הכוונות. נותנים שם לכוונה החדשה
repeat
ולוחצים עלEnter
. - לוחצים על הסמל Intent
repeat
כדי לפתוח את דף ה-Intentdefinition
. - בקטע Add training phrases (הוספת ביטויים לאימון), לוחצים על תיבת הטקסט Enter Phrase (הזנת ביטוי) ומזינים את הביטויים הבאים:
one more time please
say the word again
repeat the word
tell me again
repeat
- לוחצים על שמירה.
הוספת Intent מסוג repeat
לסצנה אחת (Spelling
)
עכשיו, הפעולה יכולה להבין מתי משתמש מביע כוונה של 'חזרה'. אפשר להוסיף את כוונת המשתמש repeat
לסצנה Spelling
, כי המשתמש מגיב להנחיה Spelling
('צריך לאיית את המילה באמצעות האלפבית הפונטי').
כדי להוסיף את הכוונה של המשתמש לסצנה Spelling
, פועלים לפי השלבים הבאים:
- לוחצים על הסצנה איות בתפריט הניווט.
- לוחצים על + (סמל הפלוס) בסצנה
Spelling
לצד טיפול בכוונת המשתמש. - בוחרים באפשרות חזרה בתפריט הנפתח של Intent.
- מסמנים את התיבה Call your webhook ומזינים repeatSpellingWord בתיבת הטקסט של פונקציית הטיפול באירוע כדי לקבל את הגדרת המילה.
- מסמנים את האפשרות שליחת הנחיות.
- מחליפים את המשפט בשדה
speech
(Enter the response that users will see or hear...
) ב-'. ההנחיה בפועל תתמלא על ידי webhook.
הוספת צ'יפים של הצעות למצב 'מתי יש התאמה לחזרה'
- בקטע מתי יש התאמה לחזרה" בקטע 'טיפול בכוונת המשתמש', לוחצים על הצעות מתחת לעורך הקוד. הפעולה הזו מוסיפה שלושה צ'יפים של הצעות.
- בשדה
title
, מחליפים אתSuggested Response
ב-'Skip'
. - מוסיפים ידנית צ'יפ הצעה בשם
'Quit'
באותו עיצוב.הקוד אמור להיראות כמו קטע הקוד הבא:
suggestions: - title: 'Skip' - title: 'Quit'
- לוחצים על שמירה.
יצירת כוונה מסוג definition
כדי ליצור את הכוונה definition
:
- לוחצים על פיתוח בתפריט הניווט.
- לוחצים על Custom Intents (כוונות מותאמות אישית) בתפריט הניווט כדי לפתוח את רשימת הכוונות.
- לוחצים על + (סימן חיבור) בסוף רשימת ה-Intent. נותנים שם לכוונה החדשה
definition
ולוחצים עלEnter
. - לוחצים על הכוונה
definition
כדי לפתוח את דף הכוונהdefinition
. - בקטע הוספת ביטויים לאימון, לוחצים על תיבת הטקסט הזנת ביטוי ומזינים את הביטויים הבאים:
I would like to know the definition
tell me the definition
what does it mean
meaning
definition
what is the definition?
- לוחצים על שמירה.
הוספת Intent מסוג definition
לסצנה אחת (Spelling
)
עכשיו המערכת יכולה להבין מתי משתמש מביע כוונה מסוג 'הגדרה'. אפשר להוסיף את כוונת המשתמש definition
לסצנה Spelling
, כי המשתמש מגיב להנחיה Spelling
('צריך לאיית את המילה באמצעות האלפבית הפונטי').
כדי להוסיף את הכוונה של המשתמש לסצנה Spelling
, פועלים לפי השלבים הבאים:
- לוחצים על הסצנה איות בתפריט הניווט.
- לוחצים על + (סימן הפלוס) בסצנה
Spelling
לצד טיפול בכוונות משתמש. - בוחרים באפשרות הגדרה בתפריט הנפתח של Intent.
- מסמנים את התיבה Call your webhook ומזינים את הערך definitionOf תקינותWord בתיבת הטקסט של הגורם המטפל באירועים כדי לקבל את הגדרת המילה.
- מסמנים את האפשרות שליחת הנחיות.
- מחליפים את המשפט שבשדה
speech
(Enter the response that users will see or hear...
) ב-'''. ההנחיה עצמה תאוכלס על ידי תגובה לפעולה מאתר אחר (webhook).
הוספת צ'יפים של הצעות ל-webhook
- בסצנה
Start
, לוחצים על הצעות מתחת לעורך הקוד. הפעולה הזו מוסיפה שלושה צ'יפים של הצעות. - בשדה
title
, מחליפים אתSuggested Response
ב-'Skip'
. - מוסיפים ידנית צ'יפ הצעה בשם
'Quit'
באותו עיצוב.הקוד אמור להיראות כמו קטע הקוד הבא:
suggestions: - title: 'Skip' - title: 'Quit'
- לוחצים על שמירה.
יצירת כוונה skip
כדי ליצור את הכוונה skip
:
- לוחצים על פיתוח בתפריט הניווט.
- לוחצים על Intents (כוונות) בתפריט הניווט כדי לפתוח את רשימת הכוונות.
- לוחצים על + (סימן פלוס) בסוף רשימת הכוונות. נותנים שם ל-Intent החדש
skip
ולוחצים עלEnter
. - לוחצים על הכוונה
skip
כדי לפתוח את דף הכוונהskip
. - בקטע הוספת ביטויים לאימון, לוחצים על תיבת הטקסט הזנת ביטוי ומזינים את הביטויים הבאים:
next word
go next
next
skip
skip word
- לוחצים על שמירה.
הוספת Intent מסוג Skip
לסצנה אחת (Spelling
)
עכשיו המערכת יכולה להבין מתי משתמש מביע כוונה 'דילוג'. אפשר להוסיף את כוונת המשתמש skip
לסצנה Spelling
, כי המשתמש מגיב להנחיה Spelling
('צריך לאיית את המילה באמצעות האלפבית הפונטי').
כדי להוסיף את הכוונה של המשתמש לסצנה Spelling
, פועלים לפי השלבים הבאים:
- לוחצים על סצנת איות בניווט.
- לוחצים על + (סימן הפלוס) בסצנה
Spelling
לצד שיתוף כוונת המשתמש. - בתפריט הנפתח של הכוונה, בוחרים באפשרות דילוג.
- בקטע Transition (מעבר) שבצד שמאל, לוחצים על התפריט הנפתח ובוחרים באפשרות
Spelling
.
- לוחצים על שמירה.
יצירת כוונה quit
כדי ליצור את ה-Intent Quit
, פועלים לפי השלבים הבאים:
- לוחצים על פיתוח בתפריט הניווט.
- לוחצים על Intents (כוונות) בתפריט הניווט כדי לפתוח את רשימת הכוונות.
- לוחצים על + (סימן פלוס) בסוף רשימת הכוונות. נותנים שם ל-Intent החדש
Quit
ולוחצים עלEnter
. - לוחצים על ה-Intent
Quit
כדי לפתוח את דף ה-Intent להגדרה. - בקטע הוספת ביטויים לאימון, לוחצים על תיבת הטקסט הזנת ביטוי ומזינים את הביטויים הבאים:
I quit
Goodbye
Cancel
Exit
Quit
- לוחצים על שמירה.
הוספת הכוונה Quit
לסצנה Spelling
עכשיו הפעולה יכולה להבין מתי משתמש מביע כוונה לעזיבה. אתם יכולים להוסיף את הכוונה של המשתמשים ב-quit
לסצנה Spelling
, כי המשתמש מגיב להנחיה Spelling
("איות המילה פונטית").
כדי להוסיף את כוונת המשתמש הזו לסצנה Spelling
:
- לוחצים על הסצנה איות בתפריט הניווט.
- לוחצים על + (סימן הפלוס) בסצנה
Spelling
לצד טיפול בכוונות משתמש. - בתפריט הנפתח של הכוונה, בוחרים באפשרות quit.
- בקטע מעבר משמאל, לוחצים על התפריט הנפתח ובוחרים באפשרות
End conversation
. - לוחצים על שמירה.
יצירה של סוג phonetic_alphabet
בקטע הזה יוצרים סוג חדש שנקרא phonetic_alphabet
, שמציין את האפשרויות של האלפבית הפונטי שהמשתמשים יכולים לבחור כדי לאיית את המילה. אפשר גם להגדיר כמה מילים נרדפות לאפשרויות האלה, למקרה שמשתמש יגיד משהו דומה. בקטע מאוחר יותר, תוסיפו את הסוג phonetic_alphabet
לחריץ כדי לציין שאתם רוצים לקבל את התשובה של המשתמש.
כדי ליצור את הסוג phonetic_alphabet
:
- לוחצים על פיתוח בתפריט הניווט.
- לוחצים על + (סמל הפלוס) בקטע סוגים.
- מקלידים
phonetic_alphabet
ומקישים עלEnter
. - לוחצים על
phonetic_alphabet
כדי לפתוח את האפשרויות. - בקטע What kind of values will this Type support?, בוחרים באפשרות Words and synonyms.
- מזינים את הרשומות הבאות ואת הערכים התואמים בקטע הוספת ערכים:
א | אלפא, תפוח, אמסטרדם |
b | בראבו, חמאה, בולטימור |
ג | צ'רלי, חתול, קזבלנקה |
י | delta, dog, denmark |
e | הד, אדוארד, אדיסון |
f | פוקסטרוט, שועל, פלורידה |
G | גולף, ג'ורג', גליפולי |
h | hotel, harry, havana |
א | הודו, דיו, איטליה |
j | juliette, johnny, jerusalem |
K | kilo, king, kilogramme |
l | לימה, אהבה, לונדון |
m | mike, money, madagascar |
ל | נובמבר, ניו יורק, ננסי |
o | אוסקר, כתום, אוסלו |
p | papa, paris, peter |
רבעון | קוויבק, מלכה |
r | romeo, roma, robert |
s | sierra, sugar, santiago |
t | טנגו, טומי, טריפולי |
u | אחידה, מטרייה, דוד |
v | ויקטור, חומצה, ולנסיה |
w | whiskey, william, washington |
x | צילום רנטגן |
שנה | ינקי, צהוב, יורקר |
z | זולו, זברה, ציריך |
טבלת המפתחות-הערכים אמורה להיראות כך:
- לוחצים על שמירה.
הגדרת מילוי של יחידות קיבולת (Slot)
בשלב הבא צריך להגדיר מילוי של יחידות קיבולת (Slot) בסצנת האיות. כדי להגדיר את הלוגיקה של מילוי המשבצות, פועלים לפי השלבים הבאים:
- לוחצים על סצנת איות בניווט.
- לוחצים על + (סימן חיבור) בסצנה
Spelling
של מילוי משבצת. - בשדה שם של משבצת הזמן, מוסיפים את השם
userresponse
בתור השם של המשבצת. - בתפריט הנפתח Select type, בוחרים באפשרות phonetic_alphabet בתור סוג החריץ.
- מסמנים את התיבה המשבצת הזו מקבלת רשימת ערכים
- מסמנים את האפשרות המשבצת הזו נדרשת.
- בוחרים באפשרות Customize slot value writeback ומזינים את userresponse בתיבת הטקסט של פרמטר הסשן.
- לוחצים על שמירה.
הוספת תנאי למסך Spelling
כדי להוסיף תנאי לסצנה Spelling
:
- לוחצים על הסצנה איות בתפריט הניווט.
- לוחצים על + (סמל הפלוס) בסצנה
Spelling
לצד 'תנאי'. - יש להזין
scene.slots.status == "FINAL"
כתנאי - מסמנים את התיבה Call your webhook ומזינים verifySpellingWord בתיבת הטקסט של פונקציית הטיפול באירוע כדי לאמת את התשובה של המשתמש.
- מסמנים את התיבה שליחת הנחיות.
- מחליפים את המשפט שבשדה
speech
(Enter the response that users will see or hear...
) בטקסט {}. ההנחיה עצמה תאוכלס על ידי תגובה לפעולה מאתר אחר (webhook).
הוספת צ'יפים של הצעות לתשובה של ה-webhook
- בסצנה
Start
, לוחצים על הצעות מתחת לעורך הקוד. הפעולה הזו מוסיפה שלושה צ'יפים של הצעות. - בשדה
title
, מחליפים אתSuggested Response
ב-'Next'
. - באותו פורמט, מוסיפים באופן ידני צ'יפ הצעה בשם
'Quit'
. הקוד אמור להיראות כך:
suggestions: - title: 'Next' - title: 'Quit'
- לוחצים על שמירה.
12. בדיקת תרגול איות בסימולטור
כדי לבדוק את הפעולה בסימולטור:
- בסרגל הניווט, לוחצים על בדיקה כדי לעבור לסימולטור.
- כדי לבדוק את הפעולה בסימולטור, מקלידים
Talk to Spelling Practice
בשדה הקלט. - מקישים Enter. הפעולה אמורה להשיב עם ההנחיה
Main invocation
והנחיית הסצנהStart
שנוספה, "Welcome to Spelling Practice. אפשר להשתמש באלפבית הפונטי כדי לאיית את המילה. לדוגמה alpha עבור a, bravo for b, charlie for c וכו'. רוצה להמשיך?" - אומרים כן כדי להמשיך.
- הסימולטור ישמיע צליל של מילה כדי לאיית אותה
- אפשר לאיית את המילה באותיות פונטיות. לדוגמה, כדי לומר טוב יותר, אומרים או מקלידים "bravo echo tango tango echo romeo".
- הסימולטור יגיב בתשובה הנכונה או השגויה.
- אומרים next (הבא) כדי להמשיך למילה הבאה, או quit (יציאה) כדי לצאת ממחזור המשחק.
13. מזל טוב
מזל טוב, סיימת ליצור את המשחק תרגול איות!
עכשיו אתם יודעים מהם השלבים העיקריים שנדרשים כדי לפתח משחק באמצעות Cloud Firestore, Cloud Functions ו-Google Assistant Action Builder.
מה כיסית
- איך ליצור אינטראקציה עם Cloud Firestore
- איך משתמשים ב-slots כדי לאסוף נתונים מהמשתמש
- איך לעבד קלט של משתמש ולהחזיר תשובה
- איך משתמשים בתנאים כדי להוסיף לוגיקה לסצנה
- איך מוסיפים לולאת משחק
מקורות מידע נוספים ללמידה
אתם יכולים להיעזר במקורות המידע הבאים כדי ללמוד איך יוצרים פעולות ל-Google Assistant:
- מסמכי תיעוד לפיתוח פעולות ל-Google Assistant
- פעולות בדף Google GitHub של ספריות וקוד לדוגמה
- הקהילה הרשמית של Reddit למפתחים שעובדים עם Google Assistant
- הנחיות לתכנון שיחות – שיטות מומלצות והנחיות לגבי פעולות שיחה
- מבוא ל-Cloud Firestore
פינוי מקום בפרויקט [מומלץ]
כדי להימנע מחיובים אפשריים, מומלץ להסיר פרויקטים שלא מתכוונים להשתמש בהם. כדי למחוק את הפרויקטים שיצרתם בקודלאב הזה:
- כדי למחוק את הפרויקט ואת המשאבים ב-Firebase, מבצעים את השלבים שמפורטים בקטע השבתה (מחיקה) של פרויקטים.
זהירות: חשוב להקפיד לבחור את הפרויקט הנכון למחיקה בדף Settings (הגדרות) במסוף Google Cloud.
- אופציונלי: כדי להסיר את הפרויקט באופן מיידי מהמסוף של Actions, מבצעים את השלבים שמפורטים בקטע מחיקת פרויקט. אם לא תשלימו את השלב הזה, הפרויקט יוסר באופן אוטומטי אחרי כ-30 יום.
עוקבים אחר @ActionsOnGoogle וב- @Firebase בטוויטר, כדאי לעקוב אחר ההודעות האחרונות שלנו ולשלוח ציוץ אל #GoogleIO כדי לשתף את הפיתוחים שלכם!