1. खास जानकारी
Google Assistant डेवलपर प्लैटफ़ॉर्म की मदद से, ऐसा सॉफ़्टवेयर बनाया जा सकता है जिससे Google Assistant की सुविधाओं को बढ़ाया जा सके. Google Assistant एक वर्चुअल निजी असिस्टेंट है. इसकी सुविधा, स्मार्ट स्पीकर, फ़ोन, कार, टीवी, हेडफ़ोन वगैरह जैसे 100 करोड़ से ज़्यादा डिवाइसों पर उपलब्ध है. लोग, Assistant से बातचीत करके कई काम करते हैं. जैसे, किराने का सामान खरीदना या टैक्सी बुक करना. डेवलपर के तौर पर, Assistant डेवलपर प्लैटफ़ॉर्म का इस्तेमाल करके, उपयोगकर्ताओं और तीसरे पक्ष की फ़ुलफ़िलमेंट सेवा के बीच बातचीत को आसानी से बनाया और मैनेज किया जा सकता है. इससे उपयोगकर्ताओं को बेहतर और असरदार अनुभव मिलता है.
इस कोडलैब में, Google Assistant, Cloud Functions, और Cloud Firestore का इस्तेमाल करके डेवलपमेंट करने से जुड़े इंटरमीडिएट-लेवल के कॉन्सेप्ट शामिल हैं. इस कोडलैब में, "स्पेलिंग प्रैक्टिस" नाम का एक गेम बनाया जाएगा. इसमें Google Assistant का इस्तेमाल करके, उपयोगकर्ताओं से शब्दों की स्पेलिंग पूछी जाएगी.
आपको क्या बनाने को मिलेगा
इस कोडलैब में, आपको एक ऐसा गेम बनाने का तरीका बताया जाएगा जिसमें ये सुविधाएं होंगी:
- यह कुकी, उपयोगकर्ता से स्पेलिंग के जवाब पाती है. साथ ही, वैल्यू के आधार पर बातचीत के प्रॉम्प्ट में बदलाव करती है
- शब्द की स्पेलिंग से जुड़ी जानकारी देता है. जैसे, शब्द की परिभाषा या शब्द को दोहराना
- यह कुकी, गेम लूप बनाती है, ताकि उपयोगकर्ता शब्द की स्पेलिंग बताने के बाद, Assistant के साथ फिर से इंटरैक्ट कर सके
बनाने की प्रोसेस शुरू करने से पहले, Google Assistant की सुविधा वाले डिवाइस पर लाइव कार्रवाई की जा सकती है. इसके लिए, "Ok Google, Spelling Practice से बात करो" कहें. दोबारा आने वाले उपयोगकर्ता के लिए, इस कार्रवाई का डिफ़ॉल्ट पाथ इस तरह के इंटरैक्शन जैसा दिखता है:
इस कोडलैब को पूरा करने के बाद, आपकी पूरी की गई कार्रवाई में बातचीत का यह फ़्लो होगा:

आपको क्या सीखने को मिलेगा
- Cloud Firestore के साथ इंटरैक्ट करने का तरीका
- उपयोगकर्ता से डेटा इकट्ठा करने के लिए, स्लॉट का इस्तेमाल कैसे करें
- उपयोगकर्ता के इनपुट को प्रोसेस करने और जवाब देने का तरीका
- किसी सीन में लॉजिक जोड़ने के लिए शर्तों का इस्तेमाल कैसे करें
- गेम लूप जोड़ने का तरीका
आपको इन चीज़ों की ज़रूरत होगी
इस कोडलैब के लिए, ये ज़रूरी शर्तें पूरी करनी होंगी:
- कोई वेब ब्राउज़र, जैसे कि Google Chrome
- Cloud Functions लिखने के लिए एक आईडीई.
- पेमेंट का तरीका. इस कोडलैब में, Firebase के लिए Cloud Functions का इस्तेमाल किया गया है. इसके लिए, आपके प्रोजेक्ट का Firebase Blaze प्लान पर होना ज़रूरी है ( ज़्यादा जानें).
- शेल कमांड चलाने के लिए टर्मिनल
- Node.js 10 या इसके बाद का वर्शन
2. फ़ंक्शन का कोड पाना
कमांड लाइन से GitHub रिपॉज़िटरी का क्लोन बनाएं:
$ git clone https://github.com/FirebaseExtended/codelab-actions-firestore
3. Firebase प्रोजेक्ट बनाना और ऐप्लिकेशन सेट अप करना
Firebase प्रोजेक्ट बनाना
- Firebase में साइन इन करें.
- Firebase कंसोल में, प्रोजेक्ट जोड़ें (या प्रोजेक्ट बनाएं) पर क्लिक करें. इसके बाद, अपने Firebase प्रोजेक्ट को
Spelling-Practiceनाम दें.

