คุณใช้สิทธิ์ในการดำเนินการเพื่อขอข้อมูลส่วนตัวจากผู้ใช้ได้ เพื่อวัตถุประสงค์ในการดำเนินการตามคำขอ เช่น การดำเนินการส่งอาหาร สามารถใช้สิทธิ์เข้าถึงตำแหน่งของอุปกรณ์เพื่อขอข้อมูลเกี่ยวกับ ตำแหน่งนั้น
เมื่อคุณเพิ่มสิทธิ์ลงในการดำเนินการ Assistant จะแสดง ที่สอดคล้องกันในการขอสิทธิ์จากผู้ใช้ในการให้ ลงในการดำเนินการของคุณ
สิทธิ์ที่มี
การดำเนินการสามารถขอสิทธิ์ต่อไปนี้ได้
DEVICE_PRECISE_LOCATION
: ขอตำแหน่งที่แน่นอนของผู้ใช้ (พิกัดและที่อยู่)DEVICE_COARSE_LOCATION
: ขอตำแหน่งคร่าวๆ ของผู้ใช้ (รหัสไปรษณีย์และเมือง)
สิทธิ์การตั้งค่า
ในการตั้งค่าสิทธิ์สำหรับการดำเนินการ ให้เพิ่มช่องประเภทใหม่ลงใน ด้วย จากนั้นกำหนดค่าช่องโฆษณาสำหรับสิทธิ์ข้อมูลที่ต้องการขอ
เพิ่มประเภทช่วงเวลาของสิทธิ์
คุณสามารถให้สิทธิ์การดำเนินการของคุณในการรับข้อมูลผู้ใช้ด้วย
ประเภทช่องโฆษณา actions.type.Permission
ในการกำหนดค่าประเภทช่องโฆษณานี้ ให้ทำตามขั้นตอนต่อไปนี้
- ไปที่คอนโซล Actions และเลือกหรือสร้าง โปรเจ็กต์
- คลิกพัฒนาในเมนูด้านบน
- ในส่วนฉาก ให้คลิกฉากที่ต้องการเพิ่มขั้นตอนการให้สิทธิ์
- ใต้ส่วนการเติมช่องของฉาก ให้คลิก + เพื่อเพิ่มช่องใหม่
ในเมนูแบบเลื่อนลงเลือกประเภท ให้เลือกประเภทช่อง
actions.type.Permission
ตั้งชื่อช่องในช่องป้อนชื่อช่อง
เปิดใช้การเขียนกลับค่าช่องที่กำหนดเองเพื่อเขียนผลลัพธ์ไปยังเซสชัน พารามิเตอร์
กำหนดค่าช่อง
ตอนนี้คุณระบุสตริงบริบทและรายการสิทธิ์ที่จะได้รับได้แล้ว กำหนดค่าช่องโฆษณา สตริงบริบทคือเหตุผลที่อธิบาย ที่ขอข้อมูลจากผู้ใช้ และจะแสดงผลให้ผู้ใช้เห็นเมื่อ ขออนุญาตไปยังการดำเนินการของคุณ
คุณจะกำหนดค่าสตริงบริบทและสิทธิ์ได้ในกำหนดค่าสล็อต ดังที่แสดงในภาพหน้าจอต่อไปนี้
ข้อมูลโค้ดต่อไปนี้แสดงตัวอย่างการกำหนดค่าช่อง
{
"@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
ในสภาพของฉาก
หากต้องการตรวจสอบสถานะของสล็อตสิทธิ์ ให้ทำตามขั้นตอนต่อไปนี้
- ไปที่คอนโซล Actions และคลิก พัฒนาในเมนูด้านบน
- ในส่วนฉาก ให้คลิกฉากที่มีช่องสิทธิ์
- ในส่วนเงื่อนไขของฉาก ให้คลิก + เพื่อเพิ่ม
ป้อนเงื่อนไขต่อไปนี้เพื่อตรวจสอบสถานะสิทธิ์ (โดย <slot_name> คือชื่อพารามิเตอร์เซสชันที่คุณกำหนดค่าไว้ใน ช่วงเวลา):
scene.slots.status == "FINAL" && (session.params.<slot_name>.permissionStatus == "PERMISSION_GRANTED" || session.params.<slot_name>.permissionStatus == "ALREADY_GRANTED")
ในส่วนเงื่อนไขของฉาก ให้คลิก + เพื่อเพิ่ม
ป้อนเงื่อนไขต่อไปนี้เพื่อจัดการกรณีที่ผู้ใช้ การยินยอมให้แชร์ข้อมูล
scene.slots.status == "FINAL"
ในส่วนเงื่อนไขของฉาก ให้คลิก + เพื่อเพิ่ม
ป้อนเงื่อนไขต่อไปนี้เพื่อจัดการกรณีที่ผู้ใช้ได้ดำเนินการแล้ว ได้รับสิทธิ์ และไม่ต้องถามอีก
"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.