बिल्ट-इन इंटेंट (Dialogflow)

बिल्ट-इन इंटेंट एक यूनीक आइडेंटिफ़ायर होता है. इसे जोड़कर, Google Assistant को बताया जा सकता है कि आपकी सेट की गई कार्रवाई, उपयोगकर्ता के अनुरोधों की एक खास कैटगरी को पूरा कर सकती है. उदाहरण के लिए, यहाँ उपयोगकर्ता की क्वेरी के कुछ ऐसे उदाहरण दिए गए हैं जिन्हें Assistant, बिल्ट-इन इंटेंट से मेल खाती है:

  • "गेम खेलें" पहले से मौजूद इंटेंट: "Ok Google. यादों वाला गेम खेलो"
  • "राशिफल पाएं" में पहले से मौजूद इंटेंट: "Ok Google. मेरा राशिफल बताओ"

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

Assistant जिन बिल्ट-इन इंटेंट के साथ काम करती है उनकी पूरी सूची देखने के लिए बिल्ट-इन इंटेंट रेफ़रंस देखें. इसमें उनके पैरामीटर और उपयोगकर्ता क्वेरी के उदाहरण भी शामिल हैं.

बिल्ट-इन इंटेंट इंटिग्रेट करें

अपनी कार्रवाई को कैसे तैयार किया जा रहा है, इसके आधार पर बिल्ट-इन इंटेंट को इंटिग्रेट करने के अलग-अलग तरीके हैं.

Dialogflow

अगर आपकी सेट की गई कार्रवाई बनाने के लिए Dialogflow का इस्तेमाल किया जा रहा है, तो आपके पास Dialogflow कंसोल से, बिल्ट-इन इंटेंट को ग्राफ़िक की मदद से अटैच किया जा सकता है.

Dialogflow के साथ पहले से मौजूद इंटेंट अटैच करने के लिए, यह तरीका अपनाएं:

  1. Dialogflow कंसोल खोलें, अपना एजेंट चुनें, और फिर इंटेंट स्क्रीन पर जाएं.
  2. वह इंटेंट बनाएं या चुनें जो आपका एजेंट तब ट्रिगर होता है, जब उसे कोई खास बिल्ट-इन इंटेंट मिलता है. इवेंट सेक्शन खोलें और इवेंट जोड़ें पर क्लिक करें.

    पहली इमेज. Dialogflow कंसोल में Dialogflow इवेंट जोड़ा जा रहा है.
  3. इवेंट फ़ील्ड में अपने एजेंट के लिए, बिल्ट-इन इंटेंट इवेंट का नाम लिखें (उदाहरण के लिए, actions_intent_PLAY_GAME).

    दूसरी इमेज. Dialogflow कंसोल में, आपके एजेंट में बिल्ट-इन इंटेंट अटैच किया जा रहा है.
  4. सेव करें पर क्लिक करें.

Actions SDK टूल

अगर अपनी सेट की गई कार्रवाई बनाने के लिए, ऐक्शन SDK टूल का इस्तेमाल किया जा रहा है, तो आपको अपने ऐक्शन पैकेज में मौजूद बिल्ट-इन इंटेंट और कार्रवाइयों के बीच मैपिंग तय करनी होगी.

ऐक्शन SDK टूल के साथ बिल्ट-इन इंटेंट अटैच करने के लिए, यह तरीका अपनाएं:

  1. कार्रवाई की परिभाषा के नाम वाले फ़ील्ड में, पहले से मौजूद इंटेंट के बारे में बताएं.
  2. gactions टूल का इस्तेमाल करके, अपने ऐक्शन प्रोजेक्ट में ऐक्शन पैकेज अपलोड करें. इसके बारे में कार्रवाई SDK टूल की खास जानकारी में बताया गया है.

उदाहरण के लिए, नीचे दिए गए स्निपेट में CHECK_AIR_QUALITY बिल्ट-इन इंटेंट को जोड़ने का तरीका बताया गया है:

{
   "actions":[
      {
         "description":"Default Welcome Intent",
         "name":"MAIN",
         "fulfillment":{
            "conversationName":"conversation_1"
         },
         "intent":{
            "name":"actions.intent.MAIN"
         }
      },
      {
         "description":"Check Air Quality",
         "name":"CHECK_AIR_QUALITY",
         "fulfillment":{
            "conversationName":"conversation_1"
         },
         "intent":{
            "name":"actions.intent.CHECK_AIR_QUALITY"
         }
      }
   ],
   "conversations":{
      "conversation_1":{
         "name":"conversation_1",
         "url":"https://example.com/fulfillment",
         "fulfillmentApiVersion":2
      }
   }
}

पहले से मौजूद इंटेंट पैरामीटर मैनेज करना

जब आपकी सेट की गई कार्रवाई को किसी बिल्ट-इन इंटेंट के ज़रिए शुरू किया जाता है, तो आपके फ़ुलफ़िलमेंट को अतिरिक्त पैरामीटर मिल सकते हैं. इंटेंट स्कीमा, पैरामीटर के नाम और उनके टाइप को प्रिमिटिव टाइप या schema.org इकाइयों के रूप में बताता है. बातचीत की सुविधा वाले बिल्ट-इन इंटेंट का स्कीमा देखने के लिए, बिल्ट-इन इंटेंट रेफ़रंस देखें.

बिल्ट-इन इंटेंट के लिए पैरामीटर ज़रूरी नहीं हैं. अगर पैरामीटर को उपयोगकर्ता के बिल्ट-इन इंटेंट के ज़रिए लिया जा सकता है, तो वह इन पैरामीटर में वैल्यू डाल देती है.