- प्रोजेक्ट बनाने के विकल्पों पर क्लिक करें. अगर आपसे Firebase की शर्तें स्वीकार करने के लिए कहा जाता है, तो उन्हें स्वीकार करें. Google Analytics को सेट अप करने की प्रोसेस छोड़ें, क्योंकि आपको इस ऐप्लिकेशन के लिए Analytics का इस्तेमाल नहीं करना है.
Firebase प्रोजेक्ट के बारे में ज़्यादा जानने के लिए, Firebase प्रोजेक्ट के बारे में जानकारी लेख पढ़ें.
ब्लेज़ प्लान पर अपग्रेड करना
Cloud Functions for Firebase का इस्तेमाल करने के लिए, आपको अपने Firebase प्रोजेक्ट को Blaze के प्राइसिंग प्लान पर अपग्रेड करना होगा. इसका मतलब है कि आपको अपने प्रोजेक्ट से Google Cloud Billing खाता जोड़ना होगा. इसके लिए, आपको क्रेडिट कार्ड या पेमेंट का कोई दूसरा तरीका देना होगा.
Blaze प्लान वाले Firebase प्रोजेक्ट के साथ-साथ अन्य सभी Firebase प्रोजेक्ट के पास, Cloud Functions के लिए बिना किसी शुल्क के इस्तेमाल किए जा सकने वाले कोटे का ऐक्सेस होता है. इस कोडलैब में बताए गए चरण, बिना शुल्क के इस्तेमाल करने की सीमाओं के दायरे में आएंगे. हालांकि, आपको Cloud Storage से कुछ शुल्क ( करीब 3 रुपये) चुकाने होंगे.इसका इस्तेमाल, Cloud Functions की बिल्ड इमेज को होस्ट करने के लिए किया जाता है.
4. Firebase CLI इंस्टॉल करना
Firebase CLI (कमांड लाइन इंटरफ़ेस) की मदद से, Cloud Functions को डिप्लॉय किया जा सकता है.
आपके ऑपरेटिंग सिस्टम और इस्तेमाल के उदाहरण के आधार पर, Firebase CLI को इंस्टॉल करने के कई विकल्प उपलब्ध हैं. अगर Cloud Functions का भी इस्तेमाल किया जा रहा है, तो यहां सबसे सामान्य विकल्प के बारे में बताया गया है.
- पक्का करें कि आपने npm इंस्टॉल किया हो. यह आम तौर पर Node.js के साथ आता है.
- सीएलआई को इंस्टॉल या अपग्रेड करने के लिए, यह npm कमांड चलाएं:
$ npm -g install firebase-tools
- पुष्टि करें कि सीएलआई को सही तरीके से इंस्टॉल किया गया है. इसके लिए, यह कमांड चलाएं:
$ firebase --version
पक्का करें कि Firebase CLI का वर्शन 9.0.0 या इसके बाद का हो, ताकि इसमें Cloud Functions के लिए ज़रूरी सभी नई सुविधाएं हों. अगर ऐसा नहीं है, तो ऊपर दिखाए गए तरीके से अपग्रेड करने के लिए, npm install -g firebase-tools चलाएं.
- Firebase CLI को अनुमति देने के लिए, यह कमांड चलाएं:
$ firebase login
- spelling-functions-start डायरेक्ट्री से, Firebase CLI को सेट अप करें, ताकि Firebase प्रोजेक्ट का इस्तेमाल किया जा सके. यह कमांड चलाएं, अपना प्रोजेक्ट आईडी चुनें, और फिर निर्देशों का पालन करें. जब आपसे पूछा जाए, तब कोई भी उपनाम चुना जा सकता है. उदाहरण के लिए,
codelab.
$ firebase use --add
5. फ़ंक्शन डायरेक्ट्री
अब आपको Cloud Functions के लिए Firebase SDK टूल का इस्तेमाल करके, Spelling Practice गेम के लिए बैकएंड बनाना होगा.
Cloud Functions की मदद से, क्लाउड में कोड चलाया जा सकता है. इसके लिए, आपको सर्वर सेट अप करने की ज़रूरत नहीं होती. इस कोडलैब में, आपको ऐसे फ़ंक्शन बनाने का तरीका बताया जाएगा जो Firebase Authentication, Cloud Storage, और Firebase Realtime Database के इवेंट पर प्रतिक्रिया देते हैं. आइए, पुष्टि करने की प्रोसेस से शुरू करते हैं.
Cloud Functions के लिए Firebase SDK टूल का इस्तेमाल करने पर, आपका फ़ंक्शन कोड functions डायरेक्ट्री में सेव होगा (डिफ़ॉल्ट रूप से). हमने आपके लिए पहले से ही functions/index.js फ़ाइल बना दी है. इसमें आपका कोड सेव होगा. आगे बढ़ने से पहले, functions डायरेक्ट्री की जांच करें.
$ cd functions $ ls
आपका फ़ंक्शन कोड भी एक Node.js ऐप्लिकेशन है. इसलिए, इसे एक package.json की ज़रूरत होती है. यह package.json आपके ऐप्लिकेशन के बारे में कुछ जानकारी देता है और डिपेंडेंसी की सूची बनाता है.
अगर आपको Node.js के बारे में जानकारी नहीं है, तो कोडलैब जारी रखने से पहले इसके बारे में ज़्यादा जानें.
package.json फ़ाइल में, पहले से ही दो ज़रूरी डिपेंडेंसी दी गई हैं: Cloud Functions के लिए Firebase SDK और Firebase Admin SDK. इन्हें स्थानीय तौर पर इंस्टॉल करने के लिए, functions डायरेक्ट्री से npm install चलाएं:
$ 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मॉड्यूल की मदद से, हम अपने Cloud Functions के लिए ट्रिगर लिख सकते हैंfirebase-adminमॉड्यूल की मदद से, हम एडमिन ऐक्सेस वाले सर्वर पर Firebase प्लैटफ़ॉर्म का इस्तेमाल कर सकते हैं. उदाहरण के लिए, Cloud Firestore में डेटा लिखने के लिए.- Actions SDK Node.js Fulfillment Library, Google Assistant के लिए Actions SDK हैंडलर को पूरा करती है.
- Actions SDK को इंस्टॉल करने के लिए, यह npm कमांड चलाएं:
$ npm install @assistant/conversation
index.jsफ़ाइल में, पहले TODO को इससे बदलें.
इन बदलावों से, हर ज़रूरी मॉड्यूल इंपोर्ट हो जाता है.
साथ ही, Cloud Functions एनवायरमेंट या Google Cloud के किसी अन्य कंटेनर पर डिप्लॉय किए जाने पर, Firebase Admin SDK को अपने-आप कॉन्फ़िगर किया जा सकता है. नीचे दिए गए बदलावों में, 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 में लिखना
शब्दों की परिभाषाएं पाने के लिए, dictionaryapi.dev सार्वजनिक एपीआई का इस्तेमाल किया जाएगा.
index.js फ़ाइल में, getWordDetailsFromDictionaryAPI के लिए TODO को इससे बदलें:
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 फ़ंक्शन बनाना होगा. यह Cloud Firestore में नया दस्तावेज़ बनने पर ट्रिगर होगा. यह dictionaryapi.dev एपीआई को कॉल करेगा, ताकि हमें शब्दों की परिभाषाएं मिल सकें. इसके लिए, यह getWordDetailsFromDictionaryAPI फ़ंक्शन का इस्तेमाल करेगा, जिसे हमने अभी ऊपर लिखा है.
index.js फ़ाइल में, createSpellingPracticeWord के लिए TODO को इससे बदलें:
index.js
// Firestore trigger that fetches word definitions through getWordDetailsFromDictionaryAPI for every new Firestore document
exports.createSpellingPracticeWord = functions.firestore
.document('wordlist/{word}')
.onCreate((snap, context) => {
const newValue = snap.data();
const word = newValue.word;
getWordDetailsFromDictionaryAPI(word);
});
गेम के लिए शब्दों की सूची पाना
Assistant के लिए, Cloud Firestore से स्पेलिंग की प्रैक्टिस के लिए शब्दों की सूची पाने वाला Cloud फ़ंक्शन लिखा जा सकता है. इसके लिए, हम ऐप्लिकेशन हैंडलर का इस्तेमाल करते हैं.
index.js फ़ाइल में, getSpellingWordList के लिए TODO को इससे बदलें.
इस फ़ंक्शन को खास 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 फ़ंक्शन लिखने का विकल्प होता है. यह फ़ंक्शन, शब्दों की सूची में से अगले शब्द की स्पेलिंग दिखाता है.
index.js फ़ाइल में, getSpellingWord के लिए TODO को इससे बदलें:
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 फ़ंक्शन लिखा जा सकता है जो गेम के लिए मौजूदा शब्द को दोहराता है.
index.js फ़ाइल में, repeatSpellingWord के लिए TODO को इससे बदलें:
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 फ़ंक्शन लिखा जा सकता है.
index.js फ़ाइल में, definitionOfSpellingWord के लिए TODO को इससे बदलें:
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 फ़ंक्शन लिखने का विकल्प होता है. यह फ़ंक्शन, उपयोगकर्ता के जवाब की पुष्टि करता है कि उसने गेम के मौजूदा शब्द की स्पेलिंग सही लिखी है या नहीं.
index.js फ़ाइल में, verifySpellingWord के लिए TODO को इससे बदलें:
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 पर डिप्लॉय करने के बाद ही, वे चालू होंगे.
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 फ़ंक्शन के एचटीटीपी एंडपॉइंट यूआरएल को नोट कर लें, ताकि बाद में इसका इस्तेमाल किया जा सके. एंडपॉइंट पाने के लिए, Firebase कंसोल खोलें. इसके बाद, spelling-practice प्रोजेक्ट पर क्लिक करें. फ़ंक्शन एंडपॉइंट देखने के लिए, Functions डैशबोर्ड खोलें.

आपने सभी ज़रूरी फ़ंक्शन जोड़ लिए हैं. अब Cloud Firestore को सेट अप करने का तरीका जानें.
8. Cloud Firestore चालू करना
आपको Cloud Firestore चालू करना होगा.
Firebase कंसोल के बनाएं सेक्शन में जाकर, Firestore पर क्लिक करें. इसके बाद, डेटाबेस बनाएं पर क्लिक करें.

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 में स्पेलिंग वाले शब्दों का डेटा लिखा जाएगा, ताकि Assistant (और गेम) के लिए शब्दों की सूची जनरेट की जा सके.
Cloud Firestore डेटा को कलेक्शन, दस्तावेज़, फ़ील्ड, और सब-कलेक्शन में व्यवस्थित किया जाता है. गेम के हर शब्द को, टॉप-लेवल के कलेक्शन में एक अलग दस्तावेज़ के तौर पर सेव किया जाएगा. इस कलेक्शन का नाम wordlist है. Firestore कलेक्शन में मौजूद हर नए दस्तावेज़ के लिए, createSpellingPracticeWord फ़ंक्शन ट्रिगर होगा. इससे Dictionary API service से शब्द की जानकारी मिलेगी.
Cloud Firestore कलेक्शन बनाना
- Firebase कंसोल में, Cloud Firestore सेक्शन पर जाएं.
- + कलेक्शन बनाना शुरू करें पर क्लिक करें.
- कलेक्शन आईडी टेक्स्ट बॉक्स में,
wordlistडालें. इसके बाद, आगे बढ़ें पर क्लिक करें.

