Actions SDK टूल का इस्तेमाल करके, Google Assistant के लिए कार्रवाइयां बनाना (लेवल 2)

1. खास जानकारी

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

इस कोडलैब में, Google Assistant की मदद से डेवलप करने के लिए बीच के लेवल के कॉन्सेप्ट शामिल होते हैं. साथ ही, यह Actions SDK टूल (लेवल 1) का इस्तेमाल करके, Google Assistant के लिए कार्रवाइयां बनाएं कोडलैब में बनाई गई कार्रवाई को बेहतर बनाता है. हमारा सुझाव है कि कोडलैब का लेवल 1 पूरा करने के बाद ही इसे शुरू करें.

इस कोडलैब में तैयार किया गया ऐक्शन, लोगों को उनकी मदद के आधार पर पौराणिक देश ग्रिफ़िनबर्ग में उनके मिशन के बारे में बताता है.

आपको क्या बनाना होगा

इस कोडलैब में, इन फ़ंक्शन की मदद से बेहतर तरीके से 'बातचीत की सुविधा वाली कार्रवाई' बनाई जा सकती है:

  • इसके तहत, उपयोगकर्ता का डेटा इकट्ठा किया जाता है और वैल्यू के हिसाब से, बातचीत वाले प्रॉम्प्ट में बदलाव किया जाता है.
  • बातचीत को आगे बढ़ाने के लिए, फ़ॉलो-अप सवालों के जवाब देता है.
  • यह गेम लूप बनाता है. इससे उपयोगकर्ता, गेम लूप में चलाने के बाद ऐक्शन से फिर से इंटरैक्ट कर सकता है.

घर बनाने से पहले, Google Assistant की सुविधा वाले डिवाइस पर "Ok Google, भाग्य और भाग्य से बात करो" बोलकर, लाइव ऐक्शन का इस्तेमाल किया जा सकता है. लौटने वाले उपयोगकर्ता के लिए इस कार्रवाई का डिफ़ॉल्ट पाथ ऐसा दिखेगा:

dd6f5c61296b8b50.png

eba043f546aa8c51.png

आपको क्या सीखने को मिलेगा

  • उपयोगकर्ता से डेटा इकट्ठा करने के लिए, स्लॉट इस्तेमाल करने का तरीका
  • किसी सीन में लॉजिक जोड़ने के लिए, शर्तों का इस्तेमाल करने का तरीका
  • गेम लूप जोड़ने का तरीका
  • सपोर्टिव पाथ जोड़ने का तरीका

आपको किन चीज़ों की ज़रूरत होगी

इस कोडलैब के लिए ज़रूरी शर्तों में ये चीज़ें शामिल हैं:

  • आपकी पसंद का एक 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. अपने टेक्स्ट एडिटर में लेवल 1 कोडलैब से अपना ऐक्शन प्रोजेक्ट खोलें.
  2. custom/scenes/Start.yaml फ़ाइल खोलें.
  3. 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
  1. फ़ाइल सेव करें.

Fortune नाम का एक नया सीन बनाने के लिए, यह तरीका अपनाएं:

  1. टर्मिनल में, लेवल 1 के कोडलैब के ऐक्शन प्रोजेक्ट पर जाएं.
  2. scenes डायरेक्ट्री में, Fortune.yaml नाम की नई फ़ाइल बनाएं:
touch custom/scenes/Fortune.yaml

अगले सेक्शन में जाकर, इस फ़ाइल में बदलाव किया जा सकता है.

Fortune सीन के लिए बातचीत वाला लॉजिक तय करें

इस कोडलैब में, अपने Fortune सीन को कॉन्फ़िगर किया जा सकता है. साथ ही, उपयोगकर्ता से यह पूछा जा सकता है कि "अपनी मिशन, ड्रैगन, अनुवादक या कंपास पर मदद पाने के लिए आपने क्या चुना है?" आगे बढ़ने से पहले, उपयोगकर्ता से ज़रूरी जानकारी इकट्ठा करने के लिए, स्लॉट भरना सुविधा का इस्तेमाल किया जा सकता है.

आपका Action तीन चीज़ों के लिए किस्मत उपलब्ध कराता है: ड्रैगन, अनुवादक, और कंपास. अपनी कार्रवाई को इस तरह कॉन्फ़िगर करने के लिए कि उपयोगकर्ता के इनपुट में इन तीन विकल्पों की पहचान की जा सके, आपको एक नया टाइप बनाना होगा.