उदाहरण के लिए, actions.intent.CHECK_AIR_QUALITY बिल्ट-इन इंटेंट का स्कीमा चार वैकल्पिक पैरामीटर के बारे में बताता है:

पैरामीटर का नाम Type
attributes स्ट्रिंग की वैल्यू.
location schema.org/Place ऑब्जेक्ट.
temporalCoverage schema.org/Duration ऑब्जेक्ट.
timeIndicator एक EnumeratedDuration (Google के लिए खास एक्सटेंशन).

इस कोड स्निपेट में, बातचीत के वेबहुक (JSON) अनुरोध का एक उदाहरण दिया गया है. यह अनुरोध तब किया जाता है, जब कोई उपयोगकर्ता यह बोलकर आपकी सेट की गई कार्रवाई को शुरू करता है, "कल के लिए सैन फ़्रांसिस्को में एयर क्वालिटी क्या रहेगी?":

"inputs":[
      {
         "intent":"actions.intent.CHECK_AIR_QUALITY",
         "rawInputs":[
            {
               "inputType":"VOICE",
               "query":"what is the air quality in san francisco tomorrow"
            }
         ],
         "arguments":[
            {
               "name":"location",
               "structuredValue":{
                  "geo":{
                     "longitude":-122.41941550000001,
                     "latitude":37.7749295
                  },
                  "@context":"https://schema.org",
                  "@type":"Place",
                  "name":"san francisco"
               }
            },
            {
               "name":"temporalCoverage",
               "rawText":"2018-04-25",
               "textValue":"2018-04-25"
            }
         ]
      }
   ]

इस उदाहरण में, पैरामीटर नीचे दी गई वैल्यू लेते हैं:

  • location पैरामीटर में, "सैन फ़्रांसिस्को" के लिए schema.org/Place वैल्यू शामिल होती है.
  • temporalCoverage पैरामीटर में, आने वाले कल की तारीख के लिए, शुरू करने के समय से जुड़ी schema.org/Duration वैल्यू शामिल होती है.
  • attributes और timeIndicator पैरामीटर के लिए कोई मान नहीं है, क्योंकि उपयोगकर्ता के बोले जाने वाले वाक्यांश में ऐसी जानकारी शामिल नहीं है.

अगर Node.js के लिए Actions on Google क्लाइंट लाइब्रेरी का इस्तेमाल करते हैं, तो पैरामीटर की वैल्यू फिर से पाई जा सकती है, जैसा कि इस स्निपेट में दिखाया गया है:

app.intent('actions.intent.CHECK_AIR_QUALITY', (conv) => {
  const attributes = conv.arguments.get('attributes');
  const location = conv.arguments.get('location');
  const temporal_coverage = conv.arguments.get('temporalCoverage');
  Const time_indicator = conv.arguments.get('timeIndicator')

  // Your Action logic. If you need to use any of the parameter values,
  // you should check first that it is defined. Arguments.get returns
  // undefined if it can't find a value for a parameter.

});

पहले से मौजूद इंटेंट की मदद से इंटिग्रेशन की जांच करना

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

  1. जाँच के लिए इस्तेमाल की जाने वाली कार्रवाई चालू करके, कार्रवाई सिम्युलेटर खोलें या अपने डिवाइस पर Assistant खोलें.
  2. उस बिल्ट-इन इंटेंट से जुड़ी क्वेरी बोलें या टाइप करें. उदाहरण के लिए, “मुझे एक गेम खेलना है.”
  3. ऐप्लिकेशन चुनने के लिए दिखने वाले डायलॉग बॉक्स में, अपनी सेट की गई कार्रवाई ढूंढें.
  4. अपने ऐप्लिकेशन के साथ इंटेंट भेजने के लिए, अपना ऐप्लिकेशन चुनें.
तीसरी इमेज. कार्रवाई चुनने वाला डायलॉग बॉक्स, जो
बिल्ट-इन इंटेंट वाक्यांश से बनता है.
चौथी इमेज. पहले से मौजूद इंटेंट से जुड़ी किसी कार्रवाई को शुरू करना.

पहले से मौजूद इंटेंट का इस्तेमाल करने के सबसे सही तरीके

बिल्ट-इन इंटेंट का इस्तेमाल करते समय, आपको इन सबसे सही तरीकों का पालन करना चाहिए:

  • खास कार्रवाइयों के लिए बिल्ट-इन इंटेंट मैप करें: जब कोई बिल्ट-इन इंटेंट आपकी सेट की गई कार्रवाई को ट्रिगर करता है, तो उपयोगकर्ता को अपनी कार्रवाई के खास इंटेंट और फ़ंक्शन के बारे में जितना हो सके उतना कम से कम गड़बड़ी होने पर भेजें. उदाहरण के लिए, अगर आपकी सेट की गई कार्रवाई, PLAY_GAME बिल्ट-इन इंटेंट के साथ काम करती है और उसे इंटेंट मिलता है, तो आपको उपयोगकर्ता को तुरंत अपनी सेट की गई कार्रवाई की गेम सुविधा पर भेज देना चाहिए. अगर उपयोगकर्ता कोई गेम खेलना चाहता है, तो उससे दोबारा न पूछें.
  • बिल्ट-इन इंटेंट पैरामीटर मैनेज करें: पक्का करें कि आप उन बिल्ट-इन इंटेंट पैरामीटर वैल्यू का इस्तेमाल करें जिन्हें Assistant आपके ऑर्डर को पूरा करने के लिए भेजती है. ऐसी वैल्यू के लिए, उपयोगकर्ता को दोबारा सहमति न दें.