इसके बाद, हम agreement शब्द के लिए एक दस्तावेज़ बनाएंगे
- दस्तावेज़ आईडी टेक्स्ट बॉक्स में,
agreementडालें. - फ़ील्ड टेक्स्ट बॉक्स में,
wordडालें. इसके बाद, वैल्यू टेक्स्ट बॉक्स में,agreementडालें. - सेव करें पर क्लिक करें.

इस दस्तावेज़ को Cloud Firestore में जोड़ने पर, यह createSpellingPracticeWord फ़ंक्शन को ट्रिगर करता है. इससे शब्द की परिभाषा की जानकारी फ़ेच की जाती है. हर शब्द के लिए एक नया दस्तावेज़ बनाकर, ज़्यादा शब्द जोड़ें. उदाहरण के लिए: awe, car, true, tell, better, commute, ...
10. Google Assistant को सेट अप करना
यहां दिए गए सेक्शन में, Google Assistant के डेवलपमेंट एनवायरमेंट को सेट अप करने और Actions प्रोजेक्ट बनाने का तरीका बताया गया है.
Google खाते से जुड़ी अनुमतियों की सेटिंग देखना
इस कोडलैब में बनाई गई कार्रवाई को आज़माने के लिए, आपको ज़रूरी अनुमतियां चालू करनी होंगी, ताकि सिम्युलेटर आपकी कार्रवाई को ऐक्सेस कर सके. अनुमतियां चालू करने के लिए, यह तरीका अपनाएं:
- गतिविधि कंट्रोल पेज पर जाएं.
- अगर आपने पहले से साइन इन नहीं किया है, तो अपने Google खाते से साइन इन करें.
- ये अनुमतियां चालू करें:
- वेब और ऐप्लिकेशन गतिविधि
- वेब और ऐप्लिकेशन गतिविधि में जाकर, Google की सेवाएं इस्तेमाल करने वाले डिवाइसों, ऐप्लिकेशन, और साइटों पर की गई मेरी गतिविधि की जानकारी और Chrome इतिहास शामिल करें के बगल में मौजूद चेकबॉक्स को चुनें.

ऐक्शन प्रोजेक्ट बनाना
आपका Actions प्रोजेक्ट, आपकी कार्रवाई के लिए एक कंटेनर होता है. इस कोडलैब के लिए Actions प्रोजेक्ट बनाने के लिए, यह तरीका अपनाएं:
- Actions console खोलें.
- नया प्रोजेक्ट पर क्लिक करें.
- सेवा की शर्तें स्वीकार करें

- Firebase कंसोल का इस्तेमाल करके बनाए गए
spelling-practice-codelabको टाइप करें या चुनें. (यह नाम सिर्फ़ आपके इंटरनल रेफ़रंस के लिए है. बाद में, अपने प्रोजेक्ट के लिए कोई बाहरी नाम सेट किया जा सकता है.)

- प्रोजेक्ट इंपोर्ट करें पर क्लिक करें.
- आपको किस तरह का ऐक्शन बनाना है? स्क्रीन पर, कस्टम कार्ड चुनें.
- आगे बढ़ें पर क्लिक करें.
- ब्लैंक प्रोजेक्ट कार्ड चुनें.
- बनाना शुरू करें पर क्लिक करें.
- डिसप्ले नेम के लिए स्पेलिंग प्रैक्टिस डालें और सेव करें पर क्लिक करें.
उपयोगकर्ता, इनवोकेशन के ज़रिए आपके ऐक्शन से बातचीत शुरू करते हैं. उदाहरण के लिए, लोग आपकी कार्रवाई को इस तरह के वाक्यांश बोलकर शुरू कर सकते हैं: "Ok Google, Spelling Practice से बात करो". यहाँ Spelling Practice, डिसप्ले नेम है.
अगर आपको अपने ऐक्शन को प्रोडक्शन में डिप्लॉय करना है, तो उसका डिसप्ले नेम होना ज़रूरी है. हालांकि, अपने ऐक्शन को टेस्ट करने के लिए, आपको डिसप्ले नेम तय करने की ज़रूरत नहीं है. इसके बजाय, सिम्युलेटर में "मेरे टेस्ट ऐप्लिकेशन से बात करो" वाक्यांश का इस्तेमाल करके, अपनी कार्रवाई शुरू की जा सकती है.
ग्राहक को सामान भेजने की प्रोसेस कॉन्फ़िगर करना
आपको इस कोडलैब में पहले लिखे और डिप्लॉय किए गए Cloud Functions के लिए, इवेंट हैंडलर को Assistant से कनेक्ट करना होगा.
ऑर्डर पूरा करने की सुविधा को कॉन्फ़िगर करने के लिए, यह तरीका अपनाएं:
- साइड नेविगेशन में, वेबहुक पर क्लिक करें.
- फ़ुलफ़िलमेंट के विकल्प के तौर पर, Https एंडपॉइंट चुनें:

- एचटीटीपीएस एंडपॉइंट टेक्स्ट बॉक्स में, अपने फ़ंक्शन के एंडपॉइंट का यूआरएल डालें. इसके बाद, सेव करें पर क्लिक करें.

अगले सेक्शन में, Actions console में मुख्य इनवोकेशन के लिए प्रॉम्प्ट को अपनी पसंद के मुताबिक बनाया जा सकता है.
मुख्य इनवोकेशन सेट अप करना
आपको मुख्य इनवोकेशन में बदलाव करना होगा, ताकि यह तय किया जा सके कि उपयोगकर्ता के आपके ऐक्शन को इनवोक करने के बाद क्या होगा.
डिफ़ॉल्ट रूप से, Actions Builder, इनवोकेशन ट्रिगर होने पर एक सामान्य प्रॉम्प्ट देता है ("मुख्य इनवोकेशन तय करके, अपनी कार्रवाई बनाना शुरू करें.").
जब कोई उपयोगकर्ता आपकी कार्रवाई शुरू करता है, तब आपकी कार्रवाई उसे वापस भेजे जाने वाले प्रॉम्प्ट में बदलाव करने के लिए, यह तरीका अपनाएं:
- नेविगेशन में जाकर, मुख्य इनवोकेशन पर क्लिक करें.

- टेक्स्ट बॉक्स में,
Call your webhookपर सही का निशान लगाएं और इवेंट हैंडलर का नामgetSpellingWordListजोड़ें. - कोड एडिटर में,
speechफ़ील्ड में मौजूद टेक्स्ट को इस स्वागत मैसेज से बदलें:Welcome to Spelling Practice
ध्यान दें: अपने प्रॉम्प्ट में बदलाव करने के लिए, YAML या JSON फ़ॉर्मैटिंग का इस्तेमाल किया जा सकता है.
- सेव करें पर क्लिक करें.
सिम्युलेटर में मुख्य इनवोकेशन की जांच करना
Actions console, आपके ऐक्शन की जांच करने के लिए एक वेब टूल उपलब्ध कराता है. इसे सिम्युलेटर कहा जाता है. इंटरफ़ेस, हार्डवेयर डिवाइसों और उनकी सेटिंग की तरह काम करता है. इसलिए, अपने ऐक्शन के साथ वैसे ही बातचीत की जा सकती है जैसे स्मार्ट डिसप्ले, फ़ोन, स्पीकर या KaiOS पर की जाती है.
सिम्युलेटर में, अपनी कार्रवाई को मुख्य तौर पर शुरू करने की सुविधा की जांच करने के लिए, यह तरीका अपनाएं:
- सिम्युलेटर पर जाने के लिए, सबसे ऊपर मौजूद नेविगेशन बार में जांच करें पर क्लिक करें.
- सिम्युलेटर में अपने ऐक्शन को शुरू करने के लिए, सबसे ऊपर बाईं ओर मौजूद इनपुट फ़ील्ड में
Talk to Spelling Practiceटाइप करें. इसके बाद, कीबोर्ड पर Enter दबाएं.