उपयोगकर्ता से जो जानकारी चाहिए उसे तय करने के लिए, सीन के स्लॉट भरने वाले स्टेज में टाइप का इस्तेमाल किया जा सकता है. जब एनएलयू इंजन को उपयोगकर्ता के इनपुट में किसी स्लॉट मैच का पता चलता है, तो यह स्लॉट को टाइप किए गए पैरामीटर के तौर पर एक्सट्रैक्ट करता है, ताकि आप सीन में इसके साथ लॉजिक लागू कर सकें.

available_options टाइप बनाएं

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

available_options टाइप बनाने के लिए, यह तरीका अपनाएं:

  1. types नाम की नई डायरेक्ट्री बनाएं:
mkdir custom/types
  1. types डायरेक्ट्री में, available_options.yaml नाम की नई फ़ाइल बनाएं:
touch custom/types/available_options.yaml
  1. custom/types/available_options.yaml को अपने टेक्स्ट एडिटर में खोलें.

टाइप को जानकारी के की-वैल्यू पेयर के तौर पर कॉन्फ़िगर किया जाता है. इसमें key, टाइप का नाम है और value उस कुंजी के लिए समानार्थी शब्द हैं. कुंजी तय करने पर, वह अपने-आप वैल्यू के तौर पर जुड़ जाती है. Actions SDK टूल के साथ, आप कुंजियों को entities के तौर पर और वैल्यू को synonyms के तौर पर दिखाते हैं.

उपयोगकर्ता के चुने गए तीन विकल्प जोड़ने के लिए, यह तरीका अपनाएं:

  1. 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
  1. फ़ाइल सेव करें.

आपका Action अब समझता है कि available_options ड्रैगन, अनुवादक, और कंपास है. साथ ही, यह कुछ संबंधित समानार्थी शब्दों की पहचान भी कर सकता है.

स्लॉट भरने की सुविधा कॉन्फ़िगर करें

इसके बाद, आपको Fortune सीन में, स्लॉट भरने की सुविधा कॉन्फ़िगर करनी होगी. स्लॉट भरने वाला लॉजिक कॉन्फ़िगर करने के लिए, यह तरीका अपनाएं:

  1. custom/scenes/Fortune.yaml को अपने टेक्स्ट एडिटर में खोलें.
  2. 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
  1. फ़ाइल सेव करें.

अब आपने स्लॉट में available_options टाइप जोड़ दिया है. इससे आपके Action को पता चलता है कि आगे बढ़ने से पहले, आपको उपयोगकर्ता से कौनसी जानकारी इकट्ठा करनी है (उनकी मदद करना). आपने स्लॉट में से एक प्रॉम्प्ट को भी कॉन्फ़िगर किया है. जब उपयोगकर्ता सीन के स्लॉट में स्टेज भरता है, तब उसे प्रॉम्प्ट की सूची में जोड़ दिया जाता है.

स्लॉट को chosenOptions नाम देने पर, writeSessionsParam फ़ील्ड को उसी नाम ($session.params.chosenOptions) से अपडेट कर दिया जाता है. इस पैरामीटर को, प्रॉम्प्ट में और क्लाइंट लाइब्रेरी से, वाहन बेचने के तरीके में उस नाम से ऐक्सेस किया जा सकता है.

शर्त जोड़ें

अब आपने एक ऐसा स्लॉट जोड़ लिया है जिसके लिए उपयोगकर्ता की पसंद की सहायता की ज़रूरत है, तो आप एक शर्त जोड़कर यह जांच सकते हैं कि उपयोगकर्ता से बातचीत जारी रखने से पहले, स्लॉट डेटा मिल गया है या नहीं.

इस सेक्शन में, scene.slots.status == "FINAL" शर्त जोड़ी जाती है, जो यह जांचती है कि स्लॉट भरने की प्रक्रिया पूरी हो गई है या नहीं. सभी स्लॉट भर जाने के बाद, यह शर्त प्रॉम्प्ट की सूची में प्रॉम्प्ट (You picked $session.params.chosenOptions.) जोड़ देती है.

