สำรวจใน Dialogflow
คลิกต่อไปเพื่อนำเข้าตัวอย่างการบันทึกข้อมูลใน Dialogflow จากนั้นทำตาม ด้านล่างเพื่อปรับใช้และทดสอบตัวอย่าง
- ป้อนชื่อ Agent และสร้าง Agent ใหม่ของ Dialogflow สำหรับตัวอย่าง
- หลังจากนำเข้าตัวแทนเสร็จแล้ว ให้คลิกไปที่ตัวแทน
- จากเมนูการนำทางหลัก ให้ไปที่การดำเนินการตามคำสั่งซื้อ
- เปิดใช้เครื่องมือแก้ไขในบรรทัด แล้วคลิกทำให้ใช้งานได้ เครื่องมือแก้ไขมีตัวอย่าง โค้ด
- จากเมนูการนำทางหลัก ให้ไปที่ Integrations แล้วคลิก Google Assistant
- ในหน้าต่างโมดัลที่ปรากฏขึ้น ให้เปิดใช้แสดงตัวอย่างการเปลี่ยนแปลงอัตโนมัติ แล้วคลิกทดสอบ เพื่อเปิดเครื่องมือจำลอง Actions
- ในเครื่องมือจำลอง ให้ป้อน
Talk to my test app
เพื่อทดสอบตัวอย่าง
ส่วนหนึ่งของการมอบประสบการณ์ที่ยอดเยี่ยมแก่ผู้ใช้มักจะเป็นการบันทึกข้อมูล ระหว่างการสนทนาหรือการสนทนาหลายรายการกับผู้ใช้ ซึ่งจะเป็นประโยชน์ในกรณีที่คุณแสดง ข้อความแจ้งที่สำคัญในการสนทนาเดียว การบันทึกคะแนนของเกมในเซสชันต่างๆ หรือการจดจำข้อมูลชิ้นเล็กๆ สำหรับผู้ใช้
ข้อกำหนดจะแตกต่างกันไปเล็กน้อย โดยขึ้นอยู่กับว่าคุณต้องการบันทึกข้อมูลภายใน
การสนทนาหรือข้ามการสนทนา หากต้องการบันทึกข้อมูลในการสนทนา คุณสามารถทำดังนี้
ใช้ช่อง conversationToken
ของออบเจ็กต์ AppResponse
หากต้องการบันทึกข้อมูลในการสนทนาต่างๆ ให้ทำตามขั้นตอนต่อไปนี้แทน
- ระบุว่าผู้ใช้ได้รับการยืนยันแล้วหรือเป็นผู้มาเยือน
- จัดเก็บหรือเข้าถึงข้อมูลผู้ใช้โดยใช้ช่อง
userStorage
ของ ออบเจ็กต์AppResponse
ของคุณ
การบันทึกข้อมูลระหว่างรอบการสนทนา
ช่อง conversationToken
เป็นสตริงที่มีโทเค็นแบบทึบแสง
จะหมุนเวียนเข้าสู่ "การดำเนินการ" ทุกครั้งที่มีการสนทนา ตัวอย่างเช่น หากตั้งค่า
ค่าให้กับ "count=1"
ใน AppResponse
สำหรับการเปิดครั้งแรกของ
การสนทนา AppRequest
ที่การดำเนินการของคุณได้รับในตาที่ 2
ของการสนทนามี "count=1"
ใน conversationToken
โทเค็นจะกำหนดค่าเริ่มต้นเป็นสตริงว่างเสมอที่ตอนต้นของ
การสนทนา หากคุณใช้แท็ก
ไลบรารีไคลเอ็นต์ Actions on Google Node.js คุณสามารถ
ที่มีโทเค็นการสนทนาเป็นออบเจ็กต์ JSON โดยใช้ conv.data
โดยที่
conv
เป็นอินสแตนซ์ Conversation
ของคุณ
ตัวอย่างต่อไปนี้แสดงวิธีบันทึกตัวนับใน conversationToken
ช่อง AppResponse
ของคุณ:
Node.js
conv.data.firstNum = firstNum; conv.ask(`Got it, the first number is ${firstNum}.`); conv.ask(`What's the second number?`);
Java
ResponseBuilder responseBuilder = getResponseBuilder(request); responseBuilder.getConversationData().put("firstNum", firstNum); responseBuilder.add("Got it, the first number is " + firstNum + "."); responseBuilder.add("What's the second number?"); return responseBuilder.build();
JSON
โปรดทราบว่า JSON ด้านล่างจะอธิบายการตอบสนองของเว็บฮุคที่ใช้
outputContexts
จากราคาเต็ม conversationToken
{ "payload": { "google": { "expectUserResponse": true, "richResponse": { "items": [ { "simpleResponse": { "textToSpeech": "Got it, the first number is 23." } }, { "simpleResponse": { "textToSpeech": "What's the second number?" } } ] } } }, "outputContexts": [ { "name": "projects/save-data-df-js/agent/sessions/ABwppHGfFkWJdHKPpBEYiGkhdoakWmYj_2sZa4o8pbGG9nj4q5_GfDTtNEXOY34mLX8G4o_d7oZdUW9bnBZC/contexts/_actions_on_google", "lifespanCount": 99, "parameters": { "data": "{\"firstNum\":23}" } } ] }
JSON
โปรดทราบว่า JSON ด้านล่างจะอธิบายการตอบสนองของเว็บฮุค
{ "expectUserResponse": true, "expectedInputs": [ { "possibleIntents": [ { "intent": "actions.intent.TEXT" } ], "inputPrompt": { "richInitialPrompt": { "items": [ { "simpleResponse": { "textToSpeech": "Got it, the first number is 23." } }, { "simpleResponse": { "textToSpeech": "What's the second number?" } } ] } } } ], "conversationToken": "{\"data\":{\"firstNum\":23}}" }
ดูการแสดงข้อความแจ้งอีกครั้งที่เป็นประโยชน์และล้มเหลวอย่างแนบเนียน เพื่อเป็นตัวอย่างการใช้งานจริง
การบันทึกข้อมูลในการสนทนาต่างๆ
ช่อง userStorage
ของออบเจ็กต์ AppResponse
เป็นสตริงที่
มีโทเค็นทึบแสงที่ระบุโดยการดำเนินการที่บันทึกใน
การสนทนาของผู้ใช้รายใดรายหนึ่งโดยเฉพาะ เช่น เกมสามารถบันทึกราคาเสนอสูงสุด
คะแนนของผู้ใช้ใน userStorage
และใช้มูลค่าในข้อความต้อนรับแต่ละรายการ
เวลาที่ผู้ใช้เริ่มการสนทนาใหม่
การพิจารณาและจัดการสถานะการยืนยันผู้ใช้
สถานะการยืนยันของผู้ใช้อาจมีค่าเป็น GUEST
หรือ VERIFIED
ที่
เริ่มต้นการสนทนาแต่ละครั้ง Actions on Google จะกำหนดการยืนยันของผู้ใช้
ตามตัวบ่งชี้ต่างๆ เมื่อเริ่มต้นการสนทนา เป็นหนึ่งใน
เช่น ผู้ใช้เข้าสู่ระบบ Google Assistant ในอุปกรณ์เคลื่อนที่แล้ว
สถานะการยืนยันของ VERIFIED
เหตุผลที่อาจทำให้ผู้ใช้มีสถานะการยืนยันเป็น
GUEST
:
- ผู้ใช้ปิดผลการค้นหาเฉพาะบุคคลไว้
- ผู้ใช้ปิดใช้งานเว็บและ กิจกรรมบนแอป โปรดทราบว่าผู้ใช้บางราย อาจปิดใช้การตั้งค่านี้ในระดับโดเมน
- หากอุปกรณ์เปิดใช้ Voice Match ไว้ แต่จับคู่ไม่สำเร็จหรือผู้ใช้เรียกใช้ Assistant โดยไม่ใช้เสียงของพวกเขา (เช่น การกด Google ค้างไว้ หน้าแรก)
- ผู้ใช้ไม่ได้ลงชื่อเข้าใช้
ตรวจสอบสถานะการยืนยันของผู้ใช้ทุกครั้งก่อนที่จะจัดเก็บข้อมูลไว้กับ
userStorage
หรือเริ่มขั้นตอนการลิงก์บัญชีเพื่อป้องกันไม่ให้ผู้ใช้ชั่วคราว
โต้ตอบกับฟีเจอร์ที่ไม่สำเร็จ
หากคุณใช้ไลบรารีของไคลเอ็นต์ Actions on Google สำหรับ Node.js
คุณสามารถเชื่อมต่อกับพื้นที่เก็บข้อมูลของผู้ใช้เป็นออบเจ็กต์ JSON โดยใช้
conv.user.storage
โดยที่ conv
คืออินสแตนซ์ของ Conversation
ตัวอย่างต่อไปนี้แสดงวิธีบันทึกตัวนับในช่อง userStorage
ของ
AppResponse
:
Node.js
app.intent('Save Sum', (conv) => { if (conv.user.verification === 'VERIFIED') { conv.user.storage.sum = conv.data.sum; conv.close(`Alright, I'll store that for next time. See you then.`); } else { conv.close(`I can't save that right now, but we can add ` + `new numbers next time!`); } });
Java
@ForIntent("Save Sum") public ActionResponse saveSum(ActionRequest request) { ResponseBuilder responseBuilder = getResponseBuilder(request); Integer sum = ((Double) request.getConversationData().get("sum")).intValue(); String verificationStatus = request.getUser().getUserVerificationStatus(); if (verificationStatus.equals("VERIFIED")) { responseBuilder.getUserStorage().put("sum", sum); responseBuilder.add("Alright, I'll store that for next time. See you then."); } else { responseBuilder.add("I can't save that right now, but we can add new numbers next time!"); } responseBuilder.endConversation(); return responseBuilder.build(); }
Node.js
if (conv.user.verification === 'VERIFIED') { conv.user.storage.sum = conv.data.sum; conv.close(`Alright, I'll store that for next time. See you then.`); } else { conv.close(`I can't save that right now, but we can add ` + `new numbers next time!`); }
Java
ResponseBuilder responseBuilder = getResponseBuilder(request); Integer sum = ((Double) request.getConversationData().get("sum")).intValue(); String verificationStatus = request.getUser().getUserVerificationStatus(); if (verificationStatus.equals("VERIFIED")) { responseBuilder.getUserStorage().put("sum", sum); responseBuilder.add("Alright, I'll store that for next time. See you then."); } else { responseBuilder.add("I can't save that right now, but we can add new numbers next time!"); } responseBuilder.endConversation(); return responseBuilder.build();
JSON
โปรดทราบว่า JSON ด้านล่างจะอธิบายการตอบสนองของเว็บฮุค
{ "payload": { "google": { "expectUserResponse": false, "richResponse": { "items": [ { "simpleResponse": { "textToSpeech": "Alright, I'll store that for next time. See you then." } } ] }, "userStorage": "{\"data\":{\"sum\":68}}" } } }
JSON
โปรดทราบว่า JSON ด้านล่างจะอธิบายการตอบสนองของเว็บฮุค
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "simpleResponse": { "textToSpeech": "Alright, I'll store that for next time. See you then." } } ] } }, "conversationToken": "{\"data\":{\"firstNum\":23,\"sum\":68}}", "userStorage": "{\"data\":{\"sum\":68}}" }
โปรดดูหัวข้อปรับเปลี่ยนการสนทนาให้เหมาะกับผู้ใช้ เพื่อเป็นตัวอย่างการใช้งานจริง
หมายเหตุทางกฎหมาย: การขอความยินยอมก่อนเข้าถึง userStorage
บางประเทศมีกฎระเบียบที่กําหนดให้นักพัฒนาแอปต้องขอความยินยอมจาก
ผู้ใช้ก่อนที่จะสามารถเข้าถึงหรือบันทึกข้อมูลบางอย่าง (เช่น ข้อมูลส่วนตัว
) ใน userStorage
หากคุณดำเนินธุรกิจใน
ประเทศที่คุณต้องการเข้าถึง หรือบันทึกข้อมูลดังกล่าว
userStorage
คุณต้องใช้
ตัวช่วยยืนยันที่จะถาม
แสดงความยินยอมแก่ผู้ใช้ และขอความยินยอมก่อนจะเริ่มจัดเก็บข้อมูลดังกล่าว
ข้อมูลใน userStorage
วันหมดอายุของพื้นที่เก็บข้อมูลของผู้ใช้
เมื่อ Assistant จับคู่ข้อมูลประจำตัวกับผู้ใช้ได้ เนื้อหาของ
userStorage
ไม่มีวันหมดอายุ และมีเพียงผู้ใช้หรือตัวการดำเนินการเองเท่านั้นที่จะล้างได้
เมื่อ Assistant จับคู่ข้อมูลประจำตัวกับผู้ใช้ไม่ได้ เนื้อหาของ
userStorage
ถูกล้างเมื่อจบการสนทนา ตัวอย่าง
กรณีที่ Assistant จับคู่ข้อมูลประจำตัวกับผู้ใช้ไม่ได้
- ตั้งค่า Voice Match แล้วและไม่มีรายการที่ตรงกัน
- ผู้ใช้ปิดใช้ข้อมูลส่วนตัว
ล้างเนื้อหาของช่อง userStorage
คุณสามารถล้างเนื้อหาในช่อง userStorage
ของการดำเนินการได้โดย
ตั้งค่าช่อง resetUserStorage
ของ AppResponse
ให้เป็นจริง ถ้า
คุณตั้งค่า userStorage
เป็นสตริงว่างเปล่า ค่าของ
userStorage
ยังคงเหมือนเดิมในการติดต่อครั้งถัดไป ซึ่งช่วยให้คุณ
หลีกเลี่ยงการส่ง userStorage
ทั้งหน้ากลับในกรณีที่เนื้อหาไม่แสดงผล
เปลี่ยน
หากคุณกำลังใช้ไลบรารีของไคลเอ็นต์ Actions On Google สำหรับ Node.js
คุณสามารถกำหนดค่า conv.user.storage
เป็น {}
(วัตถุว่างเปล่า)
Node.js
app.intent('Forget Number', (conv) => { conv.user.storage = {}; conv.ask(`Alright, I forgot your last result.`); conv.ask(`Let's add two new numbers. What is the first number?`); });
Java
@ForIntent("Forget Number") public ActionResponse forgetNumber(ActionRequest request) { ResponseBuilder responseBuilder = getResponseBuilder(request); responseBuilder.getUserStorage().clear(); responseBuilder.add("Alright, I forgot your last result."); responseBuilder.add("Let's add two new numbers. What is the first number?"); return responseBuilder.build(); }
Node.js
conv.user.storage = {}; conv.ask(`Alright, I forgot your last result.`); conv.ask(`Let's add two new numbers. What is the first number?`);
Java
ResponseBuilder responseBuilder = getResponseBuilder(request); responseBuilder.getUserStorage().clear(); responseBuilder.add("Alright, I forgot your last result."); responseBuilder.add("Let's add two new numbers. What is the first number?"); return responseBuilder.build();
JSON
โปรดทราบว่า JSON ด้านล่างจะอธิบายการตอบสนองของเว็บฮุค
{ "payload": { "google": { "expectUserResponse": true, "richResponse": { "items": [ { "simpleResponse": { "textToSpeech": "Alright, I forgot your last result." } }, { "simpleResponse": { "textToSpeech": "Let's add two new numbers. What is the first number?" } } ] }, "userStorage": "{\"data\":{}}" } } }
JSON
โปรดทราบว่า JSON ด้านล่างจะอธิบายการตอบสนองของเว็บฮุค
{ "expectUserResponse": true, "expectedInputs": [ { "possibleIntents": [ { "intent": "actions.intent.TEXT" } ], "inputPrompt": { "richInitialPrompt": { "items": [ { "simpleResponse": { "textToSpeech": "Alright, I forgot your last result." } }, { "simpleResponse": { "textToSpeech": "Let's add two new numbers. What is the first number?" } } ] } } } ], "userStorage": "{\"data\":{}}" }
ในฐานะผู้ใช้ คุณสามารถดูเนื้อหาของช่อง userStorage
ได้ในส่วน "การดำเนินการ"
เรียกใช้ คุณยังนำข้อมูลผู้ใช้ที่จัดเก็บไว้ออกจากการดำเนินการที่เจาะจงได้ด้วย
โดยทำให้บริการเลิกจดจำคุณ
- เปิดแอป Assistant ในโทรศัพท์
- แตะไอคอนลิ้นชัก
- ในแท็บสำรวจ ให้ค้นหาการดำเนินการที่ต้องการดูหรือล้างผู้ใช้ สำหรับ และแตะบนเพื่อเปิดหน้ารายละเอียด
- เลื่อนลงไปที่ด้านล่างของหน้า
- หากต้องการดูเนื้อหาของช่อง
userStorage
ให้แตะ [ดูข้อมูลที่จัดเก็บไว้] - หากต้องการนำข้อมูลผู้ใช้ที่เก็บไว้ออก ให้แตะหยุด $action ไม่ให้จดจำฉัน
- หากต้องการดูเนื้อหาของช่อง