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


आपको क्या सीखने को मिलेगा
- उपयोगकर्ता से डेटा इकट्ठा करने के लिए, स्लॉट का इस्तेमाल कैसे करें
- किसी सीन में लॉजिक जोड़ने के लिए, शर्तों का इस्तेमाल कैसे करें
- गेम लूप जोड़ने का तरीका
- सहायक पाथ जोड़ने का तरीका
आपको किन चीज़ों की ज़रूरत होगी
इस कोडलैब के लिए, ये शर्तें पूरी करना ज़रूरी है:
- कोई वेब ब्राउज़र, जैसे कि Google Chrome
- लेवल 1 का पूरा किया गया कोडलैब ऐक्शन प्रोजेक्ट ( Actions Builder Level 1 का इस्तेमाल करके, Google Assistant के लिए ऐक्शन बनाना)
इस कोडलैब के फ़ुलफ़िलमेंट कोड को समझने के लिए, JavaScript (ES6) के बारे में जानकारी होना ज़रूरी है. हालांकि, ऐसा करना ज़रूरी नहीं है.
2. बातचीत वाले इंटरफ़ेस को बनाना जारी रखें
आपने पहले कोडलैब में, एक सीन Start के साथ एक सामान्य बातचीत वाली कार्रवाई बनाई थी.
इस कोडलैब में, आपको अपने ऐक्शन की बातचीत को आगे बढ़ाने का तरीका बताया जाएगा. यहां दिए गए सेक्शन में, आपको अपने ऐक्शन को कॉन्फ़िगर करना होगा, ताकि वह ये काम कर सके:
- जब उपयोगकर्ता को अपनी किस्मत के बारे में जानना हो, तब नए
Fortuneसीन पर ट्रांज़िशन करना - उपयोगकर्ता से पूछें कि उसे अपनी यात्रा के लिए कौनसी सहायता चाहिए
- उपयोगकर्ता की पसंद के हिसाब से, उसे उसकी किस्मत के बारे में जानकारी देना
Fortune सीन बनाना
इस सेक्शन में, Fortune सीन बनाया जाता है. साथ ही, यह तय किया जाता है कि बातचीत के दौरान उपयोगकर्ता इस सीन पर कैसे ट्रांज़िशन करेगा.
Fortune नाम का नया सीन बनाने के लिए, यह तरीका अपनाएं:
- लेवल 1 का Actions प्रोजेक्ट खोलें.
- नेविगेशन बार में, डेवलप करें पर क्लिक करें.
- सीन में जाकर, शुरू करें सीन पर क्लिक करें.
- विकल्प खोलने के लिए, हां इंटेंट ('हां' से मैच होने पर बॉक्स) पर क्लिक करें.
- प्रॉम्प्ट हटाने के लिए, प्रॉम्प्ट भेजें को अनचेक करें.
- ट्रांज़िशन सेक्शन में, ड्रॉप-डाउन मेन्यू पर क्लिक करें. इसके बाद, टेक्स्ट बॉक्स पर क्लिक करें और
Fortuneटाइप करें. - जोड़ें पर क्लिक करें. इससे
Fortuneनाम का एक नया सीन बनता है. इसमें, उपयोगकर्ता के भाग्य के बारे में बताने के लिए,Startसीन सेFortuneसीन में ट्रांज़िशन भी जोड़ा जाता है.

