1. खास जानकारी
Google Assistant डेवलपर प्लैटफ़ॉर्म की मदद से, आप सॉफ़्टवेयर बना सकते हैं और एक अरब से ज़्यादा डिवाइसों पर Google Assistant का इस्तेमाल कर सकते हैं. इसमें स्मार्ट स्पीकर, फ़ोन, कार, टीवी, हेडफ़ोन वगैरह शामिल हैं. यह एक वर्चुअल पर्सनल असिस्टेंट है, जो कि Google Assistant की मदद से काम करती है. लोग किराने का सामान खरीदने या राइड बुक करने जैसे काम पूरे करने के लिए, Assistant से बातचीत करते हैं. डेवलपर के तौर पर, आपके पास Assistant डेवलपर प्लैटफ़ॉर्म का इस्तेमाल करने का विकल्प होता है. इसकी मदद से, उपयोगकर्ताओं और ग्राहक को आइटम भेजने के लिए तीसरे पक्ष की सेवा के बीच बातचीत के दिलचस्प और असरदार अनुभव आसानी से बनाए और मैनेज किए जा सकते हैं.
इस कोडलैब में, Google Assistant की मदद से डेवलप करने के लिए बीच के लेवल के कॉन्सेप्ट शामिल होते हैं. साथ ही, यह Actions SDK टूल (लेवल 1) का इस्तेमाल करके, Google Assistant के लिए कार्रवाइयां बनाएं कोडलैब में बनाई गई कार्रवाई को बेहतर बनाता है. हमारा सुझाव है कि कोडलैब का लेवल 1 पूरा करने के बाद ही इसे शुरू करें.
इस कोडलैब में तैयार किया गया ऐक्शन, लोगों को उनकी मदद के आधार पर पौराणिक देश ग्रिफ़िनबर्ग में उनके मिशन के बारे में बताता है.
आपको क्या बनाना होगा
इस कोडलैब में, इन फ़ंक्शन की मदद से बेहतर तरीके से 'बातचीत की सुविधा वाली कार्रवाई' बनाई जा सकती है:
- इसके तहत, उपयोगकर्ता का डेटा इकट्ठा किया जाता है और वैल्यू के हिसाब से, बातचीत वाले प्रॉम्प्ट में बदलाव किया जाता है.
- बातचीत को आगे बढ़ाने के लिए, फ़ॉलो-अप सवालों के जवाब देता है.
- यह गेम लूप बनाता है. इससे उपयोगकर्ता, गेम लूप में चलाने के बाद ऐक्शन से फिर से इंटरैक्ट कर सकता है.
घर बनाने से पहले, Google Assistant की सुविधा वाले डिवाइस पर "Ok Google, भाग्य और भाग्य से बात करो" बोलकर, लाइव ऐक्शन का इस्तेमाल किया जा सकता है. लौटने वाले उपयोगकर्ता के लिए इस कार्रवाई का डिफ़ॉल्ट पाथ ऐसा दिखेगा:
आपको क्या सीखने को मिलेगा
- उपयोगकर्ता से डेटा इकट्ठा करने के लिए, स्लॉट इस्तेमाल करने का तरीका
- किसी सीन में लॉजिक जोड़ने के लिए, शर्तों का इस्तेमाल करने का तरीका
- गेम लूप जोड़ने का तरीका
- सपोर्टिव पाथ जोड़ने का तरीका
आपको किन चीज़ों की ज़रूरत होगी
इस कोडलैब के लिए ज़रूरी शर्तों में ये चीज़ें शामिल हैं:
- आपकी पसंद का एक IDE/टेक्स्ट एडिटर.
- शेल कमांड चलाने के लिए एक टर्मिनल. इसमें NodeJS, npm, और git इंस्टॉल किए गए हैं.
- कोई वेब ब्राउज़र, जैसे कि Google Chrome.
- कोडलैब का लेवल 1 वाला ऐक्शन प्रोजेक्ट पूरा हो चुका है.
इस कोडलैब के लिए फ़ुलफ़िलमेंट कोड को समझने के लिए, हम आपको JavaScript (ES6) के बारे में जानकारी देने की सलाह देते हैं. हालांकि, ऐसा करना ज़रूरी नहीं है.
ज़रूरी नहीं: सैंपल कोड पाएं
इसके अलावा, ऐक्शन बिल्डर कोडलैब लेवल 1 GitHub रिपॉज़िटरी से लेवल 1 का पूरा प्रोजेक्ट कोड भी लिया जा सकता है, ताकि आप इस कोडलैब के साथ-साथ आगे बढ़ सकें. GitHub डेटा स्टोर करने की इस जगह में, लेवल 2 का पूरा प्रोजेक्ट कोड भी देखा जा सकता है.
2. बातचीत वाला इंटरफ़ेस बनाना जारी रखें
पहले कोडलैब में, आपने Start
नाम के एक सीन का इस्तेमाल करके, आसान बातचीत वाला ऐक्शन बनाया था.
इस कोडलैब में, Action की बातचीत को बढ़ाया जा सकता है. नीचे दिए गए सेक्शन में, आपने ऐक्शन को ये काम करने के लिए कॉन्फ़िगर किया है:
- जब उपयोगकर्ता अपनी किस्मत जानना चाहे, तो
Fortune
के नए सीन पर स्विच करें - उपयोगकर्ता से पूछें कि उन्हें अपने सफ़र में कौनसी मदद चाहिए
- उपयोगकर्ता की पसंद के हिसाब से, उनकी पसंद के मुताबिक राशि डिलीवर करें
Fortune
सीन पर जाएं और बनाएं
इस सेक्शन में, ये काम किए जाते हैं:
Start
सीन से मौजूदा प्रॉम्प्ट हटाएं. यह प्रॉम्प्ट लोगों को जवाब देता है और बातचीत खत्म हो जाती हैStart
सीन सेFortune
सीन पर ट्रांज़िशन के बारे में जानकारी देंFortune
सीन बनाएं
Start
सीन में बदलाव करने और Fortune
सीन में ट्रांज़िशन जोड़ने के लिए, यह तरीका अपनाएं:
- अपने टेक्स्ट एडिटर में लेवल 1 कोडलैब से अपना ऐक्शन प्रोजेक्ट खोलें.
custom/scenes/Start.yaml
फ़ाइल खोलें.yes
इंटेंट के लिएhandler
को अपडेट करें, ताकि आपका कोड नीचे दिए गए स्निपेट से मेल खाए:
Start.yaml
intentEvents: - intent: "yes" transitionToScene: Fortune - handler: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: I understand, stranger. Best of luck on your quest! Farewell. intent: "no" transitionToScene: actions.scene.END_CONVERSATION
- फ़ाइल सेव करें.
Fortune
नाम का एक नया सीन बनाने के लिए, यह तरीका अपनाएं:
- टर्मिनल में, लेवल 1 के कोडलैब के ऐक्शन प्रोजेक्ट पर जाएं.
scenes
डायरेक्ट्री में,Fortune.yaml
नाम की नई फ़ाइल बनाएं:
touch custom/scenes/Fortune.yaml
अगले सेक्शन में जाकर, इस फ़ाइल में बदलाव किया जा सकता है.
Fortune
सीन के लिए बातचीत वाला लॉजिक तय करें
इस कोडलैब में, अपने Fortune
सीन को कॉन्फ़िगर किया जा सकता है. साथ ही, उपयोगकर्ता से यह पूछा जा सकता है कि "अपनी मिशन, ड्रैगन, अनुवादक या कंपास पर मदद पाने के लिए आपने क्या चुना है?" आगे बढ़ने से पहले, उपयोगकर्ता से ज़रूरी जानकारी इकट्ठा करने के लिए, स्लॉट भरना सुविधा का इस्तेमाल किया जा सकता है.
आपका Action तीन चीज़ों के लिए किस्मत उपलब्ध कराता है: ड्रैगन, अनुवादक, और कंपास. अपनी कार्रवाई को इस तरह कॉन्फ़िगर करने के लिए कि उपयोगकर्ता के इनपुट में इन तीन विकल्पों की पहचान की जा सके, आपको एक नया टाइप बनाना होगा.
उपयोगकर्ता से जो जानकारी चाहिए उसे तय करने के लिए, सीन के स्लॉट भरने वाले स्टेज में टाइप का इस्तेमाल किया जा सकता है. जब एनएलयू इंजन को उपयोगकर्ता के इनपुट में किसी स्लॉट मैच का पता चलता है, तो यह स्लॉट को टाइप किए गए पैरामीटर के तौर पर एक्सट्रैक्ट करता है, ताकि आप सीन में इसके साथ लॉजिक लागू कर सकें.
available_options
टाइप बनाएं
इस सेक्शन में, available_options
नाम का एक नया टाइप बनाया जाता है. इसमें तीन विकल्प होते हैं, जिन्हें उपयोगकर्ता प्रॉम्प्ट के जवाब में चुन सकते हैं (ड्रैगन, ट्रांसलेटर और कंपास). अगर कोई उपयोगकर्ता इन शब्दों से मिलता-जुलता कुछ कहता है, तो इन विकल्पों के लिए कुछ समानार्थी शब्द भी तय किए जा सकते हैं. बाद के सेक्शन में, आपको किसी स्लॉट में available_options
टाइप जोड़ना होगा, ताकि यह बताया जा सके कि आपको उपयोगकर्ता की पसंद हासिल करनी है.
available_options
टाइप बनाने के लिए, यह तरीका अपनाएं:
types
नाम की नई डायरेक्ट्री बनाएं:
mkdir custom/types
types
डायरेक्ट्री में,available_options.yaml
नाम की नई फ़ाइल बनाएं:
touch custom/types/available_options.yaml
custom/types/available_options.yaml
को अपने टेक्स्ट एडिटर में खोलें.
टाइप को जानकारी के की-वैल्यू पेयर के तौर पर कॉन्फ़िगर किया जाता है. इसमें key, टाइप का नाम है और value उस कुंजी के लिए समानार्थी शब्द हैं. कुंजी तय करने पर, वह अपने-आप वैल्यू के तौर पर जुड़ जाती है. Actions SDK टूल के साथ, आप कुंजियों को entities
के तौर पर और वैल्यू को synonyms
के तौर पर दिखाते हैं.
उपयोगकर्ता के चुने गए तीन विकल्प जोड़ने के लिए, यह तरीका अपनाएं:
available_options.yaml
फ़ाइल में, येentities
औरsynonyms
जोड़ें:
available_options.yaml
synonym: entities: dragon: synonyms: - dragon - hydra - lizard translator: synonyms: - translator - communicator - machine - decoder - translate compass: synonyms: - compass - direction - guide - navigator matchType: EXACT_MATCH
- फ़ाइल सेव करें.
आपका Action अब समझता है कि available_options
ड्रैगन, अनुवादक, और कंपास है. साथ ही, यह कुछ संबंधित समानार्थी शब्दों की पहचान भी कर सकता है.
स्लॉट भरने की सुविधा कॉन्फ़िगर करें
इसके बाद, आपको Fortune
सीन में, स्लॉट भरने की सुविधा कॉन्फ़िगर करनी होगी. स्लॉट भरने वाला लॉजिक कॉन्फ़िगर करने के लिए, यह तरीका अपनाएं:
custom/scenes/Fortune.yaml
को अपने टेक्स्ट एडिटर में खोलें.Fortune.yaml
फ़ाइल में,slots
का यह डेटा जोड़ें:
Fortune.yaml
slots: - commitBehavior: writeSessionParam: chosenOptions name: chosenOptions promptSettings: initialPrompt: staticPrompt: candidates: - promptResponse: firstSimple: 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 required: true type: name: available_options
- फ़ाइल सेव करें.
अब आपने स्लॉट में available_options
टाइप जोड़ दिया है. इससे आपके Action को पता चलता है कि आगे बढ़ने से पहले, आपको उपयोगकर्ता से कौनसी जानकारी इकट्ठा करनी है (उनकी मदद करना). आपने स्लॉट में से एक प्रॉम्प्ट को भी कॉन्फ़िगर किया है. जब उपयोगकर्ता सीन के स्लॉट में स्टेज भरता है, तब उसे प्रॉम्प्ट की सूची में जोड़ दिया जाता है.
स्लॉट को chosenOptions
नाम देने पर, writeSessionsParam
फ़ील्ड को उसी नाम ($session.params.chosenOptions
) से अपडेट कर दिया जाता है. इस पैरामीटर को, प्रॉम्प्ट में और क्लाइंट लाइब्रेरी से, वाहन बेचने के तरीके में उस नाम से ऐक्सेस किया जा सकता है.
शर्त जोड़ें
अब आपने एक ऐसा स्लॉट जोड़ लिया है जिसके लिए उपयोगकर्ता की पसंद की सहायता की ज़रूरत है, तो आप एक शर्त जोड़कर यह जांच सकते हैं कि उपयोगकर्ता से बातचीत जारी रखने से पहले, स्लॉट डेटा मिल गया है या नहीं.
इस सेक्शन में, scene.slots.status == "FINAL"
शर्त जोड़ी जाती है, जो यह जांचती है कि स्लॉट भरने की प्रक्रिया पूरी हो गई है या नहीं. सभी स्लॉट भर जाने के बाद, यह शर्त प्रॉम्प्ट की सूची में प्रॉम्प्ट (You picked $session.params.chosenOptions.
) जोड़ देती है.
scene.slots.status == "FINAL"
की शर्त को कॉन्फ़िगर करने के लिए, यह तरीका अपनाएं:
custom/scenes/Fortune.yaml
को अपने टेक्स्ट एडिटर में खोलें.Fortune.yaml
फ़ाइल के सबसे ऊपरconditionalEvents
डेटा जोड़ें:
Fortune.yaml
conditionalEvents: - condition: scene.slots.status == "FINAL" handler: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: You picked $session.params.chosenOptions.
- फ़ाइल सेव करें.
सिम्युलेटर में अपनी कार्रवाई की जांच करें
इसी समय आपने तय किया है कि स्लॉट भरने के लिए उपयोगकर्ता को कौनसे विकल्प चुनने चाहिए. उपयोगकर्ता से यह जानकारी मिलने के बाद, आपकी सेट की गई कार्रवाई में उपयोगकर्ता के चुने गए विकल्प के बारे में जानकारी देनी चाहिए.
अपनी सेट की गई कार्रवाई की जांच करने के लिए, यह तरीका अपनाएं:
- टर्मिनल में, नीचे दिया गया निर्देश चलाएं:
gactions deploy preview
आपको ऐसा आउटपुट मिलेगा जो कुछ इस तरह दिखेगा:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- दिए गए यूआरएल को कॉपी करें और उसे किसी ब्राउज़र में चिपकाएं.
- इनपुट फ़ील्ड में
Talk to my test app
पर क्लिक करें या टाइप करें और Enter दबाएं. - इनपुट फ़ील्ड में
Yes
टाइप करें और Enter दबाएं. इसके अलावा, हां के सुझाव वाले चिप पर भी क्लिक किया जा सकता है.
- क्लिक करें, टाइप करें या
dragon
बोलें. आपको यह मैसेज मिलेगा: "आपने ड्रैगन को चुना है."
अगले सेक्शन में, हर उस मदद के लिए प्रॉम्प्ट को अपनी पसंद के मुताबिक बनाया जा सकता है जिसे उपयोगकर्ता चुन सकता है.
शर्तों का इस्तेमाल करके, प्रॉम्प्ट को पसंद के मुताबिक बनाना
इस सेक्शन में, हर उस विकल्प के लिए शर्तें जोड़ी जाती हैं जिसे उपयोगकर्ता चुन सकता है और हर शर्त के लिए एक कस्टम प्रॉम्प्ट जोड़ सकता है.
dragon
के भाग्य को पसंद के मुताबिक बनाएं
स्थिति को अपडेट करने और उपयोगकर्ता के "ड्रैगन" चुनने के प्रॉम्प्ट को पसंद के मुताबिक बनाने के लिए, यह तरीका अपनाएं:
custom/scenes/Fortune.yaml
को अपने टेक्स्ट एडिटर में खोलें.Fortune.yaml
फ़ाइल में,conditionalEvents
के डेटा को इस स्निपेट से बदलें:
Fortune.yaml
conditionalEvents: - condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon" handler: staticPrompt: candidates: - promptResponse: firstSimple: 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
और compass
के भाग्य को पसंद के मुताबिक बनाएं
जब कोई उपयोगकर्ता "Translator" या "compass" बोलता है, तब उसके लिए शर्तें जोड़ने और प्रॉम्प्ट को पसंद के मुताबिक बनाने के लिए, यह तरीका अपनाएं:
custom/scenes/Fortune.yaml
फ़ाइल में,dragon
शर्त के तहत अन्य दो शर्तें जोड़ें:
Fortune.yaml
- condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "translator" handler: staticPrompt: candidates: - promptResponse: firstSimple: 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 other journeys across the earth. After its work is done, it retires honorably to a premier location in the Gryffinberg History Museum. - condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "compass" handler: staticPrompt: candidates: - promptResponse: firstSimple: 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.
- फ़ाइल सेव करें.
सिम्युलेटर में अपनी कार्रवाई की जांच करें
इस समय, आपकी सेट की गई कार्रवाई में उपयोगकर्ता के चुने गए विकल्प के आधार पर, उनकी पसंद के मुताबिक भाग्य दिया जाना चाहिए.
अपनी सेट की गई कार्रवाई की जांच करने के लिए, यह तरीका अपनाएं:
- टर्मिनल में, नीचे दिया गया निर्देश चलाएं:
gactions deploy preview
आपको ऐसा आउटपुट मिलेगा जो कुछ इस तरह दिखेगा:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- दिए गए यूआरएल को कॉपी करें और उसे किसी ब्राउज़र में चिपकाएं.
- इनपुट फ़ील्ड में
Talk to my test app
टाइप करें और Enter दबाएं. - इनपुट फ़ील्ड में हां टाइप करें और Enter दबाएं. इसके अलावा, हां के सुझाव वाले चिप पर क्लिक करें.
- क्लिक करें, टाइप करें या
Translator
बोलें.
आपको "अनुवादक" के लिए सही भाग्य मिल जाना चाहिए का विकल्प शामिल है.
3. गेम लूप जोड़ें
इस सेक्शन में, अपनी कार्रवाई को कॉन्फ़िगर किया जाता है, ताकि उपयोगकर्ता कोई दूसरा विकल्प चुन सके. साथ ही, किसी विकल्प को चुनने के बाद वह अपना भविष्य बदल सके. यह बदलाव, गेम के खत्म होने पर दिखने वाले "क्या आपको फिर से खेलना है?" मैसेज जैसा होता है. यह लूप बनाने के लिए, पहले बनाए गए yes
और no
इंटेंट का फिर से इस्तेमाल करें. साथ ही, उन्हें Again
नाम वाले नए सीन में जोड़ें.
Again
सीन बनाएं
इस सेक्शन में, Again
का नया सीन बनाया जाता है और लोगों से यह पूछा जाता है कि क्या वे कोई दूसरा विकल्प चुनना चाहते हैं.
Again
सीन बनाने और कॉन्फ़िगर करने के लिए, यह तरीका अपनाएं:
scenes
डायरेक्ट्री में,Again.yaml
नाम की नई फ़ाइल बनाएं:
touch custom/scenes/Again.yaml
custom/scenes/Again.yaml
को अपने टेक्स्ट एडिटर में खोलें.onEnter
का यह डेटाAgain.yaml
में जोड़ें:
Again.yaml
onEnter: staticPrompt: candidates: - promptResponse: firstSimple: 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
सीन पर ट्रांज़िशन जोड़ने के लिए, यह तरीका अपनाएं:
custom/scenes/Fortune.yaml
को अपने टेक्स्ट एडिटर में खोलें.- हर शर्त में
transitionToScene: Again
जोड़ें, जैसा कि नीचे दिए गए स्निपेट में दिखाया गया है:
Fortune.yaml
conditionalEvents: - condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon" handler: staticPrompt: candidates: - promptResponse: firstSimple: 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. transitionToScene: Again - condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "translator" handler: staticPrompt: candidates: - promptResponse: firstSimple: 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 other journeys across the earth. After its work is done, it retires honorably to a premier location in the Gryffinberg History Museum. transitionToScene: Again - condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "compass" handler: staticPrompt: candidates: - promptResponse: firstSimple: 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. transitionToScene: Again
- फ़ाइल सेव करें.
सिम्युलेटर में अपनी कार्रवाई की जांच करें
इस समय, आपकी सेट की गई कार्रवाई से लोगों को यह प्रॉम्प्ट मिलेगा कि उन्हें किस्मत मिल जाएगी: "मुझे यही मैसेज मिला है. क्या आपको कोई दूसरा विकल्प चुनकर, भविष्य के बारे में जानना है?"
अपनी सेट की गई कार्रवाई की जांच करने के लिए, यह तरीका अपनाएं:
- टर्मिनल में, नीचे दिया गया निर्देश चलाएं:
gactions deploy preview
आपको ऐसा आउटपुट मिलेगा जो कुछ इस तरह दिखेगा:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- दिए गए यूआरएल को कॉपी करें और उसे किसी ब्राउज़र में चिपकाएं.
- इनपुट फ़ील्ड में
Talk to my test app
टाइप करें और Enter दबाएं. - इनपुट फ़ील्ड में
Yes
टाइप करें और Enter दबाएं. इसके अलावा, हां के सुझाव वाले चिप पर क्लिक करें. - क्लिक करें, टाइप करें या
dragon
बोलें.
आपको ड्रैगन विकल्प के लिए भाग्य और Again
प्रॉम्प्ट मिलेगा.
इंटेंट जोड़ें और Again
सीन पर स्विच करें
इस सेक्शन में, Again
सीन में yes
और no
इंटेंट जोड़े जाते हैं, ताकि आपकी सेट की गई कार्रवाई यह समझ सके कि उपयोगकर्ता को कोई नया विकल्प चुनना है या नहीं. yes
और no
इंटेंट के लिए, सही ट्रांज़िशन भी जोड़े जा सकते हैं. yes
इंटेंट, Fortune
सीन पर ट्रांज़िशन करता है, जबकि no
इंटेंट, सिस्टम सीन End conversation
पर ट्रांज़िशन करता है.
Again
सीन में इंटेंट और ट्रांज़िशन जोड़ने के लिए, यह तरीका अपनाएं:
custom/scenes/Again.yaml
को अपने टेक्स्ट एडिटर में खोलें.Again.yaml
फ़ाइल में सबसे ऊपर,OnEnter
के ऊपर वालाintentEvents
डेटा जोड़ें:
Again.yaml
intentEvents: - intent: "yes" transitionToScene: Fortune - handler: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: It pleases me that you are satisfied with your choice. Best of luck on your quest. Farewell. intent: "no" transitionToScene: actions.scene.END_CONVERSATION
- फ़ाइल सेव करें.
सिम्युलेटर में अपनी कार्रवाई की जांच करें
आपकी सेट की गई कार्रवाई को अब समझ आ जाना चाहिए कि क्या उपयोगकर्ता कोई नया विकल्प चुनना चाहता है या बातचीत को खत्म करना चाहता है.
yes
इंटेंट की जांच करने के लिए, यह तरीका अपनाएं:
- टर्मिनल में, नीचे दिया गया निर्देश चलाएं:
gactions deploy preview
आपको ऐसा आउटपुट मिलेगा जो कुछ इस तरह दिखेगा:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- दिए गए यूआरएल को कॉपी करें और उसे किसी ब्राउज़र में चिपकाएं.
- इनपुट फ़ील्ड में
Talk to my test app
टाइप करें और Enter दबाएं. - इनपुट फ़ील्ड में
Yes
टाइप करें और Enter दबाएं. इसके अलावा, हां के सुझाव वाले चिप पर क्लिक करें. - किसी एक विकल्प पर क्लिक करें, टाइप करें या बोलें.
- इनपुट फ़ील्ड में
Yes
लिखें और Enter दबाएं.
आपको यह प्रॉम्प्ट मिलेगा, "अपनी खोज में मदद पाने के लिए, ड्रैगन, अनुवादक या कंपास को लेकर क्या चुना जा सकता है?"
no
इंटेंट की जांच करने के लिए, यह तरीका अपनाएं:
- किसी एक विकल्प पर क्लिक करें, टाइप करें या बोलें.
- इनपुट फ़ील्ड में
No
टाइप करें और Enter दबाएं.
आपको End conversation
प्रॉम्प्ट मिलेगा: "मुझे खुशी है कि आप अपनी पसंद से संतुष्ट हैं. आपकी खोज के लिए शुभकामनाएं. विदाई."
4. सपोर्टिव पाथ जोड़ें
अब आपने एक मुख्य पाथ बना लिया है जिसका इस्तेमाल ज़्यादातर लोग आपकी सेट की गई कार्रवाई में करते हैं. हालांकि, उपयोगकर्ता Fortune
सीन से इस तरह के निर्देश का जवाब दे सकता है, "अपनी खोज में मदद पाने के लिए, ड्रैगन, अनुवादक या कंपास को कौनसी सुविधा दी जाए?",
इस सेक्शन में, अपने ऐक्शन को इस तरह से कॉन्फ़िगर किया जाता है कि जब कोई उपयोगकर्ता "जादुई", "मनी", "घोड़ा" या "फ़ोन" बोलता है, तो उसे समझा जा सके. साथ ही, उपयोगकर्ता को इन तीन विकल्पों में से किसी एक को चुनने के लिए दोबारा सहमति दी जा सके. इस लॉजिक को कॉन्फ़िगर करने के लिए, आपको एक ऐसा नया type
बनाना होगा जिसमें ये अन्य विकल्प शामिल हों. साथ ही, एक नया इंटेंट other_option
भी बनाना होगा, जो उपयोगकर्ता के इन विकल्पों में से कोई एक बोलने पर, उससे मेल खाए. आपको इंटेंट पैरामीटर की पहचान करने और उन्हें एक्सट्रैक्ट करने के लिए, other_option
इंटेंट में ट्रेनिंग वाक्यांशों की एनोटेशन भी देनी होगी.
जब Assistant के नैचुरल लैंग्वेज प्रोसेसिंग इंजन को उपयोगकर्ता के इनपुट में किसी पैरामीटर के मैच का पता चलता है, तब वह वैल्यू को टाइप किए गए पैरामीटर के तौर पर एक्सट्रैक्ट करता है, ताकि आप सीन में इसके साथ लॉजिक लागू कर सकें. इस कोडलैब में, Action को इस तरह कॉन्फ़िगर किया जाता है कि वह उपयोगकर्ता की चुनी हुई मदद एक्सट्रैक्ट कर सके और किसी प्रॉम्प्ट में उसका रेफ़रंस दे.
unavailable_options
टाइप बनाएं
अब ऐसा unavailable_options
टाइप बनाया जा सकता है जिसमें कई तरह के विकल्प शामिल हैं. इससे आपकी सेट की गई कार्रवाई, उपयोगकर्ता के इनपुट में उस डेटा की पहचान कर सकती है.
unavailable_options
टाइप बनाने के लिए, यह तरीका अपनाएं:
types
डायरेक्ट्री में,unavailable_options.yaml
नाम की नई फ़ाइल बनाएं:
touch custom/types/unavailable_options.yaml
custom/types/unavailable_options.yaml
को अपने टेक्स्ट एडिटर में खोलें.unavailable_options.yaml
फ़ाइल में,synonyms
का यह डेटा जोड़ें:
unavailable_options.yaml
synonym: entities: money: synonyms: - money - cash - gold horse: synonyms: - horse - stallion - steed magic: synonyms: - magic - enchanted - spells phone: synonyms: - phone - cell - apps matchType: EXACT_MATCH
- फ़ाइल सेव करें.
other_option
इंटेंट बनाएं
इसके बाद, other_option
नाम का एक इंटेंट बनाएं और ट्रेनिंग के लिए ऐसे वाक्यांश जोड़ें जिनमें unavailable_options
टाइप में मौजूद विकल्प शामिल हों. इस इंटेंट का मैच तब किया जाता है, जब उपयोगकर्ता unavailable_options
टाइप में शामिल कोई विकल्प चुनता है.
other_option
इंटेंट बनाने और कॉन्फ़िगर करने के लिए, यह तरीका अपनाएं:
intents
डायरेक्ट्री में,other_option.yaml
नाम की नई फ़ाइल बनाएं:
touch custom/intents/other_option.yaml
custom/intents/other_option.yaml
को अपने टेक्स्ट एडिटर में खोलें.other_option.yaml
फ़ाइल में,parameters
का यह डेटा औरtrainingPhrases
डेटा जोड़ें:
other_option.yaml
parameters: - name: chosenUnavailableOption type: name: unavailable_options trainingPhrases: - I want to use ($chosenUnavailableOption 'spells' auto=true) - I really really want to use a ($chosenUnavailableOption 'phone' auto=true) - ($chosenUnavailableOption 'magic' auto=true)! - ($chosenUnavailableOption 'cash' auto=true) - I want to ride a ($chosenUnavailableOption 'horse' auto=true)
यहां आपको ट्रेनिंग वाक्यांशों के बारे में मैन्युअल तौर पर, पिछले सेक्शन में बताए गए विकल्पों के साथ एनोटेट किया गया है. इंटेंट पैरामीटर chosenUnavailableOption
की मदद से, विकल्प का नाम एक्सट्रैक्ट किया जा सकता है और प्रॉम्प्ट में उस विकल्प का इस्तेमाल किया जा सकता है. इस विकल्प को इस सेक्शन में इस्तेमाल किया जाएगा.
- फ़ाइल सेव करें.
Fortune
सीन में other_option
इंटेंट जोड़ें
अब आपके पास एक इंटेंट है, other_option
, जो किसी ऐसे विकल्प को तय करने वाले उपयोगकर्ता को प्रबंधित कर सकता है जो मूल विकल्पों में से एक नहीं है. इस सेक्शन में, Fortune
सीन में other_option
इंटेंट जोड़ा जाता है. उपयोगकर्ता के इनपुट के आधार पर प्रॉम्प्ट को पसंद के मुताबिक बनाने के लिए, इंटेंट पैरामीटर का इस्तेमाल किया जाता है.
Fortune
सीन में other_option
इंटेंट जोड़ने के लिए, यह तरीका अपनाएं:
custom/scenes/Fortune.yaml
को अपने टेक्स्ट एडिटर में खोलें.conditionalEvents
डेटा औरslots
डेटा के बीच, यहintentEvents
डेटा जोड़ें:
Fortune.yaml
intentEvents: - handler: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: I have seen the future and a $intent.params.chosenUnavailableOption.original will not aid you on your journey. intent: other_option
- फ़ाइल सेव करें.
$intent.params.chosenUnavailableOption
एक्सप्रेशन, इंटेंट पैरामीटर ऑब्जेक्ट के बारे में बताता है और $intent.params.chosenUnavailableOption.original
उस ऑब्जेक्ट की वैल्यू को दिखाता है. original
प्रॉपर्टी, उपयोगकर्ता के बताए गए रॉ इनपुट के बारे में बताती है.
जब कोई उपयोगकर्ता Fortune
सीन के दौरान, unavailable_options
टाइप में दिए गए किसी विकल्प को बोलता है, तो other_option
के इंटेंट को मैच कर दिया जाता है और प्रॉम्प्ट की सूची में एक प्रॉम्प्ट जोड़ा जाता है. कोई ट्रांज़िशन तय नहीं किया गया है. इसलिए, सीन को चलाने का लूप, शर्तों के स्टेज का फिर से आकलन करके जारी रहता है. इसके बाद, chosenOptions
स्लॉट प्रॉम्प्ट की सूची में प्रॉम्प्ट जोड़ देता है और प्रॉम्प्ट की सूची उपयोगकर्ता को भेज दी जाती है.
सिम्युलेटर में अपनी कार्रवाई की जांच करें
जब कोई उपयोगकर्ता, unavailable_options
टाइप में दिए गए विकल्पों में से किसी एक को चुनता है, तो आपकी सेट की गई कार्रवाई से यह तय होता है कि उसे कौनसा विकल्प चुनने में मदद मिलेगी. इसके बाद, आपकी सेट की गई कार्रवाई में उपयोगकर्ता को फिर से मूल विकल्प चुनने के लिए कहा जाना चाहिए. जैसे, ड्रैगन, अनुवादक या कंपास.
सिम्युलेटर में अपनी सेट की गई कार्रवाई की जांच करने के लिए, यह तरीका अपनाएं:
- टर्मिनल में, नीचे दिया गया निर्देश चलाएं:
gactions deploy preview
आपको ऐसा आउटपुट मिलेगा जो कुछ इस तरह दिखेगा:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- दिए गए यूआरएल को कॉपी करें और उसे किसी ब्राउज़र में चिपकाएं.
- इनपुट फ़ील्ड में
Talk to my test app
टाइप करें और Enter दबाएं. - इनपुट फ़ील्ड में
Yes
टाइप करें और Enter दबाएं. इसके अलावा, हां के सुझाव वाले चिप पर क्लिक करें. - इनपुट फ़ील्ड में
magic
टाइप करें और Enter दबाएं.
ऐसा हो सकता है कि जब कोई व्यक्ति "a" की वजह से "मैजिक" चुनता है, तो प्रॉम्प्ट की आवाज़ सही नहीं होती लेख के पहले रखा गया था. नीचे दिए गए सेक्शन में इस समस्या को हल किया जाता है.
unavailable_options
हैंडलर जोड़ें
"a" लिखने के लिए unavailable_options
टाइप में दिए गए सही विकल्पों से पहले, आपके पास फ़ुलफ़िलमेंट लॉजिक में इवेंट हैंडलर को कॉन्फ़िगर करने का विकल्प होता है. इससे यह पता चलता है कि उपयोगकर्ता के चुने गए विकल्प के लिए, "a" की ज़रूरत है या नहीं से पहले. सबसे पहले, आपको Fortune
सीन से हैंडलर को कॉल करने के लिए, Action को कॉन्फ़िगर करना होगा.
Fortune
सीन में unavailable_options
हैंडलर जोड़ने के लिए, यह तरीका अपनाएं:
custom/scenes/Fortune.yaml
को अपने टेक्स्ट एडिटर में खोलें.Fortune.yaml
फ़ाइल कोintentEvents
के इस डेटा के साथ अपडेट करें:
Fortune.yaml
intentEvents: - handler: webhookHandler: unavailable_options intent: other_option
- फ़ाइल सेव करें.
वाहन बेचने के तरीके को अपडेट और डिप्लॉय करना
आपने ऐक्शन को unavailable_options
इवेंट हैंडलर को कॉल करने के लिए कॉन्फ़िगर कर लिया है. इसलिए, अब अपने फ़ुलफ़िलमेंट में हैंडलर को अपडेट करके डिप्लॉय किया जा सकता है.
ऑर्डर पूरा करने की जानकारी अपडेट करने के लिए, यह तरीका अपनाएं:
webhooks/ActionsOnGoogleFulfillment/index.js
को अपने टेक्स्ट एडिटर में खोलें.greeting
हैंडलर के तहतindex.js
में यह कोड जोड़ें:
index.js
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({debug:true});
में यह कोड जोड़ें:
index.js
const optionsNeedA = new Set();
optionsNeedA.add('horse').add('phone');
- फ़ाइल सेव करें.
कोड को समझें
unavailable_options
हैंडलर ये काम करता है:
- इससे
conv
ऑब्जेक्ट सेoption
का डेटा हासिल होता है औरoption
प्रॉपर्टी कोoriginal
प्रॉपर्टी असाइन किया जाता है. यह उपयोगकर्ता का रॉ इनपुट होता है resolved
प्रॉपर्टी कोoptionKey
असाइन करता है, जोunavailable_options
टाइप के लिए कुंजी है- यह जांचता है कि क्या
optionKey
उन विकल्पों में से एक है, जिनके लिए "a" की ज़रूरत है; अगर ऐसा है, तो मैसेज को "a" के साथ बनाता है conv.add(message)
के ज़रिए मैसेज जोड़ता है
हैंडलर अपडेट करें
कार्रवाई को unavailable_options
का इस्तेमाल करने की अनुमति देने के लिए, webhooks/ActionsOnGoogleFulfillment.yaml
में unavailable_options
हैंडलर जोड़ें.
unavailable_options
हैंडलर नाम कोActionsOnGoogleFulfillment.yaml
में जोड़ें:
ActionsOnGoogleFulfillment.yaml
handlers: - name: greeting - name: unavailable_options inlineCloudFunction: executeFunction: ActionsOnGoogleFulfillment
- फ़ाइल सेव करें.
सिम्युलेटर में अपनी कार्रवाई की जांच करें
आपकी सेट की गई कार्रवाई में अब इस हिसाब से प्रॉम्प्ट में बदलाव किया जाना चाहिए कि unavailable_options
टाइप से उपयोगकर्ता की पसंद के मुताबिक, "a" की ज़रूरत है या नहीं लेख से पहले.
अपनी सेट की गई कार्रवाई की जांच करने के लिए, यह तरीका अपनाएं:
- टर्मिनल में, नीचे दिया गया निर्देश चलाएं:
gactions deploy preview
आपको ऐसा आउटपुट मिलेगा जो कुछ इस तरह दिखेगा:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- दिए गए यूआरएल को कॉपी करें और उसे किसी ब्राउज़र में चिपकाएं.
- इनपुट फ़ील्ड में
Talk to my test app
पर क्लिक करें या टाइप करें और Enter दबाएं. - इनपुट फ़ील्ड में
Yes
टाइप करें और Enter दबाएं. इसके अलावा, हां के सुझाव वाले चिप पर क्लिक करें. - इनपुट फ़ील्ड में
magic
टाइप करें और Enter दबाएं. इसके बाद, इनपुट फ़ील्ड मेंhorse
टाइप करें और Enter दबाएं.
आपकी सेट की गई कार्रवाई में "a" जोड़ना चाहिए "घोड़ा" से पहले लेख "a" के बिना प्रॉम्प्ट बनाते समय "जादुई" के लिए लेख का विकल्प चुनें.
5. Actions कंसोल में कार्रवाई को विज़ुअलाइज़ करें
Actions SDK टूल में, वेब पर आधारित एक IDE के साथ इंटरऑपरेबिलिटी (दूसरे सिस्टम के साथ काम करने की सुविधा) है. इस IDE को Action Builder कहते हैं. यह कार्रवाई कंसोल में इंटिग्रेट किया गया होता है. gactions push
निर्देश का इस्तेमाल करके, कंसोल में अपने लोकल फ़ाइल सिस्टम को Action के ड्राफ़्ट में भेजा जा सकता है. ऐक्शन कंसोल, आपकी सेट की गई कार्रवाई के कॉन्फ़िगरेशन को विज़ुअल तौर पर दिखाता है. आपकी सेट की गई कार्रवाई को विज़ुअल तौर पर मैप किया गया देखना, डेवलपमेंट के दौरान मददगार हो सकता है. इससे, जांच के लिए इस्तेमाल किए जाने वाले आपके Action के वर्शन पर कोई असर नहीं पड़ता.
अपने Actions प्रोजेक्ट को पुश करने और उसे Actions कंसोल में देखने के लिए, यह तरीका अपनाएं:
- टर्मिनल में, अपने प्रोजेक्ट को Actions कंसोल में पुश करने के लिए, नीचे दिया गया निर्देश चलाएं:
gactions push
आपको ऐसा आउटपुट मिलेगा जो कुछ इस तरह दिखेगा:
✔ Done. Files were pushed to Actions Console, and you can now view your project with this URL: https://console.actions.google.com/project/{project-id}/overview. If you want to test your changes, run "gactions deploy preview", or navigate to the Test section in the Console.
- दिए गए यूआरएल को कॉपी करें और उसे किसी ब्राउज़र में चिपकाएं.
- कार्रवाइयां कंसोल में, सबसे ऊपर मौजूद नेविगेशन बार में, डेवलप करें पर क्लिक करें.
- सीन के बगल में मौजूद ड्रॉप-डाउन ऐरो पर क्लिक करें और शुरू करें पर क्लिक करें. आपको अपनी Action के
Start
सीन को विज़ुअल तौर पर देखना चाहिए, जैसा कि इस स्क्रीनशॉट में दिखाया गया है:
अपने प्रोजेक्ट में स्टोरेज खाली करें [सुझाया गया]
संभावित शुल्क देने से बचने के लिए, हमारा सुझाव है कि आप उन प्रोजेक्ट को हटा दें जिनका इस्तेमाल आपको नहीं करना है. इस कोडलैब में बनाए गए प्रोजेक्ट मिटाने के लिए, यह तरीका अपनाएं:
- क्लाउड प्रोजेक्ट और संसाधनों को मिटाने के लिए, प्रोजेक्ट बंद करना (मिटाना) सेक्शन में दिए गए चरणों को पूरा करें.
- ज़रूरी नहीं: Actions कंसोल से अपने प्रोजेक्ट को तुरंत हटाने के लिए, प्रोजेक्ट मिटाएं सेक्शन में दिए गए चरणों को पूरा करें. अगर ऐसा नहीं किया जाता है, तो आपका प्रोजेक्ट करीब 30 दिनों के बाद अपने-आप हट जाएगा.
6. बधाई हो!
अब आपको Actions SDK टूल की मदद से, Google Assistant के लिए कार्रवाइयां बनाने के लिए ज़रूरी इंटरमीडिएट स्किल के बारे में पता है.
आपने क्या कवर किया
- Node.js फ़ुलफ़िलमेंट लाइब्रेरी का इस्तेमाल करके बातचीत वाली कार्रवाइयों को डेवलप करने का तरीका
- उपयोगकर्ता से डेटा इकट्ठा करने के लिए स्लॉट इस्तेमाल करने का तरीका
- सीन में लॉजिक जोड़ने के लिए, शर्तों का इस्तेमाल कैसे करें
- गेम लूप जोड़ने का तरीका
- सपोर्टिव पाथ जोड़ने का तरीका
ज़्यादा जानें
आप Google Assistant के लिए कार्रवाइयां बनाने के बारे में जानने के लिए इन संसाधनों को देख सकते हैं:
- Google Assistant के लिए कार्रवाइयां डेवलप करने के दस्तावेज़
- सैंपल कोड और लाइब्रेरी के लिए, Google GitHub पेज पर कार्रवाइयां
- Google Assistant के साथ काम करने वाले डेवलपर के लिए आधिकारिक Reddit समुदाय
- बातचीत के डिज़ाइन से जुड़े दिशा-निर्देश: इसमें बातचीत की कार्रवाइयों से जुड़े सबसे सही तरीकों और दिशा-निर्देशों के बारे में बताया जाता है
हमारी नई सूचनाओं के साथ बने रहने के लिए, Twitter @ActionsOnGoogle पर हमें फ़ॉलो करें. साथ ही, आपने जो बनाया है उसे शेयर करने के लिए #AoGDevs पर ट्वीट करें!
राय जानने के लिए सर्वे
आगे बढ़ने से पहले, कृपया अपने अनुभव के बारे में बताने के लिए एक छोटा-सा सर्वे भरें.