scene.slots.status == "FINAL" की शर्त को कॉन्फ़िगर करने के लिए, यह तरीका अपनाएं:

  1. custom/scenes/Fortune.yaml को अपने टेक्स्ट एडिटर में खोलें.
  2. Fortune.yaml फ़ाइल के सबसे ऊपर conditionalEvents डेटा जोड़ें:

Fortune.yaml

conditionalEvents:
- condition: scene.slots.status == "FINAL"
  handler:
    staticPrompt:
      candidates:
      - promptResponse:
          firstSimple:
            variants:
            - speech: You picked $session.params.chosenOptions.
  1. फ़ाइल सेव करें.

सिम्युलेटर में अपनी कार्रवाई की जांच करें

इसी समय आपने तय किया है कि स्लॉट भरने के लिए उपयोगकर्ता को कौनसे विकल्प चुनने चाहिए. उपयोगकर्ता से यह जानकारी मिलने के बाद, आपकी सेट की गई कार्रवाई में उपयोगकर्ता के चुने गए विकल्प के बारे में जानकारी देनी चाहिए.

अपनी सेट की गई कार्रवाई की जांच करने के लिए, यह तरीका अपनाएं:

  1. टर्मिनल में, नीचे दिया गया निर्देश चलाएं:
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
  1. दिए गए यूआरएल को कॉपी करें और उसे किसी ब्राउज़र में चिपकाएं.
  2. इनपुट फ़ील्ड में Talk to my test app पर क्लिक करें या टाइप करें और Enter दबाएं.
  3. इनपुट फ़ील्ड में Yes टाइप करें और Enter दबाएं. इसके अलावा, हां के सुझाव वाले चिप पर भी क्लिक किया जा सकता है.

a899d45c542668f6.png

  1. क्लिक करें, टाइप करें या dragon बोलें. आपको यह मैसेज मिलेगा: "आपने ड्रैगन को चुना है."

अगले सेक्शन में, हर उस मदद के लिए प्रॉम्प्ट को अपनी पसंद के मुताबिक बनाया जा सकता है जिसे उपयोगकर्ता चुन सकता है.

शर्तों का इस्तेमाल करके, प्रॉम्प्ट को पसंद के मुताबिक बनाना

इस सेक्शन में, हर उस विकल्प के लिए शर्तें जोड़ी जाती हैं जिसे उपयोगकर्ता चुन सकता है और हर शर्त के लिए एक कस्टम प्रॉम्प्ट जोड़ सकता है.

dragon के भाग्य को पसंद के मुताबिक बनाएं

स्थिति को अपडेट करने और उपयोगकर्ता के "ड्रैगन" चुनने के प्रॉम्प्ट को पसंद के मुताबिक बनाने के लिए, यह तरीका अपनाएं:

  1. custom/scenes/Fortune.yaml को अपने टेक्स्ट एडिटर में खोलें.
  2. 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.
  1. फ़ाइल सेव करें.

अब, जब कोई उपयोगकर्ता "ड्रैगन" या इससे मिलता-जुलता कुछ बोलता है, तो आपकी सेट की गई कार्रवाई के आधार पर गेम को बेहतर बनाया जाता है. इसके बाद, आपको बाकी के दो आइटम चुनने होंगे.

translator और compass के भाग्य को पसंद के मुताबिक बनाएं

जब कोई उपयोगकर्ता "Translator" या "compass" बोलता है, तब उसके लिए शर्तें जोड़ने और प्रॉम्प्ट को पसंद के मुताबिक बनाने के लिए, यह तरीका अपनाएं:

  1. 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.
  1. फ़ाइल सेव करें.

सिम्युलेटर में अपनी कार्रवाई की जांच करें

इस समय, आपकी सेट की गई कार्रवाई में उपयोगकर्ता के चुने गए विकल्प के आधार पर, उनकी पसंद के मुताबिक भाग्य दिया जाना चाहिए.

अपनी सेट की गई कार्रवाई की जांच करने के लिए, यह तरीका अपनाएं:

  1. टर्मिनल में, नीचे दिया गया निर्देश चलाएं:
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
  1. दिए गए यूआरएल को कॉपी करें और उसे किसी ब्राउज़र में चिपकाएं.
  2. इनपुट फ़ील्ड में Talk to my test app टाइप करें और Enter दबाएं.
  3. इनपुट फ़ील्ड में हां टाइप करें और Enter दबाएं. इसके अलावा, हां के सुझाव वाले चिप पर क्लिक करें.
  4. क्लिक करें, टाइप करें या Translator बोलें.