Fortune सीन के लिए बातचीत का लॉजिक तय करना
इस कोडलैब में, आपको Fortune सीन को कॉन्फ़िगर करना है, ताकि उपयोगकर्ता से यह सवाल पूछा जा सके, "आपको अपनी खोज में मदद करने के लिए, इनमें से क्या चाहिए: एक ड्रैगन, एक अनुवादक या एक कंपास?" स्लॉट भरने की सुविधा का इस्तेमाल करके, आगे बढ़ने से पहले उपयोगकर्ता से ज़रूरी जानकारी इकट्ठा की जा सकती है.
इस ऐक्शन में, तीन चीज़ों के बारे में बताया गया है: ड्रैगन, अनुवादक, और कंपास. उपयोगकर्ता के इनपुट में इन तीन विकल्पों की पहचान करने के लिए, आपको एक नया टाइप बनाना होगा.
किसी सीन के स्लॉट भरने के चरण में टाइप का इस्तेमाल करके, यह तय किया जा सकता है कि आपको उपयोगकर्ता से कौनसी जानकारी चाहिए. जब NLU इंजन को उपयोगकर्ता के इनपुट में कोई स्लॉट मैच मिलता है, तो वह स्लॉट को टाइप किए गए पैरामीटर के तौर पर निकालता है. इससे आपको किसी सीन में लॉजिक को लागू करने में मदद मिलती है.
available_options टाइप बनाएं
इस सेक्शन में, available_options नाम का एक नया टाइप बनाया जाता है. इसमें तीन विकल्प दिए जाते हैं. उपयोगकर्ता, प्रॉम्प्ट के जवाब में इनमें से कोई विकल्प चुन सकते हैं: ड्रैगन, ट्रांसलेटर, और कंपास. इसके अलावा, इन विकल्पों के लिए कुछ समानार्थी शब्द भी तय किए जाते हैं, ताकि अगर कोई उपयोगकर्ता कुछ ऐसा ही कहता है, तो उसे समझा जा सके. बाद के सेक्शन में, आपको किसी स्लॉट में available_options टाइप जोड़ना होता है. इससे यह पता चलता है कि आपको उपयोगकर्ता की पसंद के बारे में जानकारी चाहिए.
available_options टाइप बनाने के लिए, यह तरीका अपनाएं:
- नेविगेशन बार में, टाइप पर क्लिक करें.
- + (प्लस का निशान) पर क्लिक करें,
available_optionsटाइप करें, औरEnterदबाएं. - विकल्प खोलने के लिए,
available_optionsपर क्लिक करें.
टाइप को जानकारी के की-वैल्यू पेयर के तौर पर कॉन्फ़िगर किया जाता है. इसमें की, टाइप का नाम होता है और वैल्यू, उस की के लिए समानार्थी शब्द होते हैं. कुंजी तय करने पर, उसे वैल्यू के तौर पर अपने-आप जोड़ दिया जाता है.
उपयोगकर्ता के लिए तीन विकल्प जोड़ने के लिए, यह तरीका अपनाएं:
- स्क्रोल करके, ऐंट्री जोड़ें सेक्शन पर जाएं.
- नई एंट्री फ़ील्ड में,
dragonटाइप करें औरEnterदबाएं. इस कार्रवाई सेdragonकुंजी बनती है. - वैल्यू जोड़ें फ़ील्ड में
hydraटाइप करें. इसके बाद, इसे वैल्यू (समानार्थी) के तौर पर जोड़ने के लिएEnterदबाएं. इसके बाद, वैल्यूlizardके लिए यह चरण दोहराएं. - बची हुई कुंजियां और उनसे जुड़ी वैल्यू जोड़ें:
translator | translator,communicator,machine,decoder,translatecompass | compass,direction,guide

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

- प्रॉम्प्ट भेजें को चुनें. इसके बाद, यह मैसेज और सुझाव वाले चिप जोड़ें:
candidates:
- first_simple:
variants:
- speech: >-
What do you choose to help you on your quest, a dragon, a
translator, or a compass?
suggestions:
- title: 'Dragon'
- title: 'Translator'
- title: 'Compass'
- सेव करें पर क्लिक करें.
आपने अब स्लॉट में available_options टाइप जोड़ दिया है. इससे आपके ऐक्शन को यह जानकारी मिलती है कि आगे बढ़ने से पहले, आपको उपयोगकर्ता से कौनसी जानकारी (सहायता के लिए उनकी पसंद) इकट्ठा करनी है. आपने स्लॉट में एक प्रॉम्प्ट भी कॉन्फ़िगर किया है. जब उपयोगकर्ता सीन के स्लॉट भरने वाले चरण पर पहुंचता है, तब यह प्रॉम्प्ट, प्रॉम्प्ट की सूची में जुड़ जाता है.
ध्यान दें कि जब आपने स्लॉट का नाम chosenOptions रखा था, तब स्लॉट की वैल्यू को वापस लिखने की सुविधा को पसंद के मुताबिक बनाएं फ़ील्ड को उसी नाम ($session.params.chosenOptions) से अपडेट किया गया था. Actions Builder में और क्लाइंट लाइब्रेरी के ज़रिए फ़ुलफ़िलमेंट में, इस पैरामीटर को उस नाम से ऐक्सेस किया जा सकता है.
scene.slots.status == "FINAL" शर्त को कॉन्फ़िगर करें
कोई स्लॉट जोड़ने पर, शर्त scene.slots.status == "FINAL" को शर्तों की सूची में अपने-आप जोड़ दिया जाता है.
scene.slots.status == "FINAL" शर्त से यह पता चलता है कि स्लॉट भरने की प्रोसेस पूरी हो गई है. सभी स्लॉट भर जाने पर, स्थिति के आधार पर वेबुक ट्रिगर किया जा सकता है, नए सीन पर ट्रांज़िशन किया जा सकता है या प्रॉम्प्ट की सूची में प्रॉम्प्ट जोड़े जा सकते हैं.
इस सेक्शन में, scene.slots.status == "FINAL" को कॉन्फ़िगर किया जाता है, ताकि स्लॉट भर जाने के बाद प्रॉम्प्ट को प्रॉम्प्ट की सूची में जोड़ा जा सके.
इस प्रॉम्प्ट को FINAL शर्त में जोड़ने के लिए, यह तरीका अपनाएं:
- विकल्पों वाली विंडो खोलने के लिए,
scene.slots.status == "FINAL"पर क्लिक करें. - प्रॉम्प्ट भेजें को चुनें और यह प्रॉम्प्ट जोड़ें:
candidates:
- first_simple:
variants:
- speech: You picked $session.params.chosenOptions.
- सेव करें पर क्लिक करें.
सिम्युलेटर में अपने ऐक्शन की जांच करना
इस चरण में, आपने यह तय कर लिया है कि स्लॉट भरने के लिए उपयोगकर्ता को कौनसे विकल्प चुनने चाहिए. उपयोगकर्ता से यह जानकारी मिलने के बाद, आपके ऐक्शन को एक प्रॉम्प्ट दिखाना चाहिए. इसमें उस विकल्प का रेफ़रंस होना चाहिए जिसे उपयोगकर्ता ने चुना है.
अपने ऐक्शन की जांच करने के लिए, यह तरीका अपनाएं:
- नेविगेशन बार में, टेस्ट करें पर क्लिक करें.
- इनपुट फ़ील्ड में
Talk to my test appपर क्लिक करें या टाइप करें. इसके बाद,Enterदबाएं. - इनपुट फ़ील्ड में
Yesलिखें औरEnterदबाएं. (इसके अलावा, हां सुझाव वाले चिप पर क्लिक किया जा सकता है.)