जब आपकी कार्रवाई का मुख्य इनवोकेशन ट्रिगर होता है, तो Assistant आपके तय किए गए वेलकम मैसेज के साथ जवाब देती है. इस समय, Assistant के स्वागत करने के बाद बातचीत खत्म हो जाती है.
इवेंट लॉग देखना
जांच करें टैब में होने पर, दाईं ओर मौजूद पैनल में इवेंट लॉग दिखते हैं. इनमें बातचीत के इतिहास को इवेंट लॉग के तौर पर दिखाया जाता है. हर इवेंट लॉग में, बातचीत के उस मोड़ के दौरान होने वाले इवेंट दिखते हैं. इवेंट लॉग देखने के लिए, इवेंट से पहले मौजूद ग्रे आइकॉन पर क्लिक करें.
फ़िलहाल, आपकी कार्रवाई में एक इवेंट लॉग है. इसमें उपयोगकर्ता का इनपुट ("स्पेलिंग प्रैक्टिस से बात करो") और आपकी कार्रवाई का जवाब, दोनों दिखते हैं. इस स्क्रीनशॉट में, आपके ऐक्शन का इवेंट लॉग दिखाया गया है:

11. स्पेलिंग की प्रैक्टिस के लिए बातचीत तैयार करना
अब जब आपने यह तय कर लिया है कि उपयोगकर्ता के Action को चालू करने के बाद क्या होगा, तो अब अपने Action की बातचीत का बाकी हिस्सा बनाया जा सकता है. स्पेलिंग की प्रैक्टिस में चार सीन होते हैं. हर सीन को चलाने से पहले, आपको उसे चालू करना होगा. किसी सीन को चालू करने का सबसे सामान्य तरीका यह है कि आप अपनी कार्रवाई को इस तरह कॉन्फ़िगर करें कि जब कोई उपयोगकर्ता किसी सीन में उपयोगकर्ता के इंटेंट से मेल खाता हो, तो वह इंटेंट किसी दूसरे सीन पर ट्रांज़िशन को ट्रिगर करे और उसे चालू करे.
मुख्य इनवोकेशन से स्टार्ट सीन पर ट्रांज़िशन
इस सेक्शन में, Start नाम का एक नया सीन बनाया जाता है. यह सीन, उपयोगकर्ता को एक प्रॉम्प्ट भेजता है. इसमें पूछा जाता है कि क्या वह स्पेलिंग प्रैक्टिस शुरू करना चाहता है. इसके अलावा, मुख्य इनवोकेशन से नए Start सीन पर ट्रांज़िशन भी जोड़ा जा सकता है.
यह सीन बनाने और इसमें ट्रांज़िशन जोड़ने के लिए, यह तरीका अपनाएं:
- सबसे ऊपर मौजूद नेविगेशन में जाकर, डेवलप करें पर क्लिक करें. इसके बाद, बाईं ओर मौजूद नेविगेशन में मुख्य इनवोकेशन पर क्लिक करें.
- दाईं ओर मौजूद ट्रांज़िशन सेक्शन में, ड्रॉप-डाउन मेन्यू पर क्लिक करें. इसके बाद, टेक्स्ट फ़ील्ड में
Startटाइप करें.

- जोड़ें पर क्लिक करें. इससे
Startनाम का एक सीन बनता है. साथ ही, इससे कार्रवाई को यह निर्देश मिलता है कि उपयोगकर्ता को वेलकम प्रॉम्प्ट देने के बाद,Startसीन पर ट्रांज़िशन करें. - सीन की सूची देखने के लिए, बाईं ओर मौजूद नेविगेशन में सीन पर क्लिक करें.
- सीन में जाकर,
Startसीन देखने के लिए, शुरू करें पर क्लिक करें. Startसीन के On enter सेक्शन में, + पर क्लिक करें.- प्रॉम्प्ट भेजें को चुनें.
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सीन प्रॉम्प्ट के साथ जवाब देना चाहिए. "स्पेलिंग की प्रैक्टिस में आपका स्वागत है. शब्द की स्पेलिंग बताने के लिए, फ़ोनेटिक वर्णमाला का इस्तेमाल करें. उदाहरण के लिए, a के लिए ऐल्फ़ा, b के लिए ब्रावो, c के लिए चार्ली वगैरह. क्या आपको जारी रखना है?".
इस इंटरैक्शन को यहां दिए गए स्क्रीनशॉट में दिखाया गया है:

- प्रॉम्प्ट का जवाब देने के लिए,
YesयाNoयाHelp with Phoneticsसुझाव वाले चिप पर क्लिक करें. ("हाँ" या "नहीं" या "उच्चारण में मदद करें" भी कहा जा सकता है. इसके अलावा, इनपुट फ़ील्ड मेंYesयाNoयाHelp with Phoneticsडाला जा सकता है.)
प्रॉम्प्ट का जवाब देने पर, आपकी कार्रवाई एक मैसेज के साथ जवाब देती है. इसमें बताया जाता है कि वह आपके इनपुट को नहीं समझ पा रही है: "माफ़ करें, मुझे समझ में नहीं आया. क्या आपको फिर से कोशिश करनी है?" आपने अब तक अपने ऐक्शन को "हाँ" या "नहीं" इनपुट को समझने और जवाब देने के लिए कॉन्फ़िगर नहीं किया है. इसलिए, आपका ऐक्शन आपके इनपुट को NO_MATCH इंटेंट से मैच करता है.
डिफ़ॉल्ट रूप से, NO_MATCH सिस्टम इंटेंट सामान्य जवाब देता है. हालांकि, इन जवाबों को अपनी पसंद के मुताबिक बनाया जा सकता है. इससे उपयोगकर्ता को यह पता चलेगा कि आपको उसकी बात समझ नहीं आई. जब Assistant, उपयोगकर्ता के इनपुट से तीन बार मैच नहीं कर पाती है, तो वह आपके ऐक्शन के साथ उपयोगकर्ता की बातचीत को खत्म कर देती है.
'नहीं' और फ़ोनेटिक इंटेंट जोड़ना
अब उपयोगकर्ता, आपके ऐक्शन के पूछे गए सवाल का जवाब दे सकते हैं. इसलिए, अपने ऐक्शन को इस तरह कॉन्फ़िगर करें कि वह उपयोगकर्ताओं के जवाबों को समझ सके. जैसे, "हाँ" या "नहीं" या "उच्चारण में मदद करें". यहां दिए गए सेक्शन में, उपयोगकर्ता के इंटेंट बनाए जाते हैं. जब उपयोगकर्ता "हां" या "नहीं" या "फ़ोनेटिक्स से जुड़ी मदद चाहिए" कहता है, तब इन इंटेंट का मिलान किया जाता है. इसके बाद, इन इंटेंट को Start सीन में जोड़ा जाता है. हम सिस्टम इंटेंट yes का इस्तेमाल करेंगे और अन्य इंटेंट बनाएंगे.
no इंटेंट बनाएं
अब आपको no इंटेंट बनाना होगा, ताकि जब उपयोगकर्ता गेम न खेलना चाहे, तो उसे समझा जा सके और जवाब दिया जा सके. इस इंटेंट को बनाने के लिए, यह तरीका अपनाएं:
- नेविगेशन में जाकर, डेवलप करें पर क्लिक करें.
- इरादों की सूची खोलने के लिए, नेविगेशन में कस्टम इंटेंट पर क्लिक करें.
- इरादों की सूची के आखिर में, + (प्लस का निशान) पर क्लिक करें. नए इंटेंट का नाम
noरखें और Enter दबाएं. noइंटेंट पेज खोलने के लिए, नहीं पर क्लिक करें.- ट्रेनिंग फ़्रेज़ जोड़ें सेक्शन में, फ़्रेज़ डालें टेक्स्ट बॉक्स पर क्लिक करें और ये फ़्रेज़ डालें:
NoNI don't wantnope

