สิทธิ์

คุณใช้สิทธิ์ในการดำเนินการเพื่อขอข้อมูลส่วนตัวจากผู้ใช้ได้ เพื่อวัตถุประสงค์ในการดำเนินการตามคำขอ เช่น การดำเนินการส่งอาหาร สามารถใช้สิทธิ์เข้าถึงตำแหน่งของอุปกรณ์เพื่อขอข้อมูลเกี่ยวกับ ตำแหน่งนั้น

เมื่อคุณเพิ่มสิทธิ์ลงในการดำเนินการ 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. ป้อนเงื่อนไขต่อไปนี้เพื่อตรวจสอบสถานะสิทธิ์ (โดย &lt;slot_name&gt; คือชื่อพารามิเตอร์เซสชันที่คุณกำหนดค่าไว้ใน ช่วงเวลา):

    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.