dragonपर क्लिक करें, टाइप करें या बोलें. आपको "आपने ड्रैगन चुना है." प्रॉम्प्ट मिलेगा
अगले सेक्शन में, उपयोगकर्ता के लिए उपलब्ध हर सहायता के लिए प्रॉम्प्ट को पसंद के मुताबिक बनाया जाता है.
शर्तों का इस्तेमाल करके प्रॉम्प्ट को पसंद के मुताबिक बनाना
इस सेक्शन में, उपयोगकर्ता के लिए उपलब्ध हर विकल्प के लिए शर्तें जोड़ी जाती हैं. साथ ही, हर शर्त के लिए कस्टम प्रॉम्प्ट जोड़ा जाता है.
dragon की किस्मत को अपनी पसंद के मुताबिक बनाना
अगर किसी उपयोगकर्ता ने "ड्रैगन" चुना है, तो शर्त को अपडेट करने और प्रॉम्प्ट को पसंद के मुताबिक बनाने के लिए, यह तरीका अपनाएं:
- नेविगेशन बार में, डेवलप करें पर क्लिक करें.
- नेविगेशन बार में, फ़ॉर्च्यून सीन पर क्लिक करें.
- विकल्पों वाली विंडो खोलने के लिए,
scene.slots.status == "FINAL"पर क्लिक करें. - स्थिति की जानकारी को
scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon"के तौर पर अपडेट करें - प्रॉम्प्ट भेजें को चुनें.
- कोड एडिटर में, इस फ़ॉर्च्यून को प्रॉम्प्ट में जोड़ें:
candidates:
- first_simple:
variants:
- speech: >-
The people of Gryffinberg will be awestruck by the beauty and power
of the ancient dragon. Much to your dismay, the townspeople fall
into dispute over who will receive the honor of riding the dragon
first. You return home from your quest without everlasting glory or
a dragon.
- सेव करें पर क्लिक करें.

अब जब कोई उपयोगकर्ता "ड्रैगन" या इससे मिलता-जुलता कोई शब्द बोलता है, तो आपका ऐक्शन उस विकल्प के आधार पर फ़ॉर्च्यून कुकी की जानकारी देता है. इसके बाद, बाकी दो सिलेक्शन जोड़ें.
translator की किस्मत को अपनी पसंद के मुताबिक बनाना
शर्त जोड़ने और उपयोगकर्ता के "अनुवादक" चुनने पर प्रॉम्प्ट को पसंद के मुताबिक बनाने के लिए, यह तरीका अपनाएं:
- शर्त के बगल में मौजूद, + (प्लस का निशान) पर क्लिक करें.
- else if फ़ील्ड में
scene.slots.status == "FINAL" && session.params.chosenOptions == "translator"जोड़ें. - प्रॉम्प्ट भेजें को चुनें.
- अपने कोड एडिटर में यह प्रॉम्प्ट जोड़ें:
candidates:
- first_simple:
variants:
- speech: >-
With the help of the translator, the rival factions in Gryffinberg
are finally able to communicate with each other and resolve their
disputes. You will complete your quest to restore peace in the town.
The translator will be used on many subsequent journeys across the
earth. After its work is done, it retires honorably to a premier
location in the Gryffinberg History Museum.
- सेव करें पर क्लिक करें.