- सेव करें पर क्लिक करें.
Start सीन में no इंटेंट जोड़ें
अब कार्रवाई यह समझ सकती है कि उपयोगकर्ता "नहीं" या "नहीं" से मिलता-जुलता कोई जवाब दे रहा है. जैसे, "नहीं". आपको Start सीन में no उपयोगकर्ता के इरादे को जोड़ना होगा, क्योंकि उपयोगकर्ता Start प्रॉम्प्ट ("स्पेलिंग की प्रैक्टिस में आपका स्वागत है. शब्द की स्पेलिंग बताने के लिए, फ़ोनेटिक वर्णमाला का इस्तेमाल करें. उदाहरण के लिए, a के लिए ऐल्फ़ा, b के लिए ब्रावो, c के लिए चार्ली वगैरह. क्या आपको जारी रखना है?").
Start सीन के लिए यह इंटेंट जोड़ने के लिए, यह तरीका अपनाएं:
- नेविगेशन में, शुरू करें सीन पर क्लिक करें.
- उपयोगकर्ता के इंटेंट को समझने की सुविधा के बगल में मौजूद,
Startसीन में जाकर, + (प्लस का निशान) पर क्लिक करें. - इरादा सेक्शन में, ड्रॉप-डाउन में जाकर नहीं चुनें.

- प्रॉम्प्ट भेजें पर क्लिक करें और
speechफ़ील्ड में यह टेक्स्ट डालें:Good Bye.
आपके एडिटर में मौजूद कोड, इस स्निपेट जैसा दिखना चाहिए:
candidates:
- first_simple:
variants:
- speech: >-
Goodbye.
- ट्रांज़िशन सेक्शन में, ड्रॉपडाउन से बातचीत खत्म करें चुनें.
- सेव करें पर क्लिक करें.
सिम्युलेटर में no इंटेंट की जांच करना
इस समय, आपकी कार्रवाई को यह समझ में आ जाता है कि उपयोगकर्ता को गेम नहीं खेलना है. इसलिए, वह सही जवाब देती है.
सिम्युलेटर में इस इंटेंट को टेस्ट करने के लिए, यह तरीका अपनाएं:
- नेविगेशन बार में, टेस्ट करें पर क्लिक करें.
- इनपुट फ़ील्ड में
Talk to Spelling Practiceलिखें औरEnterदबाएं. - इनपुट फ़ील्ड में
Noलिखें और Enter दबाएं. इसके अलावा, 'कोई सुझाव नहीं' चिप पर क्लिक करें.

Start सीन में सिस्टम YES इंटेंट जोड़ें
अब हम Start सीन में SYSTEM इंटेंट "YES" जोड़ेंगे, क्योंकि उपयोगकर्ता Start प्रॉम्प्ट ("स्पेलिंग की प्रैक्टिस में आपका स्वागत है. शब्द की स्पेलिंग बताने के लिए, फ़ोनेटिक वर्णमाला का इस्तेमाल करें. उदाहरण के लिए, a के लिए ऐल्फ़ा, b के लिए ब्रावो, c के लिए चार्ली वगैरह. क्या आपको जारी रखना है?").
Start सीन में उपयोगकर्ता के इस इंटेंट को जोड़ने के लिए, यह तरीका अपनाएं:
- नेविगेशन में, शुरू करें सीन पर क्लिक करें.
- उपयोगकर्ता के इरादे को समझना के बगल में मौजूद,
Startसीन में जाकर, + (प्लस का निशान) पर क्लिक करें. - सभी सिस्टम इंटेंट में जाकर, इंटेंट ड्रॉप-डाउन में हां चुनें.

- अपने वेबहुक को कॉल करें पर क्लिक करें. इसके बाद,
event handlerटेक्स्ट बॉक्स में, पहले बनाया गया फ़ंक्शन अपडेट करें:getSpellingWordList - ट्रांज़िशन सेक्शन में, ड्रॉप-डाउन पर क्लिक करें और बातचीत खत्म करें को चुनें.
- सेव करें पर क्लिक करें.
सिम्युलेटर में YES इंटेंट की जांच करना
इस समय, आपकी कार्रवाई को यह समझ आ जाता है कि उपयोगकर्ता को गेम कब खेलना है. इसके बाद, वह सही जवाब देती है.
सिम्युलेटर में इस इंटेंट को टेस्ट करने के लिए, यह तरीका अपनाएं:
- नेविगेशन बार में, टेस्ट करें पर क्लिक करें.
- सिम्युलेटर में अपने ऐक्शन को आज़माने के लिए, इनपुट फ़ील्ड में
Talk to Spelling Practiceटाइप करें और Enter दबाएं. - इनपुट फ़ील्ड में
Yesलिखें और Enter दबाएं. इसके अलावा,Yesसुझाव वाले चिप पर क्लिक करें.
आपका ऐक्शन, स्पेलिंग की प्रैक्टिस के लिए इस्तेमाल होने वाले सभी शब्दों की सूची फ़ेच करता है और उन्हें सेशन में सेव करता है. इसके बाद, आपका ऐक्शन सेशन खत्म कर देता है. ऐसा इसलिए होता है, क्योंकि आपने YES इंटेंट के लिए End conversation ट्रांज़िशन चुना था.
Phonetics इंटेंट बनाएं
Phonetics इंटेंट बनाने के लिए, यह तरीका अपनाएं:
- नेविगेशन में जाकर, डेवलप करें पर क्लिक करें.
- इरादों की सूची खोलने के लिए, नेविगेशन में कस्टम इंटेंट पर क्लिक करें.
- इरादों की सूची के आखिर में, + (प्लस का निशान) पर क्लिक करें. नए इंटेंट को
phoneticsनाम दें औरEnterदबाएं. phoneticsइंटेंट पेज खोलने के लिए,phoneticsइंटेंट पर क्लिक करें.- 'ट्रेनिंग फ़्रेज़ जोड़ें' सेक्शन में, फ़्रेज़ डालें टेक्स्ट बॉक्स पर क्लिक करें और ये फ़्रेज़ डालें:
how do I spell wordsphoneticshelp me with phoneticsphonetic alphabet

- सेव करें पर क्लिक करें.
Start सीन में phonetics इंटेंट जोड़ें
अब कार्रवाई यह समझ सकती है कि उपयोगकर्ता "फ़ोनेटिक्स" के बारे में जानना चाहता है. Start सीन में phonetics उपयोगकर्ता के इरादे को जोड़ा जा सकता है, क्योंकि उपयोगकर्ता Start प्रॉम्प्ट ("स्पेलिंग की प्रैक्टिस में आपका स्वागत है. शब्द की स्पेलिंग बताने के लिए, फ़ोनेटिक वर्णमाला का इस्तेमाल करें. उदाहरण के लिए, a के लिए ऐल्फ़ा, b के लिए ब्रावो, c के लिए चार्ली वगैरह. क्या आपको जारी रखना है?").
Start सीन में उपयोगकर्ता के इस इंटेंट को जोड़ने के लिए, यह तरीका अपनाएं:
- नेविगेशन में, शुरू करें सीन पर क्लिक करें.
- उपयोगकर्ता के इंटेंट को समझने की सुविधा के बगल में मौजूद,
Startसीन में मौजूद + (प्लस का निशान) पर क्लिक करें. - इरादे वाले ड्रॉप-डाउन में जाकर, फ़ोनेटिक्स चुनें.