29e17f950bd0dd71.png

आपको "अनुवादक" के लिए सही भाग्य मिल जाना चाहिए का विकल्प शामिल है.

3. गेम लूप जोड़ें

इस सेक्शन में, अपनी कार्रवाई को कॉन्फ़िगर किया जाता है, ताकि उपयोगकर्ता कोई दूसरा विकल्प चुन सके. साथ ही, किसी विकल्प को चुनने के बाद वह अपना भविष्य बदल सके. यह बदलाव, गेम के खत्म होने पर दिखने वाले "क्या आपको फिर से खेलना है?" मैसेज जैसा होता है. यह लूप बनाने के लिए, पहले बनाए गए yes और no इंटेंट का फिर से इस्तेमाल करें. साथ ही, उन्हें Again नाम वाले नए सीन में जोड़ें.

Again सीन बनाएं

इस सेक्शन में, Again का नया सीन बनाया जाता है और लोगों से यह पूछा जाता है कि क्या वे कोई दूसरा विकल्प चुनना चाहते हैं.

Again सीन बनाने और कॉन्फ़िगर करने के लिए, यह तरीका अपनाएं:

  1. scenes डायरेक्ट्री में, Again.yaml नाम की नई फ़ाइल बनाएं:
touch custom/scenes/Again.yaml
  1. custom/scenes/Again.yaml को अपने टेक्स्ट एडिटर में खोलें.
  2. 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"
  1. फ़ाइल सेव करें.

Fortune से Again सीन पर ट्रांज़िशन जोड़ें

जब उपयोगकर्ता को यह इनाम मिल जाता है, तब बातचीत को Again के नए सीन पर ले जाना चाहिए.

Fortune सीन से Again सीन पर ट्रांज़िशन जोड़ने के लिए, यह तरीका अपनाएं:

  1. custom/scenes/Fortune.yaml को अपने टेक्स्ट एडिटर में खोलें.
  2. हर शर्त में 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
  1. फ़ाइल सेव करें.

सिम्युलेटर में अपनी कार्रवाई की जांच करें

इस समय, आपकी सेट की गई कार्रवाई से लोगों को यह प्रॉम्प्ट मिलेगा कि उन्हें किस्मत मिल जाएगी: "मुझे यही मैसेज मिला है. क्या आपको कोई दूसरा विकल्प चुनकर, भविष्य के बारे में जानना है?"

अपनी सेट की गई कार्रवाई की जांच करने के लिए, यह तरीका अपनाएं:

  1. टर्मिनल में, नीचे दिया गया निर्देश चलाएं:
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
  1. दिए गए यूआरएल को कॉपी करें और उसे किसी ब्राउज़र में चिपकाएं.
  2. इनपुट फ़ील्ड में Talk to my test app टाइप करें और Enter दबाएं.
  3. इनपुट फ़ील्ड में Yes टाइप करें और Enter दबाएं. इसके अलावा, हां के सुझाव वाले चिप पर क्लिक करें.
  4. क्लिक करें, टाइप करें या dragon बोलें.

b299e9fed9aedb69.png

आपको ड्रैगन विकल्प के लिए भाग्य और Again प्रॉम्प्ट मिलेगा.

इंटेंट जोड़ें और Again सीन पर स्विच करें

इस सेक्शन में, Again सीन में yes और no इंटेंट जोड़े जाते हैं, ताकि आपकी सेट की गई कार्रवाई यह समझ सके कि उपयोगकर्ता को कोई नया विकल्प चुनना है या नहीं. yes और no इंटेंट के लिए, सही ट्रांज़िशन भी जोड़े जा सकते हैं. yes इंटेंट, Fortune सीन पर ट्रांज़िशन करता है, जबकि no इंटेंट, सिस्टम सीन End conversation पर ट्रांज़िशन करता है.

Again सीन में इंटेंट और ट्रांज़िशन जोड़ने के लिए, यह तरीका अपनाएं:

  1. custom/scenes/Again.yaml को अपने टेक्स्ट एडिटर में खोलें.
  2. 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
  1. फ़ाइल सेव करें.