compass की किस्मत को अपनी पसंद के मुताबिक बनाना
उपयोगकर्ता के "कंपास" चुनने पर, शर्त जोड़ने और प्रॉम्प्ट को पसंद के मुताबिक बनाने के लिए, यह तरीका अपनाएं:
- शर्त के बगल में मौजूद, + (प्लस का निशान) पर क्लिक करें.
- else if टेक्स्ट बॉक्स में
scene.slots.status == "FINAL" && session.params.chosenOptions == "compass"जोड़ें. - प्रॉम्प्ट भेजें को चुनें.
- कोड एडिटर में यह प्रॉम्प्ट जोड़ें:
candidates:
- first_simple:
variants:
- speech: >-
The compass will help you find the mystical and ancient Library of
Gryffinberg. Among its infinite stacks of dusty books, you find one
entitled "Wisdom of the Ages". By the time you've read the
50,000-page tome, the townspeople have forgotten their problems. You
will write a second edition of "Wisdom of the Ages", but have
limited commercial success.
- सेव करें पर क्लिक करें.
सिम्युलेटर में अपने ऐक्शन की जांच करना
इस समय, आपकी कार्रवाई को उपयोगकर्ता के लिए, उनकी चुनी गई सुविधा के हिसाब से फ़ॉर्च्यून उपलब्ध कराना चाहिए.
अपने ऐक्शन की जांच करने के लिए, यह तरीका अपनाएं:
- नेविगेशन बार में, टेस्ट करें पर क्लिक करें.
- इनपुट फ़ील्ड में
Talk to my test appलिखें औरEnterदबाएं. - इनपुट फ़ील्ड में
Yesलिखें औरEnterदबाएं. इसके अलावा, हां सुझाव वाले चिप पर क्लिक करें. Translatorपर क्लिक करें, टाइप करें या बोलें.

