अनुमतियां

अनुरोध को पूरा करने के लिए, अपनी सेट की गई कार्रवाई में अनुमतियों का इस्तेमाल करके, उपयोगकर्ता से निजी डेटा का अनुरोध किया जा सकता है. उदाहरण के लिए, खाने की डिलीवरी की कार्रवाई, डिवाइस की जगह की जानकारी की अनुमति का इस्तेमाल कर सकती है, ताकि उपयोगकर्ता की जगह की जानकारी का अनुरोध किया जा सके.

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

उपलब्ध अनुमतियां

आपकी सेट की गई कार्रवाई के ज़रिए, इन अनुमतियों का अनुरोध किया जा सकता है:

  • DEVICE_PRECISE_LOCATION: उपयोगकर्ता के डिवाइस की जगह की सटीक जानकारी का अनुरोध करता है (निर्देशांक और मोहल्ले का पता).
  • DEVICE_COARSE_LOCATION: उपयोगकर्ता के डिवाइस की अनुमानित जगह (पिन कोड और शहर) का अनुरोध करता है.

अनुमतियां सेट अप करें

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

अनुमति स्लॉट का टाइप जोड़ें

अपनी सेट की गई कार्रवाई को actions.type.Permission स्लॉट टाइप की मदद से, उपयोगकर्ता की जानकारी पाने की अनुमति दी जा सकती है.

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

  1. Actions कंसोल पर जाएं और कोई प्रोजेक्ट चुनें या बनाएं.
  2. सबसे ऊपर मौजूद मेन्यू में, डेवलप करें पर क्लिक करें.
  3. सीन में जाकर, उस सीन पर क्लिक करें जिसमें आपको अनुमति का फ़्लो जोड़ना है.
  4. नया स्लॉट जोड़ने के लिए, सीन के स्लॉट भरना सेक्शन में जाकर, + पर क्लिक करें.
  5. टाइप चुनें ड्रॉपडाउन में, actions.type.Permission स्लॉट का टाइप चुनें.

  6. स्लॉट का नाम डालें फ़ील्ड में, स्लॉट को एक नाम दें.

  7. सेशन पैरामीटर में नतीजा लिखने के लिए, कस्टम स्लॉट वैल्यू को लिखने की सुविधा चालू करें.

स्लॉट कॉन्फ़िगर करें

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

इस स्क्रीनशॉट में दिखाए गए तरीके से, स्लॉट कॉन्फ़िगर करें सेक्शन में संदर्भ स्ट्रिंग और अनुमतियों को कॉन्फ़िगर किया जा सकता है:

यहां दिया गया कोड स्निपेट, स्लॉट कॉन्फ़िगरेशन का एक उदाहरण दिखाता है:

{
  "@type": "type.googleapis.com/google.actions.conversation.v3.PermissionValueSpec",
  "context": "Context string",
  "permissions": ["DEVICE_PRECISE_LOCATION"]
}

लोगों को दिखने वाला प्रॉम्प्ट, "$context_string के फ़ॉर्मैट में होगा. मुझे सिर्फ़ Google से आपकी मौजूदा जगह की जानकारी लेनी होगी. आपको कोई दिक़्क़त तो नहीं है?"

अनुमति कोड का इस्तेमाल करके, उपयोगकर्ता की यह जानकारी पाई जा सकती है:

अनुमति ब्यौरा
DEVICE_PRECISE_LOCATION डिवाइस की जगह की सटीक जानकारी (निर्देशांक और मोहल्ले का पता)
DEVICE_COARSE_LOCATION डिवाइस की अनुमानित जगह (पिन कोड और शहर)

अनुमति से जुड़ा नतीजा पाएं

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

अनुमति की स्थिति देखें

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

सीन की स्थिति में session.params.<slot_name>.permissionStatus की वैल्यू देखकर, अनुमति की स्थिति देखी जा सकती है.

अनुमति के स्लॉट की स्थिति देखने के लिए, यह तरीका अपनाएं:

  1. Actions कंसोल पर जाएं और सबसे ऊपर मौजूद मेन्यू में, डेवलप करें पर क्लिक करें.
  2. सीन में जाकर, उस सीन पर क्लिक करें जिसमें अनुमति का स्लॉट है.
  3. सीन के स्थिति सेक्शन में, नई शर्त जोड़ने के लिए + पर क्लिक करें.
  4. अनुमति का स्टेटस देखने के लिए, यह शर्त डालें (जहां <स्लॉट_name>, उस सेशन पैरामीटर का नाम है जिसे आपने अपने स्लॉट में कॉन्फ़िगर किया है):

    scene.slots.status == "FINAL" && (session.params.<slot_name>.permissionStatus == "PERMISSION_GRANTED" || session.params.<slot_name>.permissionStatus == "ALREADY_GRANTED")
    

  5. सीन के स्थिति सेक्शन में, नई शर्त जोड़ने के लिए + पर क्लिक करें.

  6. अगर उपयोगकर्ता अपनी जानकारी शेयर करने की सहमति नहीं देता है, तो उस स्थिति को हैंडल करने के लिए यहां दी गई शर्त डालें:

    scene.slots.status == "FINAL"
    

  7. सीन के स्थिति सेक्शन में, नई शर्त जोड़ने के लिए + पर क्लिक करें.

  8. अगर उपयोगकर्ता ने पहले ही अनुमति दे दी है और उसे फिर से अनुमति देने की ज़रूरत नहीं है, तो ऐसी स्थिति में यह शर्त डालें:

    "DEVICE_PRECISE_LOCATION" in user.permissions
    