सिम्युलेटर में अपनी कार्रवाई की जांच करें

आपकी सेट की गई कार्रवाई को अब समझ आ जाना चाहिए कि क्या उपयोगकर्ता कोई नया विकल्प चुनना चाहता है या बातचीत को खत्म करना चाहता है.

yes इंटेंट की जांच करने के लिए, यह तरीका अपनाएं:

  1. टर्मिनल में, नीचे दिया गया निर्देश चलाएं:
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
  1. दिए गए यूआरएल को कॉपी करें और उसे किसी ब्राउज़र में चिपकाएं.
  2. इनपुट फ़ील्ड में Talk to my test app टाइप करें और Enter दबाएं.
  3. इनपुट फ़ील्ड में Yes टाइप करें और Enter दबाएं. इसके अलावा, हां के सुझाव वाले चिप पर क्लिक करें.
  4. किसी एक विकल्प पर क्लिक करें, टाइप करें या बोलें.
  5. इनपुट फ़ील्ड में Yes लिखें और Enter दबाएं.

5d0690332efe2e29.png

आपको यह प्रॉम्प्ट मिलेगा, "अपनी खोज में मदद पाने के लिए, ड्रैगन, अनुवादक या कंपास को लेकर क्या चुना जा सकता है?"

no इंटेंट की जांच करने के लिए, यह तरीका अपनाएं:

  1. किसी एक विकल्प पर क्लिक करें, टाइप करें या बोलें.
  2. इनपुट फ़ील्ड में No टाइप करें और Enter दबाएं.

आपको End conversation प्रॉम्प्ट मिलेगा: "मुझे खुशी है कि आप अपनी पसंद से संतुष्ट हैं. आपकी खोज के लिए शुभकामनाएं. विदाई."

4. सपोर्टिव पाथ जोड़ें

अब आपने एक मुख्य पाथ बना लिया है जिसका इस्तेमाल ज़्यादातर लोग आपकी सेट की गई कार्रवाई में करते हैं. हालांकि, उपयोगकर्ता Fortune सीन से इस तरह के निर्देश का जवाब दे सकता है, "अपनी खोज में मदद पाने के लिए, ड्रैगन, अनुवादक या कंपास को कौनसी सुविधा दी जाए?",

इस सेक्शन में, अपने ऐक्शन को इस तरह से कॉन्फ़िगर किया जाता है कि जब कोई उपयोगकर्ता "जादुई", "मनी", "घोड़ा" या "फ़ोन" बोलता है, तो उसे समझा जा सके. साथ ही, उपयोगकर्ता को इन तीन विकल्पों में से किसी एक को चुनने के लिए दोबारा सहमति दी जा सके. इस लॉजिक को कॉन्फ़िगर करने के लिए, आपको एक ऐसा नया type बनाना होगा जिसमें ये अन्य विकल्प शामिल हों. साथ ही, एक नया इंटेंट other_option भी बनाना होगा, जो उपयोगकर्ता के इन विकल्पों में से कोई एक बोलने पर, उससे मेल खाए. आपको इंटेंट पैरामीटर की पहचान करने और उन्हें एक्सट्रैक्ट करने के लिए, other_option इंटेंट में ट्रेनिंग वाक्यांशों की एनोटेशन भी देनी होगी.

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

unavailable_options टाइप बनाएं

अब ऐसा unavailable_options टाइप बनाया जा सकता है जिसमें कई तरह के विकल्प शामिल हैं. इससे आपकी सेट की गई कार्रवाई, उपयोगकर्ता के इनपुट में उस डेटा की पहचान कर सकती है.

unavailable_options टाइप बनाने के लिए, यह तरीका अपनाएं:

  1. types डायरेक्ट्री में, unavailable_options.yaml नाम की नई फ़ाइल बनाएं:
touch custom/types/unavailable_options.yaml
  1. custom/types/unavailable_options.yaml को अपने टेक्स्ट एडिटर में खोलें.
  2. 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
  1. फ़ाइल सेव करें.

other_option इंटेंट बनाएं

इसके बाद, other_option नाम का एक इंटेंट बनाएं और ट्रेनिंग के लिए ऐसे वाक्यांश जोड़ें जिनमें unavailable_options टाइप में मौजूद विकल्प शामिल हों. इस इंटेंट का मैच तब किया जाता है, जब उपयोगकर्ता unavailable_options टाइप में शामिल कोई विकल्प चुनता है.