- ट्रांज़िशन सेक्शन में, ड्रॉप-डाउन पर क्लिक करें और बातचीत खत्म करें चुनें.
- सेव करें पर क्लिक करें.
स्टार्ट सीन से स्पेलिंग सीन पर ट्रांज़िशन करना
इस सेक्शन में, स्पेलिंग नाम का एक नया सीन बनाया जाता है. इससे उपयोगकर्ता को प्रॉम्प्ट भेजा जाता है, ताकि वह फ़ोनेटिक वर्णमाला का इस्तेमाल करके शब्द की स्पेलिंग बता सके.
यह सीन बनाने और इसमें ट्रांज़िशन जोड़ने के लिए, यह तरीका अपनाएं:
- सबसे ऊपर मौजूद नेविगेशन में जाकर, डेवलप करें पर क्लिक करें. इसके बाद, बाईं ओर मौजूद नेविगेशन में सीन शुरू करें पर क्लिक करें.
- उपयोगकर्ता के इरादे को पूरा करने से जुड़ी सुविधा सेक्शन में,
when actions.intent.YES is matchedपर क्लिक करें. इसके बाद, दाईं ओर मौजूद ट्रांज़िशन सेक्शन में, ड्रॉप-डाउन मेन्यू पर क्लिक करें और टेक्स्ट फ़ील्ड मेंSpellingटाइप करें. - जोड़ें पर क्लिक करें. इससे
Spellingनाम का एक सीन बनता है. साथ ही, यह कार्रवाई को बताता है कि YES इंटेंट से मैच होने के बाद,Spellingसीन पर ट्रांज़िशन करना है. - सीन की सूची दिखाने के लिए, बाईं ओर मौजूद नेविगेशन में सीन को बड़ा करें.
- सीन में जाकर,
Spellingसीन देखने के लिए, स्पेलिंग पर क्लिक करें. Spellingसीन के On enter सेक्शन में, + पर क्लिक करें.- अपने वेबुक को कॉल करें पर क्लिक करें. इसके बाद, इवेंट हैंडलर टेक्स्ट बॉक्स में getSpellingWord डालें.
- प्रॉम्प्ट भेजें को चुनें.
speechफ़ील्ड (Enter the response that users will see or hear...) में मौजूद वाक्य को {} से बदलें. असल प्रॉम्प्ट, वेबहुक से अपने-आप भर जाएगा.
सुझाव वाले चिप, उपयोगकर्ता को क्लिक किए जा सकने वाले सुझाव देते हैं. आपकी कार्रवाई, उपयोगकर्ता के इनपुट के तौर पर इन सुझावों को प्रोसेस करती है.
Spelling सीन के प्रॉम्ट में सुझाव वाले चिप जोड़ने के लिए, यह तरीका अपनाएं:
Spellingसीन में, कोड एडिटर के नीचे दिए गए सुझावों पर क्लिक करें. इस कार्रवाई से, तीन सुझाव चिप जुड़ जाते हैं.titleफ़ील्ड में,Suggested Responseको'Repeat'से बदलें.- उसी फ़ॉर्मैट का इस्तेमाल करके,
'Skip'नाम की सुझाव चिप को मैन्युअल तरीके से जोड़ें. - उसी फ़ॉर्मैट का इस्तेमाल करके,
'Quit'नाम की सुझाव चिप को मैन्युअल तरीके से जोड़ें. आपका कोड, इस स्निपेट की तरह दिखना चाहिए: - सेव करें पर क्लिक करें.
suggestions:
- title: 'Repeat'
- title: 'Skip'
- title: 'Quit'

Repeat इंटेंट बनाएं
repeat इंटेंट बनाने के लिए, यह तरीका अपनाएं:
- नेविगेशन में जाकर, डेवलप करें पर क्लिक करें.
- इरादों की सूची खोलने के लिए, नेविगेशन में कस्टम इंटेंट पर क्लिक करें.
- इरादों की सूची के आखिर में, + (प्लस का निशान) पर क्लिक करें. नए इंटेंट को
repeatनाम दें औरEnterदबाएं. definitionइंटेंट पेज खोलने के लिए,repeatइंटेंट पर क्लिक करें.- ट्रेनिंग फ़्रेज़ जोड़ें सेक्शन में, फ़्रेज़ डालें टेक्स्ट बॉक्स पर क्लिक करें और ये फ़्रेज़ डालें:
one more time pleasesay the word againrepeat the wordtell me againrepeat

- सेव करें पर क्लिक करें.
Spelling सीन में repeat इंटेंट जोड़ें
अब कार्रवाई को यह पता चल सकता है कि उपयोगकर्ता "दोहराने" का इरादा कब ज़ाहिर कर रहा है. Spelling सीन में repeat उपयोगकर्ता के इरादे को जोड़ा जा सकता है, क्योंकि उपयोगकर्ता Spelling प्रॉम्प्ट ("फ़ोनेटिक वर्णमाला का इस्तेमाल करके शब्द की स्पेलिंग बताओ") का जवाब दे रहा है.
Spelling सीन में उपयोगकर्ता के इस इंटेंट को जोड़ने के लिए, यह तरीका अपनाएं:
- नेविगेशन में मौजूद, स्पेलिंग सीन पर क्लिक करें.
- उपयोगकर्ता के इरादे को समझना के बगल में मौजूद,
Spellingसीन में जाकर, + (प्लस का निशान) पर क्लिक करें. - इंटेंट ड्रॉप-डाउन में repeat चुनें.

- अपने वेबुक को कॉल करें को चुनें. इसके बाद, शब्द की परिभाषा पाने के लिए, इवेंट हैंडलर टेक्स्ट बॉक्स में repeatSpellingWord डालें.
- प्रॉम्प्ट भेजें को चुनें.
speechफ़ील्ड (Enter the response that users will see or hear...) में मौजूद वाक्य को ‘' से बदलें. असल प्रॉम्प्ट, वेबहुक से अपने-आप भर जाएगा.
"जब दोहराव वाला नियम मैच होता है" में सुझाव वाले चिप जोड़ें
- उपयोगकर्ता के इरादे को समझने की सुविधा में जाकर, "जब दोहराव वाला सवाल पूछा जाए" में मौजूद कोड एडिटर के नीचे, सुझाव पर क्लिक करें. इस कार्रवाई से, तीन सुझाव चिप जुड़ जाते हैं.
titleफ़ील्ड में,Suggested Responseको'Skip'से बदलें.- इसी फ़ॉर्मैट का इस्तेमाल करके,
'Quit'नाम की सुझाव चिप को मैन्युअल तरीके से जोड़ें.आपका कोड इस स्निपेट की तरह दिखना चाहिए:
suggestions:
- title: 'Skip'
- title: 'Quit'

- सेव करें पर क्लिक करें.
definition इंटेंट बनाएं
definition इंटेंट बनाने के लिए, यह तरीका अपनाएं:
- नेविगेशन में जाकर, डेवलप करें पर क्लिक करें.
- इरादों की सूची खोलने के लिए, नेविगेशन में कस्टम इंटेंट पर क्लिक करें.
- इरादों की सूची के आखिर में, + (प्लस का निशान) पर क्लिक करें. नए इंटेंट को
definitionनाम दें औरEnterदबाएं. definitionइंटेंट पेज खोलने के लिए,definitionइंटेंट पर क्लिक करें.- ट्रेनिंग फ़्रेज़ जोड़ें सेक्शन में, फ़्रेज़ डालें टेक्स्ट बॉक्स पर क्लिक करें और ये फ़्रेज़ डालें:
I would like to know the definitiontell me the definitionwhat does it meanmeaningdefinitionwhat is the definition?

- सेव करें पर क्लिक करें.
Spelling सीन में definition इंटेंट जोड़ें
अब कार्रवाई यह समझ सकती है कि उपयोगकर्ता "परिभाषा" के बारे में पूछ रहा है. Spelling सीन में definition उपयोगकर्ता के इरादे को जोड़ा जा सकता है, क्योंकि उपयोगकर्ता Spelling प्रॉम्प्ट ("फ़ोनेटिक वर्णमाला का इस्तेमाल करके शब्द की स्पेलिंग बताओ") का जवाब दे रहा है.
Spelling सीन में उपयोगकर्ता के इस इंटेंट को जोड़ने के लिए, यह तरीका अपनाएं:
- नेविगेशन में मौजूद, स्पेलिंग सीन पर क्लिक करें.
- उपयोगकर्ता के इरादे को समझना के बगल में मौजूद,
Spellingसीन में जाकर, + (प्लस का निशान) पर क्लिक करें. - इन्टेंट ड्रॉप-डाउन में, डेफ़िनिशन चुनें.