उपयोगकर्ता की जानकारी पढ़ें

अगर उपयोगकर्ता अनुमति देता है, तो उपयोगकर्ता की जानकारी बाद के अनुरोधों में दी जाती है.

नीचे दिए गए स्निपेट में, device.currentLocation के तहत वेबहुक के अनुरोध में दी गई डिवाइस की जगह की जानकारी देखी जा सकती है:

JSON के लिए अनुरोध करें
  {
      "handler": {
        "name": "handler"
      },
      "intent": {
        "name": "",
        "params": {
          "deviceLoc": {
            "original": "",
            "resolved": {
              "@type": "type.googleapis.com/google.actions.conversation.v3.PermissionValue",
              "permissionStatus": "PERMISSION_GRANTED",
              "grantedPermissions": [
                "DEVICE_PRECISE_LOCATION"
              ]
            }
          }
        },
        "query": "Yes"
      },
      "scene": {
        "name": "Scene",
        "slotFillingStatus": "FINAL",
        "slots": {
          "deviceLoc": {
            "mode": "REQUIRED",
            "status": "SLOT_UNSPECIFIED",
            "value": {
              "grantedPermissions": [
                "DEVICE_PRECISE_LOCATION"
              ],
              "@type": "type.googleapis.com/google.actions.conversation.v3.PermissionValue",
              "permissionStatus": "PERMISSION_GRANTED"
            },
            "updated": true
          }
        },
        "next": {
          "name": "actions.scene.END_CONVERSATION"
        }
      },
      "session": {
        "id": "session_id",
        "params": {
          "deviceLoc": {
            "grantedPermissions": [
              "DEVICE_PRECISE_LOCATION"
            ],
            "permissionStatus": "PERMISSION_GRANTED",
            "@type": "type.googleapis.com/google.actions.conversation.v3.PermissionValue"
          }
        },
        "typeOverrides": [],
        "languageCode": ""
      },
      "user": {
        "locale": "en-US",
        "params": {},
        "accountLinkingStatus": "ACCOUNT_LINKING_STATUS_UNSPECIFIED",
        "verificationStatus": "VERIFIED",
        "packageEntitlements": [],
        "permissions": [
          "DEVICE_PRECISE_LOCATION"
        ],
        "lastSeenTime": "2021-02-08T20:43:47Z"
      },
      "home": {
        "params": {}
      },
      "device": {
        "capabilities": [
          "SPEECH",
          "RICH_RESPONSE",
          "LONG_FORM_AUDIO"
        ],
        "currentLocation": {
          "coordinates": {
            "latitude": 37.422,
            "longitude": -122.084
          },
          "postalAddress": {
            "revision": 0,
            "regionCode": "US",
            "languageCode": "en",
            "postalCode": "94043",
            "sortingCode": "",
            "administrativeArea": "California",
            "locality": "Mountain View",
            "sublocality": "",
            "addressLines": ["1600 Amphitheatre Parkway"],
            "recipients": [],
            "organization": ""
          }
        }
      }
    }
    

जगह के टाइप के स्कीमा के बारे में ज़्यादा जानकारी के लिए, Location रेफ़रंस देखें.

अपने वेबहुक से, अनुरोध में शामिल जानकारी को ऐक्सेस किया जा सकता है, जैसा कि इस स्निपेट में दिखाया गया है:

वेबहुक
  app.handle('handler', (conv) => {
    let location = conv.device.currentLocation;
    conv.add(`Your postal code is ${location.postalCode}`);
  });
    

प्रॉम्प्ट में अनुमति का इस्तेमाल करना

स्टैटिक प्रॉम्प्ट में भी अनुमति का रेफ़रंस दिया जा सकता है. जैसे, डिवाइस की जगह के लिए, $device.currentLocation.coordinates.* और $device.currentLocation.postalAddress.* का इस्तेमाल किया जा सकता है. यहां दिए गए कोड स्निपेट में, प्रॉम्प्ट में उपयोगकर्ता के शहर की जानकारी देने का तरीका बताया गया है:

candidates:
  - first_simple:
      variants:
        - speech: >-
            There are no events scheduled tomorrow in the city of $device.currentLocation.postalAddress.locality.