other_option इंटेंट बनाने और कॉन्फ़िगर करने के लिए, यह तरीका अपनाएं:

  1. intents डायरेक्ट्री में, other_option.yaml नाम की नई फ़ाइल बनाएं:
touch custom/intents/other_option.yaml
  1. custom/intents/other_option.yaml को अपने टेक्स्ट एडिटर में खोलें.
  2. 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 की मदद से, विकल्प का नाम एक्सट्रैक्ट किया जा सकता है और प्रॉम्प्ट में उस विकल्प का इस्तेमाल किया जा सकता है. इस विकल्प को इस सेक्शन में इस्तेमाल किया जाएगा.

  1. फ़ाइल सेव करें.

Fortune सीन में other_option इंटेंट जोड़ें

अब आपके पास एक इंटेंट है, other_option, जो किसी ऐसे विकल्प को तय करने वाले उपयोगकर्ता को प्रबंधित कर सकता है जो मूल विकल्पों में से एक नहीं है. इस सेक्शन में, Fortune सीन में other_option इंटेंट जोड़ा जाता है. उपयोगकर्ता के इनपुट के आधार पर प्रॉम्प्ट को पसंद के मुताबिक बनाने के लिए, इंटेंट पैरामीटर का इस्तेमाल किया जाता है.

Fortune सीन में other_option इंटेंट जोड़ने के लिए, यह तरीका अपनाएं:

  1. custom/scenes/Fortune.yaml को अपने टेक्स्ट एडिटर में खोलें.
  2. 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
  1. फ़ाइल सेव करें.

$intent.params.chosenUnavailableOption एक्सप्रेशन, इंटेंट पैरामीटर ऑब्जेक्ट के बारे में बताता है और $intent.params.chosenUnavailableOption.original उस ऑब्जेक्ट की वैल्यू को दिखाता है. original प्रॉपर्टी, उपयोगकर्ता के बताए गए रॉ इनपुट के बारे में बताती है.

जब कोई उपयोगकर्ता Fortune सीन के दौरान, unavailable_options टाइप में दिए गए किसी विकल्प को बोलता है, तो other_option के इंटेंट को मैच कर दिया जाता है और प्रॉम्प्ट की सूची में एक प्रॉम्प्ट जोड़ा जाता है. कोई ट्रांज़िशन तय नहीं किया गया है. इसलिए, सीन को चलाने का लूप, शर्तों के स्टेज का फिर से आकलन करके जारी रहता है. इसके बाद, chosenOptions स्लॉट प्रॉम्प्ट की सूची में प्रॉम्प्ट जोड़ देता है और प्रॉम्प्ट की सूची उपयोगकर्ता को भेज दी जाती है.

सिम्युलेटर में अपनी कार्रवाई की जांच करें

जब कोई उपयोगकर्ता, unavailable_options टाइप में दिए गए विकल्पों में से किसी एक को चुनता है, तो आपकी सेट की गई कार्रवाई से यह तय होता है कि उसे कौनसा विकल्प चुनने में मदद मिलेगी. इसके बाद, आपकी सेट की गई कार्रवाई में उपयोगकर्ता को फिर से मूल विकल्प चुनने के लिए कहा जाना चाहिए. जैसे, ड्रैगन, अनुवादक या कंपास.

सिम्युलेटर में अपनी सेट की गई कार्रवाई की जांच करने के लिए, यह तरीका अपनाएं:

  1. टर्मिनल में, नीचे दिया गया निर्देश चलाएं:
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
  1. दिए गए यूआरएल को कॉपी करें और उसे किसी ब्राउज़र में चिपकाएं.
  2. इनपुट फ़ील्ड में Talk to my test app टाइप करें और Enter दबाएं.
  3. इनपुट फ़ील्ड में Yes टाइप करें और Enter दबाएं. इसके अलावा, हां के सुझाव वाले चिप पर क्लिक करें.
  4. इनपुट फ़ील्ड में magic टाइप करें और Enter दबाएं.

3a42c33eca435f32.png

ऐसा हो सकता है कि जब कोई व्यक्ति "a" की वजह से "मैजिक" चुनता है, तो प्रॉम्प्ट की आवाज़ सही नहीं होती लेख के पहले रखा गया था. नीचे दिए गए सेक्शन में इस समस्या को हल किया जाता है.

