অনুমতি

আপনি একটি অনুরোধ সম্পূর্ণ করার উদ্দেশ্যে ব্যবহারকারীর কাছ থেকে ব্যক্তিগত ডেটার অনুরোধ করতে আপনার অ্যাকশনে অনুমতিগুলি ব্যবহার করতে পারেন। উদাহরণস্বরূপ, একটি খাদ্য বিতরণ অ্যাকশন ব্যবহারকারীর অবস্থান সম্পর্কে তথ্যের জন্য অনুরোধ করার জন্য একটি ডিভাইস অবস্থানের অনুমতি ব্যবহার করতে পারে।

আপনি যখন আপনার অ্যাকশনে একটি অনুমতি যোগ করেন, তখন সহকারী আপনার অ্যাকশনে তথ্য প্রদানের জন্য ব্যবহারকারীর কাছ থেকে অনুমতির অনুরোধ করার জন্য একটি মানক, সামঞ্জস্যপূর্ণ ইন্টারফেস উপস্থাপন করে।

উপলব্ধ অনুমতি

নিম্নলিখিত অনুমতিগুলি আপনার অ্যাকশন দ্বারা অনুরোধ করা যেতে পারে:

  • DEVICE_PRECISE_LOCATION : ব্যবহারকারীর সঠিক ডিভাইসের অবস্থানের জন্য অনুরোধ করে (সমন্বয় এবং রাস্তার ঠিকানা)।
  • DEVICE_COARSE_LOCATION : ব্যবহারকারীর মোটা ডিভাইসের অবস্থান (পোস্টাল কোড এবং শহর) অনুরোধ করে।

অনুমতি সেট আপ করুন

আপনার অ্যাকশনের জন্য অনুমতি সেট আপ করতে, আপনি দৃশ্যে একটি নতুন স্লট টাইপ যোগ করুন। তারপরে আপনি যে ডেটা অনুমতির অনুরোধ করতে চান তার জন্য স্লটটি কনফিগার করুন।

অনুমতি স্লট টাইপ যোগ করুন

আপনি আপনার অ্যাকশনকে actions.type.Permission স্লট টাইপ দিয়ে ব্যবহারকারীর তথ্য পাওয়ার ক্ষমতা প্রদান করতে পারেন।

এই স্লট টাইপ কনফিগার করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. অ্যাকশন কনসোলে যান এবং একটি প্রকল্প নির্বাচন করুন বা তৈরি করুন।
  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. অ্যাকশন কনসোলে যান এবং উপরের মেনুতে বিকাশে ক্লিক করুন।
  2. দৃশ্যের অধীনে, অনুমতি স্লট ধারণকারী দৃশ্যে ক্লিক করুন।
  3. দৃশ্যের শর্ত বিভাগের অধীনে, একটি নতুন শর্ত যোগ করতে + ক্লিক করুন।
  4. অনুমতির স্থিতি পরীক্ষা করতে নিম্নলিখিত শর্তটি লিখুন (যেখানে <slot_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.