आपको "अनुवादक" विकल्प के लिए सही जवाब मिलेगा.
3. गेम लूप जोड़ना
इस सेक्शन में, आपको अपनी कार्रवाई को कॉन्फ़िगर करना होगा, ताकि उपयोगकर्ता कोई दूसरा विकल्प चुन सके. साथ ही, विकल्प चुनने के बाद उसे अलग तरह की भविष्यवाणी सुनाई जा सके. यह बदलाव, गेम के आखिर में दिखने वाले "क्या आपको फिर से खेलना है?" मैसेज की तरह है. इस लूप को बनाने के लिए, पहले बनाए गए yes और no इंटेंट का फिर से इस्तेमाल किया जा सकता है. साथ ही, उन्हें Again नाम के नए सीन में जोड़ा जा सकता है.
Again सीन बनाना
इस सेक्शन में, आपको एक नया Again सीन बनाना है. साथ ही, एक ऐसा प्रॉम्प्ट जोड़ना है जिसमें उपयोगकर्ता से पूछा जाए कि क्या उसे कोई दूसरा विकल्प चुनना है.
Again सीन बनाने के लिए, यह तरीका अपनाएं:
- नेविगेशन बार में, डेवलप करें पर क्लिक करें.
- सीन में जाकर, + (प्लस का निशान) पर क्लिक करें.
Againटाइप करें औरEnterदबाएं.- नेविगेशन बार में,
Againसीन पर क्लिक करें. - On enter के बगल में मौजूद, + (प्लस का निशान) पर क्लिक करें.
- प्रॉम्प्ट भेजें को चुनें. इसके बाद, यहां दिए गए प्रॉम्प्ट और सुझाव वाले चिप जोड़ें:
candidates:
- first_simple:
variants:
- speech: >-
That is what I see for you. Would you like to choose a different option and
explore another future?
suggestions:
- title: 'Yes'
- title: 'No'
- सेव करें पर क्लिक करें.
Fortune से Again सीन में ट्रांज़िशन जोड़ें
उपयोगकर्ता को उसकी किस्मत के बारे में बताने के बाद, बातचीत को नए Again सीन पर ले जाना होगा.
Fortune सीन से Again सीन में ट्रांज़िशन जोड़ने के लिए, यह तरीका अपनाएं:
- फ़ॉर्च्यून सीन पर क्लिक करें.
- विकल्पों वाली विंडो खोलने के लिए, पहली शर्त (
scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon") पर क्लिक करें. - स्क्रोल करें और ट्रांज़िशन में जाकर,
Againको चुनें. - सेव करें पर क्लिक करें.
- विकल्पों वाली विंडो खोलने के लिए, दूसरी शर्त पर क्लिक करें.
- स्क्रोल करें और ट्रांज़िशन में जाकर,
Againको चुनें. - सेव करें पर क्लिक करें.
- विकल्पों वाली विंडो खोलने के लिए, तीसरी शर्त पर क्लिक करें.
- स्क्रोल करें और ट्रांज़िशन में जाकर,
Againको चुनें. - सेव करें पर क्लिक करें.
सिम्युलेटर में अपने ऐक्शन की जांच करना
इस समय, उपयोगकर्ता को उसकी किस्मत बताने के बाद, आपकी कार्रवाई को यह प्रॉम्प्ट दिखाना चाहिए: "मुझे आपके लिए यही जानकारी मिली है. क्या आपको कोई दूसरा विकल्प चुनकर, भविष्य की कोई और संभावना देखनी है?"
अपने ऐक्शन की जांच करने के लिए, यह तरीका अपनाएं:
- नेविगेशन बार में, टेस्ट करें पर क्लिक करें.
- इनपुट फ़ील्ड में
Talk to my test appलिखें औरEnterदबाएं. - इनपुट फ़ील्ड में
Yesलिखें औरEnterदबाएं. इसके अलावा, हां सुझाव वाले चिप पर क्लिक करें. dragonपर क्लिक करें, टाइप करें या बोलें.

आपको ड्रैगन विकल्प के लिए, Again प्रॉम्प्ट के साथ-साथ फ़ॉर्च्यून भी मिलेगा.
इंटेंट जोड़ना और Again सीन पर ट्रांज़िशन करना
इस सेक्शन में, Again सीन में yes और no इंटेंट जोड़े जाते हैं. इससे आपकी कार्रवाई को यह समझने में मदद मिलती है कि उपयोगकर्ता को नया विकल्प चुनना है या नहीं. आपको yes और no इंटेंट के लिए सही ट्रांज़िशन भी जोड़ने होंगे. yes इंटेंट, Fortune सीन पर ट्रांज़िशन करता है. वहीं, no इंटेंट, सिस्टम सीन End conversation पर ट्रांज़िशन करता है.
Again सीन में इंटेंट और ट्रांज़िशन जोड़ने के लिए, यह तरीका अपनाएं:
- नेविगेशन बार में, डेवलप करें पर क्लिक करें.
Againसीन पर क्लिक करें.- उपयोगकर्ता के इंटेंट को पूरा करने की सुविधा के बगल में मौजूद, + (प्लस का निशान) पर क्लिक करें.
- इरादे के ड्रॉप-डाउन मेन्यू से हां चुनें.
- ट्रांज़िशन ड्रॉप-डाउन मेन्यू से,
Fortuneचुनें. - सेव करें पर क्लिक करें.

- उपयोगकर्ता के इंटेंट को पूरा करने की सुविधा के बगल में मौजूद, + (प्लस का निशान) पर क्लिक करें.
- इरादे वाले ड्रॉप-डाउन मेन्यू से, नहीं चुनें.
- ट्रांज़िशन ड्रॉप-डाउन मेन्यू से, बातचीत खत्म करें चुनें.
- प्रॉम्प्ट भेजें को चुनें और कोड एडिटर में यह प्रॉम्प्ट जोड़ें:
candidates:
- first_simple:
variants:
- speech: >-
It pleases me that you are satisfied with your choice. Best of luck on your quest. Farewell.
- सेव करें पर क्लिक करें.
सिम्युलेटर में अपने ऐक्शन की जांच करना
आपके ऐक्शन को अब यह समझना चाहिए कि उपयोगकर्ता को कोई नया विकल्प चुनना है या बातचीत खत्म करनी है.
yes इंटेंट की जांच करने के लिए, यह तरीका अपनाएं:
- नेविगेशन बार में, टेस्ट करें पर क्लिक करें.
- इनपुट फ़ील्ड में
Talk to my test appलिखें औरEnterदबाएं. - इनपुट फ़ील्ड में
Yesलिखें औरEnterदबाएं. इसके अलावा, हां सुझाव वाले चिप पर क्लिक करें. - किसी एक विकल्प पर क्लिक करें, उसे टाइप करें या बोलें.
- इनपुट फ़ील्ड में
Yesलिखें औरEnterदबाएं.

आपको यह प्रॉम्प्ट दिखेगा: "आपको अपने सफ़र में मदद करने के लिए, इनमें से क्या चुनना है: एक ड्रैगन, एक अनुवादक या एक कंपास?"
no इंटेंट की जांच करने के लिए, यह तरीका अपनाएं:
- किसी एक विकल्प पर क्लिक करें, उसे टाइप करें या बोलें.
- इनपुट फ़ील्ड में
Noटाइप करें औरEnterदबाएं.
आपको यह End conversation प्रॉम्प्ट मिलेगा: "हमें खुशी है कि आप अपने चुने गए विकल्प से संतुष्ट हैं. आपको शुभकामनाएँ. अलविदा."
4. सहायता करने वाला पाथ जोड़ना
आपने अब वह मुख्य पाथ बना लिया है जिसका इस्तेमाल ज़्यादातर लोग आपकी कार्रवाई में करते हैं. हालांकि, उपयोगकर्ता Fortune सीन में दिए गए प्रॉम्प्ट, "आपको अपनी खोज में मदद करने के लिए, ड्रैगन, अनुवादक या कंपास में से क्या चुनना है?" का जवाब, दिए गए विकल्पों में से किसी एक को चुनकर दे सकता है.
इस सेक्शन में, आपको अपनी कार्रवाई को कॉन्फ़िगर करना होगा. इससे यह पता चलेगा कि उपयोगकर्ता ने "जादू", "पैसे", "घोड़ा" या "फ़ोन" में से कौन-सा विकल्प चुना है. साथ ही, जब उपयोगकर्ता इनमें से कोई विकल्प चुनता है, तो उसे ओरिजनल तीन विकल्पों में से कोई एक विकल्प चुनने के लिए कहा जाएगा. इस लॉजिक को कॉन्फ़िगर करने के लिए, आपको एक नया type बनाना होगा. इसमें ये अन्य विकल्प और एक नया इंटेंट, other_option शामिल होगा. जब कोई उपयोगकर्ता इनमें से कोई विकल्प चुनता है, तब यह इंटेंट मैच होता है. आपको other_option इंटेंट में मौजूद ट्रेनिंग फ़्रेज़ को एनोटेट भी करना होगा, ताकि इंटेंट पैरामीटर की पहचान की जा सके और उन्हें निकाला जा सके.
जब Assistant का नैचुरल लैंग्वेज प्रोसेसिंग (एनएलपी) इंजन, उपयोगकर्ता के इनपुट में पैरामीटर मैच का पता लगाता है, तो वह वैल्यू को टाइप किए गए पैरामीटर के तौर पर निकालता है. इससे सीन में लॉजिक को लागू किया जा सकता है. इस कोडलैब में, आपको उपयोगकर्ता की चुनी गई सहायता को निकालने के लिए, अपने ऐक्शन को कॉन्फ़िगर करना होगा. साथ ही, उस विकल्प को प्रॉम्प्ट में शामिल करना होगा.
unavailable_options टाइप बनाएं
अब unavailable_options टाइप बनाया जा सकता है. इसमें कई अलग-अलग विकल्प होते हैं, ताकि आपकी कार्रवाई उपयोगकर्ता के इनपुट में मौजूद डेटा की पहचान कर सके.
unavailable_options टाइप बनाने के लिए, यह तरीका अपनाएं:
- नेविगेशन बार में, डेवलप करें पर क्लिक करें.
- टाइप में जाकर, + (प्लस का निशान) पर क्लिक करें.
unavailable_optionsटाइप करें औरEnterदबाएं.- विकल्प खोलने के लिए,
unavailable_optionsपर क्लिक करें. - ऐंट्री जोड़ें सेक्शन में, ये ऐंट्री और उनसे जुड़ी वैल्यू डालें:
|
|
|
|
|
|
|
|
आपकी कुंजी-वैल्यू टेबल ऐसी दिखनी चाहिए:

- सेव करें पर क्लिक करें.
other_option इंटेंट बनाएं
इसके बाद, other_option नाम का एक इंटेंट बनाएं. साथ ही, ट्रेनिंग के ऐसे वाक्यांश जोड़ें जिनमें unavailable_options टाइप के विकल्प शामिल हों. इस इंटेंट का मिलान तब होता है, जब उपयोगकर्ता unavailable_options टाइप में मौजूद कोई विकल्प चुनता है.
other_option इंटेंट बनाने और उसे कॉन्फ़िगर करने के लिए, यह तरीका अपनाएं:
- कस्टम इंटेंट में जाकर, + (प्लस का निशान) पर क्लिक करें.
other_optionटाइप करें औरEnterदबाएं.- विंडो खोलने के लिए,
other_optionपर क्लिक करें. - यहां दिए गए ट्रेनिंग फ़्रेज़ जोड़ें और हर फ़्रेज़ के बाद
Enterदबाएं:
I want to use spellsI really really want to use a phonemagic!cashI want to ride a horse
- इन्टेंट पैरामीटर जोड़ें सेक्शन में, पैरामीटर का नाम बदलकर
chosenUnavailableOptionकरें. - सेव करें पर क्लिक करें.
ट्रेनिंग फ़्रेज़ डालते समय, Actions Builder unavailable_options टाइप के spells, phone, magic, cash, और horse को पहचान लेता है. साथ ही, उन शब्दों को अपने-आप हाइलाइट (एनोटेट) कर देता है. Actions Builder, इंटेंट पैरामीटर जोड़ें सेक्शन में अपने-आप एक इंटेंट पैरामीटर जोड़ देता है. इसे यहां दी गई इमेज में दिखाया गया है.
इंटेंट पैरामीटर की मदद से, विकल्प का नाम निकाला जा सकता है. साथ ही, उस विकल्प का इस्तेमाल प्रॉम्प्ट में किया जा सकता है.

Fortune सीन में other_option इंटेंट जोड़ें
अब आपके पास एक इंटेंट, other_option है. यह इंटेंट, उपयोगकर्ता के ऐसे विकल्प को हैंडल कर सकता है जो ओरिजनल विकल्पों में से एक नहीं है. इस सेक्शन में, आपको Fortune सीन में other_option इंटेंट जोड़ना है. उपयोगकर्ता के इनपुट के आधार पर प्रॉम्प्ट को पसंद के मुताबिक बनाने के लिए, इंटेंट पैरामीटर का इस्तेमाल किया जाता है.
Fortune सीन में other_option इंटेंट जोड़ने के लिए, यह तरीका अपनाएं:
- फ़ॉर्च्यून सीन पर क्लिक करें.
- उपयोगकर्ता के इंटेंट को पूरा करने की सुविधा के बगल में मौजूद, + (प्लस का निशान) पर क्लिक करें.
- इरादे वाले ड्रॉप-डाउन मेन्यू से,
other_optionचुनें. - प्रॉम्प्ट भेजें को चुनें और यह प्रॉम्प्ट जोड़ें:
candidates:
- first_simple:
variants:
- speech: >-
I have seen the future and a $intent.params.chosenUnavailableOption.original
will not aid you on your journey.
एक्सप्रेशन $intent.params.chosenUnavailableOption, इंटेंट पैरामीटर ऑब्जेक्ट को दिखाता है. वहीं, $intent.params.chosenUnavailableOption.original उस ऑब्जेक्ट की वैल्यू को दिखाता है. original property से मतलब, उपयोगकर्ता के दिए गए रॉ इनपुट से है.
- सेव करें पर क्लिक करें.

जब कोई उपयोगकर्ता, Fortune सीन के दौरान unavailable_options टाइप में मौजूद किसी विकल्प को बोलता है, तो other_option इंटेंट मैच हो जाता है. साथ ही, प्रॉम्प्ट को प्रॉम्प्ट क्यू में जोड़ देता है. कोई ट्रांज़िशन तय न होने की वजह से, सीन को लागू करने वाला लूप, शर्तों की जांच करके जारी रहता है. इसके बाद, chosenOptions स्लॉट, प्रॉम्प्ट को प्रॉम्प्ट क्यू में जोड़ देता है. इसके बाद, प्रॉम्प्ट क्यू को उपयोगकर्ता को डिलीवर कर दिया जाता है.
सिम्युलेटर में अपने ऐक्शन की जांच करना
अब उपयोगकर्ता के unavailable_options टाइप में दिए गए विकल्पों में से किसी एक को चुनने पर, आपके ऐक्शन को सही तरीके से जवाब देना चाहिए. साथ ही, यह भी बताना चाहिए कि उपयोगकर्ता ने कौनसी सहायता चुनी है. इसके बाद, आपकी कार्रवाई को उपयोगकर्ता से ओरिजनल विकल्पों (ड्रैगन, अनुवादक या कंपास) में से किसी एक को चुनने के लिए कहना चाहिए.
सिम्युलेटर में अपनी कार्रवाई की जांच करने के लिए, यह तरीका अपनाएं:
- नेविगेशन बार में, टेस्ट करें पर क्लिक करें.
- इनपुट फ़ील्ड में
Talk to my test appलिखें औरEnterदबाएं. - इनपुट फ़ील्ड में
Yesलिखें औरEnterदबाएं. इसके अलावा, हां सुझाव वाले चिप पर क्लिक करें. - इनपुट फ़ील्ड में
magicलिखें औरEnterदबाएं.

उपयोगकर्ता के "मैजिक" चुनने पर, आपको लग सकता है कि प्रॉम्प्ट सही नहीं है. ऐसा इसलिए है, क्योंकि इससे पहले "a" आर्टिकल रखा गया है. इस समस्या को ठीक करने के लिए, यहां दिए गए सेक्शन देखें.
unavailable_options हैंडलर जोड़ें
unavailable_options टाइप के सही विकल्पों से पहले "a" आर्टिकल जोड़ने के लिए, ऑर्डर पूरा करने की प्रोसेस में इवेंट हैंडलर को कॉन्फ़िगर किया जा सकता है. इससे यह पता चलेगा कि उपयोगकर्ता ने जो विकल्प चुना है उसके आगे "a" आर्टिकल की ज़रूरत है या नहीं. सबसे पहले, आपको अपने ऐक्शन को कॉन्फ़िगर करना होगा, ताकि वह कंसोल में हैंडलर को कॉल कर सके.
unavailable_options हैंडलर जोड़ने के लिए, यह तरीका अपनाएं:
- नेविगेशन बार में, डेवलप करें पर क्लिक करें.
Fortuneसीन पर क्लिक करें.- विंडो खोलने के लिए, उपयोगकर्ता के इरादे को पूरा करने से जुड़ी सेटिंग में जाकर, जब other_option मैच हो जाए पर क्लिक करें.
- प्रॉम्प्ट भेजें चेकबॉक्स से सही का निशान हटाएं.
- अपने वेबुक को कॉल करें चेकबॉक्स चुनें.
- इवेंट हैंडलर के लिए, टेक्स्ट बॉक्स में
unavailable_optionsडालें.

- सेव करें पर क्लिक करें.
फ़ुलफ़िलमेंट को अपडेट करना और डिप्लॉय करना
unavailable_options इवेंट हैंडलर को कॉल करने के लिए, कार्रवाई को कॉन्फ़िगर करने के बाद, अपने फ़ुलफ़िलमेंट में हैंडलर को अपडेट किया जा सकता है और उसे डिप्लॉय किया जा सकता है.
फ़ुलफ़िलमेंट की जानकारी अपडेट करने के लिए, यह तरीका अपनाएं:
- नेविगेशन बार में, वेबहुक पर क्लिक करें.
greetingहैंडलर में यह कोड जोड़ें:
app.handle('unavailable_options', conv => {
const option = conv.intent.params.chosenUnavailableOption.original;
const optionKey = conv.intent.params.chosenUnavailableOption.resolved;
let message = 'I have seen the future and ';
if(optionsNeedA.has(optionKey)){
message = message + 'a ';
}
message = message + `${option} will not aid you on your journey. `;
conv.add(message);
});
const app = conversation();में यह कोड जोड़ें:
const optionsNeedA = new Set();
optionsNeedA.add('horse').add('phone');
- फ़ुलफ़िलमेंट सेव करें पर क्लिक करें.
- Deploy Fulfillment पर क्लिक करें. डप्लॉयमेंट पूरा होने के बाद, आपके एडिटर में सबसे ऊपर यह मैसेज दिखता है: आपका Cloud Function डप्लॉयमेंट अप-टू-डेट है.
कोड को समझना
unavailable_options हैंडलर ये काम करता है:
- यह
convऑब्जेक्ट सेoptionडेटा लेता है औरoptionकोoriginalप्रॉपर्टी असाइन करता है. यह उपयोगकर्ता से मिला रॉ इनपुट होता है resolvedप्रॉपर्टी कोoptionKeyअसाइन करता है. यहunavailable_optionsटाइप के लिए कुंजी है- यह जांच करता है कि क्या
optionKeyउन विकल्पों में से एक है जिनके लिए "a" की ज़रूरत होती है; अगर ऐसा है, तो "a" जोड़कर मैसेज बनाता है conv.add(message)के ज़रिए मैसेज जोड़ता है
सिम्युलेटर में अपने ऐक्शन की जांच करना
अब आपकी कार्रवाई को प्रॉम्प्ट में बदलाव करना चाहिए. यह बदलाव इस आधार पर होना चाहिए कि unavailable_options टाइप के लिए उपयोगकर्ता के चुने गए विकल्प से पहले "a" आर्टिकल की ज़रूरत है या नहीं.
अपने ऐक्शन की जांच करने के लिए, यह तरीका अपनाएं:
- नेविगेशन बार में, टेस्ट करें पर क्लिक करें.
- इनपुट फ़ील्ड में
Talk to my test appपर क्लिक करें या टाइप करें. इसके बाद,Enterदबाएं. - इनपुट फ़ील्ड में
Yesलिखें औरEnterदबाएं. इसके अलावा, हां सुझाव वाले चिप पर क्लिक करें. - इनपुट फ़ील्ड में
magicलिखें औरEnterदबाएं. - इनपुट फ़ील्ड में
horseलिखें औरEnterदबाएं.

आपके ऐक्शन को "घोड़ा" विकल्प से पहले "a" आर्टिकल जोड़ना चाहिए. साथ ही, "जादुई" विकल्प के लिए "a" आर्टिकल के बिना प्रॉम्प्ट बनाना चाहिए.
अपने प्रोजेक्ट को क्लीन अप करना [सुझाया गया]
संभावित शुल्क से बचने के लिए, हमारा सुझाव है कि आप उन प्रोजेक्ट को हटा दें जिनका आपको इस्तेमाल नहीं करना है. इस कोडलैब में बनाए गए प्रोजेक्ट मिटाने के लिए, यह तरीका अपनाएं:
- क्लाउड प्रोजेक्ट और संसाधन मिटाने के लिए, प्रोजेक्ट बंद करना (मिटाना) सेक्शन में दिया गया तरीका अपनाएं.
- ज़रूरी नहीं: अगर आपको Actions console से अपना प्रोजेक्ट तुरंत हटाना है, तो प्रोजेक्ट मिटाना लेख पढ़ें. अगर आपने यह चरण पूरा नहीं किया, तो आपका प्रोजेक्ट करीब 30 दिनों के बाद अपने-आप हट जाएगा.
5. बधाई हो!
आपने Google Assistant के लिए कार्रवाइयां बनाने से जुड़ी ज़रूरी बुनियादी बातों के बारे में जान लिया है.
आपने क्या कवर किया
- Node.js फ़ुलफ़िलमेंट लाइब्रेरी का इस्तेमाल करके, बातचीत वाली कार्रवाइयां कैसे डेवलप करें
- उपयोगकर्ता से डेटा इकट्ठा करने के लिए, स्लॉट का इस्तेमाल कैसे करें
- सीन में लॉजिक जोड़ने के लिए शर्तों का इस्तेमाल कैसे करें
- गेम लूप जोड़ने का तरीका
- सहायक पाथ जोड़ने का तरीका
ज़्यादा जानें
Google Assistant के लिए ऐक्शन बनाने के बारे में ज़्यादा जानने के लिए, इन संसाधनों का इस्तेमाल करें:
- Google Assistant के लिए ऐक्शन डेवलप करने से जुड़ा दस्तावेज़
- सैंपल कोड और लाइब्रेरी के लिए, Actions on Google का GitHub पेज
- Google Assistant के साथ काम करने वाले डेवलपर के लिए, Reddit की आधिकारिक कम्यूनिटी
- बातचीत के डिज़ाइन से जुड़े दिशा-निर्देश, ताकि Conversational Actions के बारे में सबसे सही तरीके और दिशा-निर्देशों के बारे में जानकारी मिल सके
हमारी नई घोषणाओं के बारे में जानने के लिए, Twitter पर @ActionsOnGoogle को फ़ॉलो करें. साथ ही, आपने जो बनाया है उसे शेयर करने के लिए, #AoGDevs पर ट्वीट करें!
राय जानने के लिए सर्वे
जाने से पहले, कृपया अपने अनुभव के बारे में एक छोटा सा सर्वे भरें.