- अपने वेबुक को कॉल करें को चुनें. इसके बाद, शब्द की परिभाषा पाने के लिए, इवेंट हैंडलर टेक्स्ट बॉक्स में definitionOfSpellingWord डालें.
- प्रॉम्प्ट भेजें को चुनें.
speechफ़ील्ड (Enter the response that users will see or hear...) में मौजूद वाक्य को ‘‘` से बदलें. असल प्रॉम्प्ट, वेबहुक से अपने-आप भर जाएगा.
वेबबुक रिस्पॉन्स में सुझाव वाले चिप जोड़ना
Startसीन में, कोड एडिटर के नीचे मौजूद सुझाव पर क्लिक करें. इस कार्रवाई से, तीन सुझाव चिप जुड़ जाते हैं.titleफ़ील्ड में,Suggested Responseको'Skip'से बदलें.- इसी फ़ॉर्मैट का इस्तेमाल करके,
'Quit'नाम की सुझाव चिप को मैन्युअल तरीके से जोड़ें.आपका कोड इस स्निपेट की तरह दिखना चाहिए:
suggestions:
- title: 'Skip'
- title: 'Quit'

- सेव करें पर क्लिक करें.
skip इंटेंट बनाएं
skip इंटेंट बनाने के लिए, यह तरीका अपनाएं:
- नेविगेशन में जाकर, डेवलप करें पर क्लिक करें.
- इरादों की सूची खोलने के लिए, नेविगेशन में मौजूद इरादे पर क्लिक करें.
- इरादों की सूची के आखिर में, + (प्लस का निशान) पर क्लिक करें. नए इंटेंट को
skipनाम दें औरEnterदबाएं. skipइंटेंट पेज खोलने के लिए,skipइंटेंट पर क्लिक करें.- ट्रेनिंग फ़्रेज़ जोड़ें सेक्शन में, फ़्रेज़ डालें टेक्स्ट बॉक्स पर क्लिक करें और ये फ़्रेज़ डालें:
next wordgo nextnextskipskip word

- सेव करें पर क्लिक करें.
Spelling सीन में Skip इंटेंट जोड़ें
अब कार्रवाई यह समझ सकती है कि उपयोगकर्ता "स्किप करें" का इरादा कब ज़ाहिर कर रहा है. Spelling सीन में skip उपयोगकर्ता के इरादे को जोड़ा जा सकता है, क्योंकि उपयोगकर्ता Spelling प्रॉम्प्ट ("फ़ोनेटिक वर्णमाला का इस्तेमाल करके शब्द की स्पेलिंग बताओ") का जवाब दे रहा है.
Spelling सीन में उपयोगकर्ता के इस इंटेंट को जोड़ने के लिए, यह तरीका अपनाएं:
- नेविगेशन में मौजूद, स्पेलिंग सीन पर क्लिक करें.
- उपयोगकर्ता के इरादे को समझने की सुविधा के बगल में मौजूद,
Spellingसीन में + (प्लस का निशान) पर क्लिक करें. - इन्टेंट ड्रॉप-डाउन में, skip चुनें.

- दाईं ओर मौजूद ट्रांज़िशन सेक्शन में, ड्रॉप-डाउन मेन्यू पर क्लिक करें और
Spellingचुनें .

- सेव करें पर क्लिक करें.
quit इंटेंट बनाएं
Quit इंटेंट बनाने के लिए, यह तरीका अपनाएं:
- नेविगेशन में जाकर, डेवलप करें पर क्लिक करें.
- इरादों की सूची खोलने के लिए, नेविगेशन में मौजूद इरादे पर क्लिक करें.
- इरादों की सूची के आखिर में, + (प्लस का निशान) पर क्लिक करें. नए इंटेंट को
Quitनाम दें औरEnterदबाएं. - डेफ़िनिशन इंटेंट पेज खोलने के लिए,
Quitइंटेंट पर क्लिक करें. - ट्रेनिंग फ़्रेज़ जोड़ें सेक्शन में, फ़्रेज़ डालें टेक्स्ट बॉक्स पर क्लिक करें और ये फ़्रेज़ डालें:
I quitGoodbyeCancelExitQuit

- सेव करें पर क्लिक करें.
Spelling सीन में Quit इंटेंट जोड़ें
अब कार्रवाई को यह पता चल सकता है कि उपयोगकर्ता "बंद करो" का इरादा कब ज़ाहिर कर रहा है. Spelling सीन में quit उपयोगकर्ता के इरादे को जोड़ा जा सकता है, क्योंकि उपयोगकर्ता Spelling प्रॉम्प्ट ("फ़ोनेटिक वर्णमाला का इस्तेमाल करके शब्द की स्पेलिंग बताओ") का जवाब दे रहा है.
Spelling सीन में उपयोगकर्ता के इस इंटेंट को जोड़ने के लिए, यह तरीका अपनाएं:
- नेविगेशन में मौजूद, स्पेलिंग सीन पर क्लिक करें.
- उपयोगकर्ता के इरादे को समझना के बगल में मौजूद,
Spellingसीन में जाकर, + (प्लस का निशान) पर क्लिक करें. - इरादे वाले ड्रॉप-डाउन में, quit चुनें.

- दाईं ओर मौजूद ट्रांज़िशन सेक्शन में, ड्रॉप-डाउन मेन्यू पर क्लिक करें और
End conversationचुनें .
- सेव करें पर क्लिक करें.
phonetic_alphabet टाइप बनाएं
इस सेक्शन में, phonetic_alphabet नाम का एक नया टाइप बनाया जाता है. इससे यह तय होता है कि उपयोगकर्ता, शब्द की स्पेलिंग लिखने के लिए फ़ोनेटिक वर्णमाला के कौनसे विकल्प चुन सकते हैं. अगर कोई उपयोगकर्ता इन विकल्पों से मिलता-जुलता कुछ कहता है, तो आपके पास इन विकल्पों के लिए कुछ समानार्थी शब्द तय करने का विकल्प भी होता है. बाद के सेक्शन में, आपको किसी स्लॉट में phonetic_alphabet टाइप जोड़ना होता है. इससे यह तय किया जाता है कि आपको उपयोगकर्ता का जवाब चाहिए.
phonetic_alphabet टाइप बनाने के लिए, यह तरीका अपनाएं:
- नेविगेशन में जाकर, डेवलप करें पर क्लिक करें.
- टाइप में जाकर, + (प्लस का निशान) पर क्लिक करें.
phonetic_alphabetटाइप करें औरEnterदबाएं.- विकल्प खोलने के लिए,
phonetic_alphabetपर क्लिक करें. - इस टाइप में किस तरह की वैल्यू इस्तेमाल की जा सकती हैं? सेक्शन में जाकर, शब्द और समानार्थी शब्द विकल्प चुनें
- ऐंट्री जोड़ें सेक्शन में, ये ऐंट्री और उनसे जुड़ी वैल्यू डालें:
a | alpha, apple, amsterdam |
b | bravo, butter, baltimore |
c | चार्ली, बिल्ली, कैसब्लांका |
d | डेल्टा, कुत्ता, डेनमार्क |
e | echo, edward, edison |
f | foxtrot, fox, florida |
g | golf, george, gallipoli |
घं॰ | hotel, harry, havana |
i | india, ink, italia |
j | juliette, johnny, jerusalem |
k | kilo, king, kilogramme |
l | lima, love, london |
m | mike, money, madagascar |
n | नवंबर, न्यूयॉर्क, नैंसी |
o | oscar, orange, oslo |
p | papa, paris, peter |
q | quebec, queen |
r | romeo, roma, robert |
s | sierra, sugar, santiago |
t | टैंगो, टॉमी, ट्रिपोली |
u | यूनिफ़ॉर्म, छाता, अंकल |
v | विक्टर, विनेगर, वैलेंसिया |
w | whiskey, william, washington |
x | एक्स-रे |
y | yankee, yellow, yorker |
z | ज़ुलु, ज़ीब्रा, ज़्यूरिख़ |
आपकी कुंजी-वैल्यू टेबल ऐसी दिखनी चाहिए:

- सेव करें पर क्लिक करें.
स्लॉट भरने की सुविधा कॉन्फ़िगर करना
इसके बाद, आपको स्पेलिंग सीन में स्लॉट भरने की सुविधा कॉन्फ़िगर करनी होगी. स्लॉट भरने के लॉजिक को कॉन्फ़िगर करने के लिए, यह तरीका अपनाएं:
- नेविगेशन में मौजूद, स्पेलिंग सीन पर क्लिक करें.
- स्लॉट भरने के लिए,
Spellingसीन में मौजूद + (प्लस का निशान) पर क्लिक करें. - स्लॉट का नाम डालें फ़ील्ड में, स्लॉट के नाम के तौर पर
userresponseजोड़ें. - टाइप चुनें ड्रॉप-डाउन में, स्लॉट टाइप के तौर पर phonetic_alphabet चुनें.
- इस स्लॉट में वैल्यू की सूची स्वीकार की जाती है को चुनें
- यह स्लॉट ज़रूरी है को चुनें.
- स्लॉट की वैल्यू के राइटबैक को पसंद के मुताबिक बनाएं विकल्प चुनें. इसके बाद, सेशन पैरामीटर के टेक्स्ट बॉक्स में userresponse डालें.

- सेव करें पर क्लिक करें.
Spelling स्क्रीन में शर्त जोड़ना
Spelling सीन में शर्त जोड़ने के लिए, यह तरीका अपनाएं:
- नेविगेशन में मौजूद, स्पेलिंग सीन पर क्लिक करें.
- शर्त के बगल में मौजूद,
Spellingसीन में + (प्लस का निशान) पर क्लिक करें. - शर्त के तौर पर
scene.slots.status == "FINAL"डालें - उपयोगकर्ता के जवाब की पुष्टि करने के लिए, Call your webhook पर क्लिक करें. इसके बाद, इवेंट हैंडलर टेक्स्ट बॉक्स में verifySpellingWord डालें.
- प्रॉम्प्ट भेजें को चुनें.
speechफ़ील्ड (Enter the response that users will see or hear...) में मौजूद वाक्य को {} से बदलें. असल प्रॉम्प्ट, वेबहुक से अपने-आप भर जाएगा.
वेबबुक रिस्पॉन्स में सुझाव वाले चिप जोड़ना
Startसीन में, कोड एडिटर के नीचे मौजूद सुझाव पर क्लिक करें. इस कार्रवाई से, तीन सुझाव चिप जुड़ जाते हैं.titleफ़ील्ड में,Suggested Responseको'Next'से बदलें.- इसी फ़ॉर्मैट का इस्तेमाल करके,
'Quit'नाम की सुझाव चिप को मैन्युअल तरीके से जोड़ें.आपका कोड इस स्निपेट की तरह दिखना चाहिए:
suggestions:
- title: 'Next'
- title: 'Quit'

- सेव करें पर क्लिक करें.
12. सिम्युलेटर में वर्तनी की प्रैक्टिस करने की सुविधा आज़माना
सिम्युलेटर में अपने ऐक्शन की जांच करने के लिए, यह तरीका अपनाएं:
- नेविगेशन बार में, टेस्ट करें पर क्लिक करें. इससे आपको सिम्युलेटर पर ले जाया जाएगा.
- सिम्युलेटर में अपनी कार्रवाई की जांच करने के लिए, इनपुट फ़ील्ड में
Talk to Spelling Practiceटाइप करें. - Enter दबाएं. आपकी कार्रवाई को
Main invocationप्रॉम्प्ट और जोड़े गएStartसीन प्रॉम्प्ट के साथ जवाब देना चाहिए. "स्पेलिंग की प्रैक्टिस में आपका स्वागत है. शब्द की स्पेलिंग बताने के लिए, फ़ोनेटिक वर्णमाला का इस्तेमाल करें. उदाहरण के लिए, a के लिए ऐल्फ़ा, b के लिए ब्रावो, c के लिए चार्ली वगैरह. क्या आपको जारी रखना है?". - जारी रखने के लिए, हां बोलें
- सिम्युलेटर, स्पेलिंग बताने के लिए किसी शब्द की आवाज़ चलाएगा
- फ़ोनेटिक वर्णमाला का इस्तेमाल करके, शब्द की स्पेलिंग बताई जा सकती है. उदाहरण के लिए, better के लिए "bravo echo tango tango echo romeo" बोलें या टाइप करें
- सिम्युलेटर, सही या गलत जवाब देगा.
- अगले शब्द पर जाने के लिए, अगला कहें या गेम लूप से बाहर निकलने के लिए, छोड़ें कहें.
13. बधाई
बधाई हो, आपने स्पेलिंग प्रैक्टिस गेम बना लिया है!
अब आपको Cloud Firestore, Cloud Functions, और Google Assistant Action Builder का इस्तेमाल करके गेम बनाने के लिए ज़रूरी मुख्य चरणों के बारे में पता चल गया है.
आपने क्या-क्या कवर किया
- Cloud Firestore के साथ इंटरैक्ट करने का तरीका
- उपयोगकर्ता से डेटा इकट्ठा करने के लिए, स्लॉट का इस्तेमाल कैसे करें
- उपयोगकर्ता के इनपुट को प्रोसेस करने और जवाब देने का तरीका
- किसी सीन में लॉजिक जोड़ने के लिए शर्तों का इस्तेमाल कैसे करें
- गेम लूप जोड़ने का तरीका
सीखने के लिए अन्य संसाधन
Google Assistant के लिए ऐक्शन बनाने के बारे में जानने के लिए, इन संसाधनों को देखें:
- Google Assistant के लिए ऐक्शन डेवलप करने से जुड़ा दस्तावेज़
- सैंपल कोड और लाइब्रेरी के लिए, Actions on Google का GitHub पेज
- Google Assistant के साथ काम करने वाले डेवलपर के लिए, Reddit की आधिकारिक कम्यूनिटी
- बातचीत के डिज़ाइन से जुड़े दिशा-निर्देश, ताकि Conversational Actions के बारे में सबसे सही तरीके और दिशा-निर्देशों के बारे में जानकारी मिल सके
- Cloud Firestore के बारे में बुनियादी जानकारी
अपने प्रोजेक्ट को क्लीन अप करें [सुझाया गया]
संभावित शुल्क से बचने के लिए, हमारा सुझाव है कि आप उन प्रोजेक्ट को हटा दें जिनका आपको इस्तेमाल नहीं करना है. इस कोडलैब में बनाए गए प्रोजेक्ट मिटाने के लिए, यह तरीका अपनाएं:
- अपने Firebase प्रोजेक्ट और संसाधनों को मिटाने के लिए, प्रोजेक्ट बंद करना (मिटाना) सेक्शन में दिया गया तरीका अपनाएं.
चेतावनी: पक्का करें कि Google Cloud Console के सेटिंग पेज पर, मिटाने के लिए सही प्रोजेक्ट चुना गया हो.
- ज़रूरी नहीं: अगर आपको अपने प्रोजेक्ट को Actions console से तुरंत हटाना है, तो प्रोजेक्ट मिटाना सेक्शन में दी गई प्रोसेस पूरी करें. अगर आपने यह चरण पूरा नहीं किया, तो आपका प्रोजेक्ट करीब 30 दिनों के बाद अपने-आप हट जाएगा.
हमारे नए अपडेट और घोषणाओं के बारे में जानने के लिए, Twitter पर @ActionsOnGoogle और @Firebase को फ़ॉलो करें. साथ ही, #GoogleIO पर ट्वीट करके बताएं कि आपने क्या बनाया है!