unavailable_options हैंडलर जोड़ें

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

Fortune सीन में unavailable_options हैंडलर जोड़ने के लिए, यह तरीका अपनाएं:

  1. custom/scenes/Fortune.yaml को अपने टेक्स्ट एडिटर में खोलें.
  2. Fortune.yaml फ़ाइल को intentEvents के इस डेटा के साथ अपडेट करें:

Fortune.yaml

intentEvents:
- handler:
    webhookHandler: unavailable_options
  intent: other_option
  1. फ़ाइल सेव करें.

वाहन बेचने के तरीके को अपडेट और डिप्लॉय करना

आपने ऐक्शन को unavailable_options इवेंट हैंडलर को कॉल करने के लिए कॉन्फ़िगर कर लिया है. इसलिए, अब अपने फ़ुलफ़िलमेंट में हैंडलर को अपडेट करके डिप्लॉय किया जा सकता है.

ऑर्डर पूरा करने की जानकारी अपडेट करने के लिए, यह तरीका अपनाएं:

  1. webhooks/ActionsOnGoogleFulfillment/index.js को अपने टेक्स्ट एडिटर में खोलें.
  2. 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);
});
  1. const app = conversation({debug:true}); में यह कोड जोड़ें:

index.js

const optionsNeedA = new Set();
optionsNeedA.add('horse').add('phone');
  1. फ़ाइल सेव करें.

कोड को समझें

unavailable_options हैंडलर ये काम करता है:

  • इससे conv ऑब्जेक्ट से option का डेटा हासिल होता है और option प्रॉपर्टी को original प्रॉपर्टी असाइन किया जाता है. यह उपयोगकर्ता का रॉ इनपुट होता है
  • resolved प्रॉपर्टी को optionKey असाइन करता है, जो unavailable_options टाइप के लिए कुंजी है
  • यह जांचता है कि क्या optionKey उन विकल्पों में से एक है, जिनके लिए "a" की ज़रूरत है; अगर ऐसा है, तो मैसेज को "a" के साथ बनाता है
  • conv.add(message) के ज़रिए मैसेज जोड़ता है

हैंडलर अपडेट करें

कार्रवाई को unavailable_options का इस्तेमाल करने की अनुमति देने के लिए, webhooks/ActionsOnGoogleFulfillment.yaml में unavailable_options हैंडलर जोड़ें.

  1. unavailable_options हैंडलर नाम को ActionsOnGoogleFulfillment.yaml में जोड़ें:

ActionsOnGoogleFulfillment.yaml

handlers:
- name: greeting
- name: unavailable_options
inlineCloudFunction:
  executeFunction: ActionsOnGoogleFulfillment
  1. फ़ाइल सेव करें.

सिम्युलेटर में अपनी कार्रवाई की जांच करें

आपकी सेट की गई कार्रवाई में अब इस हिसाब से प्रॉम्प्ट में बदलाव किया जाना चाहिए कि unavailable_options टाइप से उपयोगकर्ता की पसंद के मुताबिक, "a" की ज़रूरत है या नहीं लेख से पहले.

अपनी सेट की गई कार्रवाई की जांच करने के लिए, यह तरीका अपनाएं:

  1. टर्मिनल में, नीचे दिया गया निर्देश चलाएं:
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
  1. दिए गए यूआरएल को कॉपी करें और उसे किसी ब्राउज़र में चिपकाएं.
  2. इनपुट फ़ील्ड में Talk to my test app पर क्लिक करें या टाइप करें और Enter दबाएं.
  3. इनपुट फ़ील्ड में Yes टाइप करें और Enter दबाएं. इसके अलावा, हां के सुझाव वाले चिप पर क्लिक करें.
  4. इनपुट फ़ील्ड में magic टाइप करें और Enter दबाएं. इसके बाद, इनपुट फ़ील्ड में horse टाइप करें और Enter दबाएं.

54ee24c5c3c56e.png

आपकी सेट की गई कार्रवाई में "a" जोड़ना चाहिए "घोड़ा" से पहले लेख "a" के बिना प्रॉम्प्ट बनाते समय "जादुई" के लिए लेख का विकल्प चुनें.

5. Actions कंसोल में कार्रवाई को विज़ुअलाइज़ करें

Actions SDK टूल में, वेब पर आधारित एक IDE के साथ इंटरऑपरेबिलिटी (दूसरे सिस्टम के साथ काम करने की सुविधा) है. इस IDE को Action Builder कहते हैं. यह कार्रवाई कंसोल में इंटिग्रेट किया गया होता है. gactions push निर्देश का इस्तेमाल करके, कंसोल में अपने लोकल फ़ाइल सिस्टम को Action के ड्राफ़्ट में भेजा जा सकता है. ऐक्शन कंसोल, आपकी सेट की गई कार्रवाई के कॉन्फ़िगरेशन को विज़ुअल तौर पर दिखाता है. आपकी सेट की गई कार्रवाई को विज़ुअल तौर पर मैप किया गया देखना, डेवलपमेंट के दौरान मददगार हो सकता है. इससे, जांच के लिए इस्तेमाल किए जाने वाले आपके Action के वर्शन पर कोई असर नहीं पड़ता.

अपने Actions प्रोजेक्ट को पुश करने और उसे Actions कंसोल में देखने के लिए, यह तरीका अपनाएं:

  1. टर्मिनल में, अपने प्रोजेक्ट को 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.
  1. दिए गए यूआरएल को कॉपी करें और उसे किसी ब्राउज़र में चिपकाएं.
  2. कार्रवाइयां कंसोल में, सबसे ऊपर मौजूद नेविगेशन बार में, डेवलप करें पर क्लिक करें.
  3. सीन के बगल में मौजूद ड्रॉप-डाउन ऐरो पर क्लिक करें और शुरू करें पर क्लिक करें. आपको अपनी Action के Start सीन को विज़ुअल तौर पर देखना चाहिए, जैसा कि इस स्क्रीनशॉट में दिखाया गया है:

cae526c647f8d40f.png

अपने प्रोजेक्ट में स्टोरेज खाली करें [सुझाया गया]

संभावित शुल्क देने से बचने के लिए, हमारा सुझाव है कि आप उन प्रोजेक्ट को हटा दें जिनका इस्तेमाल आपको नहीं करना है. इस कोडलैब में बनाए गए प्रोजेक्ट मिटाने के लिए, यह तरीका अपनाएं:

  1. क्लाउड प्रोजेक्ट और संसाधनों को मिटाने के लिए, प्रोजेक्ट बंद करना (मिटाना) सेक्शन में दिए गए चरणों को पूरा करें.
  1. ज़रूरी नहीं: Actions कंसोल से अपने प्रोजेक्ट को तुरंत हटाने के लिए, प्रोजेक्ट मिटाएं सेक्शन में दिए गए चरणों को पूरा करें. अगर ऐसा नहीं किया जाता है, तो आपका प्रोजेक्ट करीब 30 दिनों के बाद अपने-आप हट जाएगा.

6. बधाई हो!

अब आपको Actions SDK टूल की मदद से, Google Assistant के लिए कार्रवाइयां बनाने के लिए ज़रूरी इंटरमीडिएट स्किल के बारे में पता है.

आपने क्या कवर किया

  • Node.js फ़ुलफ़िलमेंट लाइब्रेरी का इस्तेमाल करके बातचीत वाली कार्रवाइयों को डेवलप करने का तरीका
  • उपयोगकर्ता से डेटा इकट्ठा करने के लिए स्लॉट इस्तेमाल करने का तरीका
  • सीन में लॉजिक जोड़ने के लिए, शर्तों का इस्तेमाल कैसे करें
  • गेम लूप जोड़ने का तरीका
  • सपोर्टिव पाथ जोड़ने का तरीका

ज़्यादा जानें

आप Google Assistant के लिए कार्रवाइयां बनाने के बारे में जानने के लिए इन संसाधनों को देख सकते हैं:

हमारी नई सूचनाओं के साथ बने रहने के लिए, Twitter @ActionsOnGoogle पर हमें फ़ॉलो करें. साथ ही, आपने जो बनाया है उसे शेयर करने के लिए #AoGDevs पर ट्वीट करें!

राय जानने के लिए सर्वे

आगे बढ़ने से पहले, कृपया अपने अनुभव के बारे में बताने के लिए एक छोटा-सा सर्वे भरें.