เกี่ยวกับ Codelab นี้
1 ภาพรวม
Actions on Google เป็นแพลตฟอร์มนักพัฒนาซอฟต์แวร์ที่ช่วยให้คุณสร้างซอฟต์แวร์เพื่อขยายฟังก์ชันการทํางานของ Google Assistant ผู้ช่วยส่วนตัวของ Google และอุปกรณ์เสมือนกว่า 1 พันล้านเครื่องได้ในอุปกรณ์กว่า 1 พันล้านเครื่อง ซึ่งรวมถึงลําโพงอัจฉริยะ โทรศัพท์ รถยนต์ ทีวี หูฟัง และอื่นๆ ผู้ใช้จะมีส่วนร่วมกับ Assistant ในการสนทนาเพื่อทําสิ่งต่างๆ เช่น ซื้อของชําหรือจองรถโดยสาร (โปรดดูรายการสิ่งที่เป็นไปได้ทั้งหมดที่หัวข้อไดเรกทอรีการดําเนินการ) ในฐานะนักพัฒนาซอฟต์แวร์ คุณจะใช้ Actions on Google เพื่อสร้างและจัดการประสบการณ์การสนทนาที่น่าพอใจและมีประสิทธิภาพระหว่างผู้ใช้และบริการของบุคคลที่สามได้อย่างง่ายดาย
นี่คือโมดูล Codelab ขั้นสูงที่มีไว้สําหรับผู้อ่านที่มีประสบการณ์ในการสร้าง Actions for Google Assistant อยู่แล้ว หากคุณยังไม่มีประสบการณ์ด้านการพัฒนาก่อนหน้านี้กับ Actions on Google เราขอแนะนําเป็นอย่างยิ่งให้คุณทําความคุ้นเคยกับแพลตฟอร์มดังกล่าวโดยทําตาม Codelab เบื้องต้นของเรา (ระดับ 1, ระดับ 2 และระดับ 3) โมดูลขั้นสูงเหล่านี้จะแนะนําชุดฟีเจอร์ที่ช่วยคุณขยายฟังก์ชันการทํางานและเพิ่มจํานวนผู้ชมได้
วิธีการสําคัญอย่างหนึ่งในการวัดความสําเร็จของการดําเนินการคือการมีส่วนร่วมของผู้ใช้ หรือประสิทธิภาพของการดําเนินการในการนําผู้ใช้กลับมาหลังจากการโต้ตอบแรกมีประสิทธิภาพ คุณสามารถใช้ฟีเจอร์ต่างๆ ในการดําเนินการนี้เพื่อให้ผู้ใช้ออกจากการสนทนาในการสนทนาได้ เพื่อช่วยให้ใช้งานได้ง่ายขึ้น
Codelab ครอบคลุมฟีเจอร์การมีส่วนร่วมของผู้ใช้และแนวทางปฏิบัติแนะนําสําหรับ Actions on Google
สิ่งที่คุณจะสร้าง
คุณจะปรับปรุงฟีเจอร์ที่สร้างขึ้นแล้วได้โดยการเปิดใช้ฟีเจอร์ต่อไปนี้
- ส่งอัปเดตรายวันให้ผู้ใช้ที่แตะเพื่อพูดคุยกับการดําเนินการของคุณได้
- ส่งข้อความ Push ให้ผู้ใช้ที่ลิงก์กลับไปยังการดําเนินการของคุณ
- สร้างลิงก์ที่นําผู้ใช้ไปยังการดําเนินการของคุณจากเว็บเบราว์เซอร์บนอุปกรณ์เคลื่อนที่
สิ่งที่คุณจะได้เรียนรู้
- การมีส่วนร่วมของผู้ใช้คืออะไรและทําไมความสําเร็จจึงประสบความสําเร็จ'
- วิธีแก้ไขการดําเนินการเพื่อเพิ่มการมีส่วนร่วมของผู้ใช้
- ฟีเจอร์การมีส่วนร่วมของผู้ใช้ที่จะใช้ในการดําเนินการประเภทต่างๆ
- วิธีใช้ Actions API เพื่อส่งการแจ้งเตือนผ่าน Assistant
สิ่งที่ต้องมี
คุณต้องมีเครื่องมือต่อไปนี้
- ตัวแก้ไข IDE/ข้อความที่ต้องการ เช่น WebStorm, Atom หรือ Sublime
- เทอร์มินัลสําหรับเรียกใช้คําสั่ง Shell ที่ติดตั้ง Node.js, npm และ git
- เว็บเบราว์เซอร์ เช่น Google Chrome
- สภาพแวดล้อมในการพัฒนาซอฟต์แวร์ในเครื่องที่มีอินเทอร์เฟซบรรทัดคําสั่ง Firebase
- อุปกรณ์เคลื่อนที่ (Android หรือ iOS) ที่มี Assistant (คุณต้องลงชื่อเข้าใช้ Assistant ด้วยบัญชี Google เดียวกันกับที่ใช้เพื่อสร้างโครงการนี้)
เราขอแนะนําเป็นอย่างยิ่งให้ทําความคุ้นเคยกับ JavaScript (ES6) เพื่อทําความเข้าใจโค้ดเว็บฮุค
2 ตั้งค่าโปรเจ็กต์
ส่วนนี้จะแสดงวิธีเพิ่มฟีเจอร์การมีส่วนร่วมของผู้ใช้ลงในการดําเนินการก่อนหน้าที่สร้างไว้ก่อนหน้านี้
ทําความเข้าใจตัวอย่าง
ตัวอย่าง Codelab นี้เป็นการกระทําง่ายๆ สําหรับฟิตเนสที่สมมติขึ้นชื่อ "Action Gym." การดําเนินการดังกล่าวจะให้ข้อมูลเกี่ยวกับยิม รวมถึงรายการคลาสที่หมุนในแต่ละวัน การดําเนินการที่ให้ข้อมูลเช่นนี้เป็นตัวเลือกที่ดีสําหรับฟีเจอร์การมีส่วนร่วมของผู้ใช้ทั้งหมดเนื่องจากรายการชั้นเรียนที่หมุนเวียนหมุนเวียนจะให้ข้อมูลที่เป็นประโยชน์ที่แตกต่างกันในแต่ละวัน
แผนภาพต่อไปนี้แสดงขั้นตอนการสนทนาของตัวอย่างยิมของ Action'
ซึ่งคุณจะทําการแก้ไขเล็กน้อยในกล่องโต้ตอบเพื่อให้ตรงกับฟีเจอร์การมีส่วนร่วมที่คุณเพิ่ม แต่การออกแบบโดยทั่วไปของการสนทนาจะไม่เปลี่ยนแปลงมากนัก
ดาวน์โหลดไฟล์ฐาน
เรียกใช้คําสั่งต่อไปนี้เพื่อโคลนที่เก็บ GitHub สําหรับ Codelab
git clone https://github.com/actions-on-google/user-engagement-codelab-nodejs
ตั้งค่าโปรเจ็กต์และ Agent
ทําตามขั้นตอนต่อไปนี้เพื่อตั้งค่าโปรเจ็กต์การดําเนินการและ Agent ของ Dialogflow
- เปิดคอนโซล Actions
- คลิกโครงการใหม่
- พิมพ์ชื่อโครงการ เช่น
engagement-codelab
- คลิกสร้างโปรเจ็กต์
- แทนที่จะเลือกหมวดหมู่ ให้เลื่อนลงไปที่ส่วนตัวเลือกเพิ่มเติมแล้วคลิกการ์ดการสนทนา
- คลิกสร้างการกระทําเพื่อขยายตัวเลือก แล้วเลือกเพิ่มการกระทํา
- คลิกเพิ่มการดําเนินการแรก
- ในกล่องโต้ตอบสร้างการดําเนินการ ให้เลือกความตั้งใจที่กําหนดเอง แล้วคลิกสร้างเพื่อเปิดคอนโซล Dialogflow
- ในหน้าการสร้างกล่องโต้ตอบ Dialogflow Console ให้คลิกสร้าง
- คลิก
(ไอคอนรูปเฟือง) ในการนําทางด้านซ้าย
- คลิกส่งออกและนําเข้า จากนั้นคลิกกู้คืนจาก Zip
- อัปโหลดไฟล์
agent.zip
จากไดเรกทอรี/user-engagement-codelab-nodejs/start/
ที่คุณดาวน์โหลดไว้ก่อนหน้านี้ - พิมพ์
RESTORE
แล้วคลิกกู้คืน - คลิกเสร็จ
ดําเนินการตามคําสั่งซื้อ
เมื่อโปรเจ็กต์การดําเนินการและ Agent ของ Dialogflow พร้อมแล้ว ให้ทําให้ไฟล์ index.js
ในเครื่องใช้งานได้โดยใช้ Firebase Functions CLI
เรียกใช้คําสั่งต่อไปนี้จากไดเรกทอรี /user-engagement-codelab-nodejs/start/functions/
ของการโคลนไฟล์ฐาน
firebase use <PROJECT_ID>
npm install
firebase deploy
อีกสักครู่ คุณควรเห็น "ใช้งานเสร็จสมบูรณ์" ซึ่งระบุว่าคุณทําให้เว็บฮุคใช้งานได้กับ Firebase เรียบร้อยแล้ว
เรียกดู URL การทําให้ใช้งานได้
คุณต้องระบุ Dialogflow โดยใช้ URL ไปยังฟังก์ชันระบบคลาวด์ หากต้องการเรียก URL นี้ ให้ทําตามขั้นตอนต่อไปนี้
- เปิดคอนโซล Firebase
- เลือกโปรเจ็กต์การดําเนินการจากรายการตัวเลือก
- ไปที่พัฒนาฟังก์ชัน gt; ฟังก์ชัน ในแถบนําทางด้านซ้าย หากระบบแจ้งให้คุณ "เลือกการตั้งค่าการแชร์ข้อมูล& คุณสามารถไม่สนใจตัวเลือกนี้ได้โดยคลิกดําเนินการนี้ในภายหลัง
- ในแท็บแดชบอร์ด คุณจะเห็นรายการสําหรับ "fulfillment" พร้อม URL ใต้ทริกเกอร์ บันทึก URL นี้ เนื่องจากคุณจะต้องคัดลอกลงใน Dialogflow ในส่วนถัดไป
ตั้งค่า URL ของเว็บฮุคใน Dialogflow
ตอนนี้คุณจะต้องอัปเดต Agent ของ Dialogflow เพื่อใช้เว็บฮุคเพื่อดําเนินการ โดยคุณต้องทำตามขั้นตอนต่อไปนี้
- เปิดคอนโซล Dialogflow (ปิดคอนโซล Firebase ได้หากต้องการ)
- คลิก Fulfillment ในการนําทางด้านซ้าย
- เปิดใช้เว็บฮุค
- วาง URL ที่คัดลอกจากแดชบอร์ด Firebase หากยังไม่ปรากฏ
- คลิกบันทึก
ยืนยันว่าตั้งค่าโปรเจ็กต์อย่างถูกต้องแล้ว
ผู้ใช้ควรเรียกใช้การดําเนินการเกี่ยวกับ Action Gym ได้ ซึ่งรวมถึงการตอบกลับข้อความที่ฮาร์ดโค้ดด้วยเวลาทําการและการตอบกลับข้อความที่ระบุกําหนดเวลาของชั้นเรียนสําหรับแต่ละวันในสัปดาห์
หากต้องการทดสอบการดําเนินการในเครื่องจําลองการดําเนินการ ให้ทําดังนี้
- ในการนําทางด้านซ้ายของ Dialogflow ในคอนโซล ให้คลิกการผสาน > Google Assistant
- ตรวจสอบว่าเปิดใช้แสดงตัวอย่างอัตโนมัติแล้ว และคลิกทดสอบเพื่ออัปเดตโปรเจ็กต์การดําเนินการ
- เครื่องจําลองการดําเนินการจะโหลดโปรเจ็กต์การดําเนินการของคุณ หากต้องการทดสอบการดําเนินการ ให้พิมพ์
Talk to my test app
ในช่องอินพุต แล้วกด Enter - คุณควรเห็นการตอบกลับที่ต้อนรับสู่ Action Gym ลองทําตามข้อความที่แจ้งเพื่อสนทนาต่อและตรวจดูว่าการดําเนินการตามคําสั่งซื้อของคุณมีการตอบสนองสําหรับแต่ละอินพุต
3 เพิ่มการสมัครรับข้อมูลอัปเดตรายวัน
วิธีทั่วไปในการมีส่วนร่วมกับผู้ใช้คือ การให้ข้อมูลแก่ผู้ใช้เมื่อเป็นประโยชน์มากที่สุด การอัปเดตนี้เสนอตัวเลือกให้ผู้ใช้สมัครใช้บริการข้อมูลอัปเดตรายวันของ Intent เพื่อส่งการแจ้งเตือน Assistant ที่ลิงก์ไปยังการดําเนินการดังกล่าวโดยตรง
ในขั้นตอนนี้ คุณจะได้เรียนรู้เกี่ยวกับการสมัครใช้บริการอัปเดตรายวันและเพิ่มลงในความตั้งใจรายการชั้นเรียนใน Action' หลังจากทําตามวิธีการต่อไปนี้ การสนทนาของ Action' จะมีลักษณะเหมือนแผนภาพต่อไปนี้
แล้วผู้ใช้จะมีส่วนร่วมได้อย่างไร
ผู้ใช้สมาร์ทโฟนอาจคุ้นเคยกับข้อความ Push ที่ให้ข้อมูลและข้อมูลอัปเดตเฉพาะแอป การสมัครรับข้อมูลอัปเดตรายวันเป็นวิธีง่ายๆ ในการเข้าถึงผู้ใช้บนอุปกรณ์เคลื่อนที่นอก Assistant ซึ่งกรณีที่ความตั้งใจที่คุณส่งข้อมูลอัปเดตจะให้คุณค่าแก่ผู้ใช้ในทุกๆ วันต่อไป
การอัปเดตรายวันเป็นเครื่องมือที่มีประโยชน์ในการมีส่วนร่วม แต่ไม่ควรรวมอยู่ในการดําเนินการทั้งหมด ลองทําตามเคล็ดลับเหล่านี้เมื่อตัดสินใจว่าจะเพิ่มการติดตามการอัปเดตรายวันลงในการดําเนินการหรือไม่
- ตรวจสอบว่าการอัปเดตรายวันจะทําให้ผู้ใช้เห็นข้อมูลที่เป็นประโยชน์และแตกต่างกันในแต่ละวัน หากแตะข้อความแจ้งอัปเดตรายวันในข้อความแจ้งเดียวกันทุกครั้ง ผู้ใช้อาจยกเลิกการสมัครหลังจากผ่านไป 2 วัน
- ตรวจสอบว่ากล่องโต้ตอบของคุณเหมาะกับผู้ใช้หากข้ามไปยังจุดประสงค์การอัปเดตประจําวันโดยตรง ผู้ใช้ไม่ควรเริ่มใหม่ตั้งแต่ต้นของการสนทนา ดังนั้นผู้ใช้ไม่ควรจะมีบริบทมากเกินไป
- แสดงประโยชน์ของการดําเนินการให้ผู้ใช้เห็นก่อนที่จะแจ้งให้ผู้ใช้สมัครใช้บริการอัปเดตรายวัน ผู้ใช้ของคุณควรคิด &ใบเสนอราคา ฉันต้องการเนื้อหานี้ทุกวัน&เสนอราคา เมื่อพวกเขามีตัวเลือกในการสมัครรับข้อมูล
- อย่าทําให้ผู้ใช้มีคําแนะนํามากเกินไปในการติดตาม เสนอการสมัครใช้บริการแบบอัปเดตรายวันทันทีหลังแสดงสิ่งที่ผู้ใช้สมัครใช้บริการแล้ว และหลีกเลี่ยงการทําให้ผู้ใช้สับสนเกี่ยวกับข้อมูลนั้นที่อื่น
- กําหนดให้การสนทนาสั้นลงหลังจากเรียกให้อัปเดตการอัปเดตทํางานแล้ว การอัปเดตประจําวันส่วนใหญ่ควรประกอบด้วยการตอบกลับครั้งเดียวเท่านั้น จากนั้นปิดได้โดยไม่ต้องให้ผู้ใช้ป้อน
เปิดรับข้อมูลอัปเดตรายวัน
คุณอาจเพิ่มการสมัครรับข้อมูลอัปเดตรายวันไว้ใน Intent ต้อนรับ ซึ่งจะทําให้ผู้ใช้เริ่มต้นการสนทนา หรือมีเจตนาที่เจาะจงมากขึ้นเพื่อ Deep Link ไปยังตําแหน่งที่ต้องการในการสนทนา สําหรับ Codelab นี้ ความตั้งใจของรายการชั้นเรียนจะเหมาะสมที่สุดเนื่องจากกล่องโต้ตอบจะมีการเปลี่ยนแปลงทุกวัน และผู้ใช้จึงอาจรู้สึกว่าได้รับการช่วยเตือนว่าชั้นเรียนใดพร้อมให้บริการ
ทําตามขั้นตอนต่อไปนี้เพื่อเปิดใช้การอัปเดตประจําวันสําหรับ Intent Class List
- ในคอนโซลการดําเนินการ ให้คลิกแท็บพัฒนา และเลือกการดําเนินการในแถบนําทางด้านซ้าย
- คลิกรายการชั้นเรียนภายใต้รายการการดําเนินการ
- ในส่วนการมีส่วนร่วมของผู้ใช้ ให้สลับตัวเลือกคุณต้องการเสนอการอัปเดตรายวันแก่ผู้ใช้หรือไม่
- ตั้งชื่อเนื้อหาที่สื่อความหมายซึ่งอธิบายการอัปเดตรายวัน บริบทจะเป็น " คุณต้องการให้ฉันส่งคําประจําวันทุกวันตอนไหน ดังนั้นโปรดตรวจสอบให้แน่ใจว่าชื่อที่สื่อความหมายและมีความหมายเมื่ออ่านออกเสียง สําหรับตัวอย่างนี้ ให้ตั้งค่าชื่อเนื้อหาเป็น
list of upcoming Action Gym classes
- คลิกบันทึกที่ด้านบนของหน้า
ตั้งค่า Dialogflow
ทําตามขั้นตอนต่อไปนี้ในคอนโซล Dialogflow เพื่อสร้างความตั้งใจสําหรับขั้นตอนการติดตามอัปเดตรายวัน
แจ้งให้ผู้ใช้สมัครใช้บริการ
- สร้างความตั้งใจใหม่เพื่อจัดการผู้ใช้ที่ขอให้ติดตามอัปเดตรายวัน ในคอนโซล Dialogflow ให้คลิกปุ่ม + ถัดจากความตั้งใจในการนําทางด้านซ้ายเพื่อสร้าง Intent ใหม่
- ตั้งชื่อความตั้งใจใหม่นี้
Setup Updates
- ในส่วนวลีการฝึกอบรม ให้เพิ่มนิพจน์ผู้ใช้ต่อไปนี้
Send daily reminders
Reminder
Remind me
Updates
Upcoming classes
- ในส่วนการดําเนินการตามคําสั่งซื้อ ให้สลับตัวเลือกเปิดใช้การเรียกเว็บฮุคสําหรับความตั้งใจนี้
- คลิกบันทึกที่ด้านบนของหน้า
จัดการการตัดสินใจของผู้ใช้
- กําหนดความตั้งใจใหม่เพื่อจัดการกับการตอบกลับข้อความแจ้งการติดตามอัปเดตรายวันของผู้ใช้ คลิกปุ่ม + ถัดจาก Intent ในการนําทางด้านซ้ายเพื่อสร้าง Intent ใหม่
- ตั้งชื่อความตั้งใจใหม่นี้
Confirm Updates
- เพิ่ม
actions_intent_REGISTER_UPDATE
ในส่วนเหตุการณ์ เหตุการณ์ Dialogflow นี้จะถูกเรียกให้แสดงเมื่อผู้ใช้อัปเดตการสมัครใช้บริการรายวันจนเสร็จสิ้น ไม่ว่าผู้ใช้จะสิ้นสุดการสมัครใช้บริการหรือไม่ก็ตาม - ในส่วนการดําเนินการตามคําสั่งซื้อ ให้สลับตัวเลือกเปิดใช้การเรียกเว็บฮุคสําหรับความตั้งใจนี้
- คลิกบันทึกที่ด้านบนของหน้า
ดําเนินการตามคําสั่งซื้อ
หากต้องการดําเนินการตามคําสั่งซื้อในเว็บฮุค ให้ทําตามขั้นตอนต่อไปนี้
ทรัพยากร Dependency สําหรับการโหลด
ในไฟล์
index.js
ให้อัปเดตฟังก์ชัน require()
เพื่อเพิ่มแพ็กเกจ RegisterUpdate
จากแพ็กเกจ actions-on-google
เพื่อให้การนําเข้ามีลักษณะดังนี้
index.js
const {
dialogflow,
Suggestions,
RegisterUpdate,
} = require('actions-on-google');
อัปเดตชิปคําแนะนํา
ในไฟล์
index.js
ให้เพิ่มรายการ DAILY
ลงในรายชื่อชิปคําแนะนํา เพื่อให้คําจํากัดความของ Suggestion
มีลักษณะดังนี้
index.js
// Suggestion chip titles
const Suggestion = {
HOURS: 'Ask about hours',
CLASSES: 'Learn about classes',
DAILY: 'Send daily reminders',
};
เพิ่มการดําเนินการตามคําสั่งซื้อสําหรับความตั้งใจใหม่
เมื่อผู้ใช้ต้องการสมัครใช้บริการ ให้เริ่มสมัครใช้บริการการสมัครใช้บริการรายวันโดยเรียกผู้ช่วย RegisterUpdate
ด้วย Intent ของการอัปเดต (รายการชั้นเรียน) และประเภท (DAILY
) หลังจากสิ้นสุดการสมัครใช้บริการแล้ว Assistant จะเรียกใช้เหตุการณ์ actions_intent_REGISTER_UPDATE
ด้วยอาร์กิวเมนต์ status
ซึ่งอธิบายว่าการสมัครใช้บริการสําเร็จหรือไม่ ส่งข้อความแจ้งติดตามผลแก่ผู้ใช้ที่เปลี่ยนไปตามสถานะการติดตาม
ให้เพิ่มโค้ดต่อไปนี้ในไฟล์
index.js
index.js
// Start opt-in flow for daily updates
app.intent('Setup Updates', (conv) => {
conv.ask(new RegisterUpdate({
intent: 'Class List',
frequency: 'DAILY',
}));
});
// Confirm outcome of opt-in for daily updates
app.intent('Confirm Updates', (conv, params, registered) => {
if (registered && registered.status === 'OK') {
conv.ask(`Gotcha, I'll send you an update everyday with the ` +
'list of classes. Can I help you with anything else?');
} else {
conv.ask(` I won't send you daily reminders. Can I help you with anything else?`);
}
if (conv.screen) {
conv.ask(new Suggestions([Suggestion.HOURS, Suggestion.CLASSES]));
}
});
แสดงข้อความแจ้งทางเลือกให้ผู้ใช้
การตอบกลับรายการชั้นเรียนของคุณจะเสนอการสมัครรับข้อมูลแบบรายวันในช่วงท้าย แต่จะทําให้เกิดปัญหา ระบบจะทริกเกอร์คําตอบเดียวกันนี้เมื่อผู้ใช้แตะการแจ้งเตือนการอัปเดตรายวัน ระบบจะยังขอให้สมัครรับข้อมูลการอัปเดตรายวันแม้จะเพิ่งมาจากการตอบกลับก็ตาม คุณจะทําให้ผู้ใช้คิดว่าต้องสมัครใช้บริการอีกครั้งอย่างไร
โชคดีที่อาร์กิวเมนต์ conv
ของออบเจ็กต์มีข้อมูลเกี่ยวกับตําแหน่งที่ผู้ใช้เริ่มการสนทนา ให้คุณตรวจสอบอาร์กิวเมนต์ conv
เพื่อดูว่ามีส่วน UPDATES
หรือไม่ ซึ่งบ่งชี้ว่าผู้ใช้เริ่มการสนทนาจากการแจ้งเตือนการอัปเดตรายวันและเปลี่ยนการตอบกลับตามความเหมาะสม หรือจะใช้กล่องโต้ตอบการสนทนานี้เพื่อปิดกล่องโต้ตอบทันทีที่ส่งรายชื่อชั้นเรียนก็ได้ ซึ่งเราจะทําตามแนวทางปฏิบัติแนะนําในการทําให้ข้อมูลอัปเดตรายวันสั้นที่สุด
ในไฟล์
index.js
ให้แทนที่โค้ดต่อไปนี้
index.js
// Class list intent handler
app.intent('Class List', (conv, {day}) => {
if (!day) {
day = DAYS[new Date().getDay()];
}
const classes =
[...new Set(schedule.days[day].map((d) => `${d.name} at ${d.startTime}`))]
.join(', ');
const classesMessage =
`On ${day} we offer the following classes: ${classes}. ` +
`Can I help you with anything else?`;
conv.ask(classesMessage);
if (conv.screen) {
conv.ask(new Suggestions([Suggestion.HOURS]));
}
});
ด้วยสิ่งนี้
index.js
// Class list intent handler
app.intent('Class List', (conv, {day}) => {
if (!day) {
day = DAYS[new Date().getDay()];
}
const classes =
[...new Set(schedule.days[day].map((d) => `${d.name} at ${d.startTime}`))]
.join(', ');
let classesMessage = `On ${day} we offer the following classes: ${classes}. `;
// If the user started the conversation from the context of a daily update,
// the conv's arguments will contain an 'UPDATES' section.
let engagement = conv.arguments.get('UPDATES');
// Check the conv arguments to tailor the conversation based on the context.
if (engagement) {
classesMessage += `Hope to see you soon at Action Gym!`;
conv.close(classesMessage);
} else {
classesMessage += `Would you like me to send you daily reminders of upcoming classes, or can I help you with anything else?`;
conv.ask(classesMessage);
if (conv.screen) {
conv.ask(new Suggestions([Suggestion.DAILY, Suggestion.HOURS]));
};
};
});
ทดสอบการอัปเดตรายวัน
จากนั้นเรียกใช้คําสั่งต่อไปนี้เพื่อติดตั้งใช้งานโค้ดเว็บฮุคที่อัปเดตกับ Firebase
firebase deploy
หากต้องการทดสอบข้อความแจ้งที่กําหนดเองในเครื่องจําลอง Actions ให้ทําตามขั้นตอนต่อไปนี้
- ในคอนโซลการดําเนินการ ให้ไปที่ทดสอบ
- พิมพ์
Talk to my test app
ในช่อง Input แล้วกด Enter - พิมพ์
Learn about classes
แล้วกด Enter การตอบกลับของคุณควรแสดงการส่งการช่วยเตือนประจําวันด้วย - พิมพ์
Send daily reminders
แล้วกด Enter - พิมพ์เวลาที่คุณต้องการดูการอัปเดตและกด Enter สําหรับการทดสอบ ให้พยายามตอบกลับภายใน 3-5 นาทีก่อนเวลาปัจจุบัน
ในอุปกรณ์เคลื่อนที่ คุณควรได้รับการแจ้งเตือนจาก Assistant ตามเวลาที่ระบุไว้ให้อัปเดต โปรดทราบว่าการแจ้งเตือนนี้อาจใช้เวลา 2-3 นาทีจึงจะปรากฏ แตะการแจ้งเตือน ซึ่งจะทํา Deep Link ไปยัง Intent ของรายการชั้นเรียนได้โดยตรงใน Assistant ซึ่งจะแสดงรายการคลาสที่กําลังจะเกิดขึ้น
4 เพิ่มข้อความ Push
หรืออีกทางเลือกหนึ่งในการดึงดูดผู้ใช้นอกการดําเนินการของคุณ โดยเรียกใช้ Actions API เพื่อส่งข้อความ Push ไปยังผู้ใช้ได้ การแจ้งเตือนเหล่านี้จะไม่กําหนดเวลาโดยอัตโนมัติ ซึ่ง Assistant จะไม่กําหนดเวลาการอัปเดตโดยอัตโนมัติเพื่อให้คุณส่งได้ทุกเมื่อ
ในขั้นตอนนี้ คุณจะได้ทราบวิธีใช้ข้อความ Push ในการดําเนินการโดยเพิ่มความตั้งใจยกเลิกชั้นเรียนใหม่ และส่งการแจ้งเตือนให้ผู้ใช้ทราบเกี่ยวกับการยกเลิกชั้นเรียน นอกจากนี้ คุณจะตั้งค่าคอมโพเนนต์ 3 รายการต่อไปนี้เพื่อส่งการแจ้งเตือนด้วย
- บัญชี API การดําเนินการ - คุณส่งการแจ้งเตือนให้ผู้ใช้โดยการส่งคําขอ
POST
ไปยัง API ดังนั้นคุณจะต้องตั้งค่าบัญชีบริการและข้อมูลเข้าสู่ระบบให้มีผลกับ API นี้ - โปรแกรมช่วยจัดการสิทธิ์ - คุณต้องมีสิทธิ์ของผู้ใช้ในการเข้าถึงรหัสผู้ใช้ที่จําเป็นในการส่งข้อความ Push ให้ผู้ใช้ ในตัวอย่างนี้ คุณจะใช้ฟังก์ชันไลบรารีของไคลเอ็นต์เพื่อเรียกโปรแกรมช่วยเรื่องสิทธิ์และขอรหัสนี้
- พื้นที่เก็บข้อมูล - หากต้องการส่งข้อความ Push ไปยังผู้ใช้นอกการสนทนา คุณต้องจัดเก็บรหัสผู้ใช้ไว้ในที่ที่เรียกคืนได้ตามที่ต้องการ ในตัวอย่างนี้ คุณจะตั้งค่าฐานข้อมูล Firestore เพื่อจัดเก็บข้อมูลสําหรับผู้ใช้แต่ละราย
หลังจากทําตามวิธีการเหล่านี้ คุณต้องเพิ่มกล่องโต้ตอบต่อไปนี้ลงในการสนทนาของการดําเนินการ
แล้วผู้ใช้จะมีส่วนร่วมได้อย่างไร
ผู้ใช้สมาร์ทโฟนอาจคุ้นเคยกับข้อความ Push ที่ให้ข้อมูลและข้อมูลอัปเดตเฉพาะแอป ข้อความ Push คือวิธีที่ยืดหยุ่นในการเข้าถึงผู้ใช้ในอุปกรณ์เคลื่อนที่นอก Assistant หากผู้ใช้มีเหตุผลที่น่าเชื่อถือในการเปิดใช้ การอัปเดตประจําวันช่วยให้ผู้ใช้ทราบว่าได้รับการแจ้งเตือนเป็นรายวันแล้ว แต่เมื่อมีข้อความ Push ผู้ใช้ไม่ทราบเลยว่าจะเลือกรับการแจ้งเตือนที่ไม่บ่อยหรือไม่ หรือจะได้รับการแจ้งเตือนหลายรายการต่อวัน
ข้อความ Push เป็นเครื่องมือที่มีประโยชน์สําหรับการมีส่วนร่วม แต่ไม่ควรรวมอยู่ในการดําเนินการทั้งหมด ลองทําตามเคล็ดลับเหล่านี้เมื่อตัดสินใจว่าจะเพิ่มข้อความ Push ลงในการดําเนินการหรือไม่
- วางแผนตัวอย่างตารางเวลาสําหรับข้อความ Push หากวางแผนที่จะส่งข้อความ Push วันละ 1 รายการเท่านั้น ให้พิจารณาใช้การอัปเดตรายวันแทน
- ตรวจสอบว่าข้อความ Push จะให้ข้อมูลที่เป็นประโยชน์ทุกครั้งที่ได้รับ การแจ้งเตือนอาจ Deep Link ไปยังความตั้งใจของการดําเนินการอย่างใดอย่างหนึ่ง ดังนั้นโปรดตรวจสอบว่า Intent มีประโยชน์และมีความเกี่ยวข้อง
- ตรงไปตรงมาเมื่อขอให้ผู้ใช้สมัครใช้บริการข้อความ Push บุตรหลานควรเข้าใจสิ่งที่จะเกิดขึ้นกับข้อความ Push แต่ละรายการและทราบความถี่ในการส่งการแจ้งเตือน
เปิดใช้ Actions API
- เปิด Google Cloud Console และเลือกชื่อโปรเจ็กต์การดําเนินการในเมนูแบบเลื่อนลง
- ในเมนูการนําทาง (☰) ให้ไปที่ API และ &บริการ > ไลบรารี
- ค้นหา Actions API แล้วคลิก Enable
สร้างบัญชีบริการ
Actions API กําหนดให้มีการตรวจสอบสิทธิ์ คุณจึงต้องสร้างบัญชีบริการเพื่อส่งคําขอ ทําตามขั้นตอนต่อไปนี้เพื่อสร้างและติดตั้งคีย์บัญชีบริการสําหรับ Actions API
- ในเมนูการนําทางของ Google Cloud Console #☰) ให้ไปที่ API และเครื่องหมายบริการ & ข้อมูลเข้าสู่ระบบ
- คลิกสร้างข้อมูลเข้าสู่ระบบ > คีย์บัญชีบริการ
- ในเมนูแบบเลื่อนลงบัญชีบริการ ให้เลือกบัญชีบริการใหม่
- กรอกข้อมูลต่อไปนี้
- ชื่อบัญชีบริการ:
service-account
- บทบาท: เจ้าของโปรเจ็กต์
- รหัสบัญชีบริการ:
service-account
(ตามด้วย @<project_id>.iam.gserviceaccount.com) - ประเภทคีย์: JSON
- คลิกสร้าง
- ย้ายไฟล์ JSON ที่ดาวน์โหลดไปยังไดเรกทอรี /user-engagement-codelab/start/functions/ ของโปรเจ็กต์
- เปลี่ยนชื่อไฟล์ JSON เป็น
service-account.json
เปิดใช้ Firestore
หากต้องการส่งการแจ้งเตือนนอกการสนทนา คุณต้องมีวิธีจัดเก็บรหัสผู้ใช้ซึ่งอ้างอิงได้จากโค้ดการแจ้งเตือน สําหรับตัวอย่างนี้ เราจะใช้ฐานข้อมูล Firestore เพื่อจัดเก็บรหัสผู้ใช้ของผู้ใช้ที่สมัครใช้บริการ
ทําตามขั้นตอนต่อไปนี้เพื่อสร้างฐานข้อมูล Firestore สําหรับการดําเนินการ
- ในคอนโซล Firebase ให้เลือกชื่อโปรเจ็กต์การดําเนินการ
- ในการนําทางด้านซ้าย ให้ไปที่พัฒนา > ฐานข้อมูล แล้วคลิกสร้างฐานข้อมูล
- เลือกเริ่มต้นในโหมดทดสอบ
- คลิก Enable
ตั้งค่า Dialogflow
ทําตามขั้นตอนต่อไปนี้ในคอนโซล Dialogflow เพื่อสร้างขั้นตอนการเลือกใช้ข้อความ Push
แจ้งให้ผู้ใช้สมัครใช้บริการ
- กําหนดความตั้งใจใหม่เพื่อจัดการผู้ใช้ที่ขอให้ผู้ใช้สมัครรับข้อความ Push สําหรับชั้นเรียนที่ยกเลิก ในคอนโซล Dialogflow ให้คลิกปุ่ม + ถัดจากความตั้งใจในการนําทางด้านซ้ายเพื่อสร้าง Intent ใหม่
- ตั้งชื่อความตั้งใจใหม่นี้
Setup Push Notifications
- ในส่วนวลีการฝึกอบรม ให้เพิ่มนิพจน์ผู้ใช้ต่อไปนี้
Subscribe to notifications
Send notification
Notify me
Send class notifications
Cancelled notifications
- ในส่วนการดําเนินการตามคําสั่งซื้อ ให้สลับตัวเลือกเปิดใช้การเรียกเว็บฮุคสําหรับความตั้งใจนี้
- คลิกบันทึกที่ด้านบนของหน้า
จัดการการตัดสินใจของผู้ใช้
- สร้าง Intent ใหม่เพื่อจัดการการตอบกลับของผู้ใช้ต่อข้อความการสมัครใช้บริการการแจ้งเตือนข้อความ Push คลิกปุ่ม + ถัดจาก Intent ในการนําทางด้านซ้ายเพื่อสร้าง Intent ใหม่
- ตั้งชื่อความตั้งใจใหม่นี้
Confirm Push Notifications
- เพิ่ม
actions_intent_PERMISSION
ในส่วนเหตุการณ์ เหตุการณ์ Dialogflow นี้จะทริกเกอร์เมื่อผู้ใช้ดําเนินการตามขั้นตอนการสมัครการแจ้งเตือนข้อความ Push หลังสิ้นสุดการสมัครใช้บริการ - ในส่วนการดําเนินการตามคําสั่งซื้อ ให้สลับตัวเลือกเปิดใช้การเรียกเว็บฮุคสําหรับความตั้งใจนี้
- คลิกบันทึกที่ด้านบนของหน้า
จัดการข้อความ Push
คุณลิงก์ข้อความ Push กับ Intent ที่เฉพาะเจาะจงได้ ผู้ใช้ที่แตะข้อความ Push จะ Deep Link ไปยังความตั้งใจนั้นโดยตรง ในตัวอย่างนี้ ให้เพิ่ม Intent ใหม่สําหรับข้อความ Push ที่มีรายละเอียดเกี่ยวกับชั้นเรียนที่ยกเลิก
ทําตามขั้นตอนต่อไปนี้เพื่อเพิ่มความตั้งใจที่จะทริกเกอร์โดยผู้ใช้โดยแตะข้อความ Push
- ในคอนโซล Dialogflow ให้คลิกปุ่ม + ถัดจากความตั้งใจในการนําทางด้านซ้ายเพื่อสร้าง Intent ใหม่
- ตั้งชื่อความตั้งใจใหม่นี้
Class Canceled
- ในส่วนวลีการฝึกอบรม ให้เพิ่ม
Cancelations
เป็นนิพจน์ผู้ใช้ - ในส่วนการดําเนินการตามคําสั่งซื้อ ให้สลับตัวเลือกเปิดใช้การเรียกเว็บฮุคสําหรับความตั้งใจนี้
- คลิกบันทึกที่ด้านบนของหน้า
ส่งการแจ้งเตือนการทดสอบระหว่างการสนทนา
ในเวอร์ชันที่ใช้งานจริง คุณควรมีสคริปต์แยกต่างหากจากโค้ดการดําเนินการการดําเนินการที่ส่งข้อความ Push สําหรับตัวอย่างนี้ ให้สร้าง Intent ที่เรียกใช้ได้เพื่อส่งข้อความ Push ขณะพูดการดําเนินการ ความตั้งใจนี้ใช้สําหรับวัตถุประสงค์ในการแก้ไขข้อบกพร่องเท่านั้น ในทางปฏิบัติ ข้อความ Push ไม่ควรได้รับการจัดการโดยการดําเนินการที่คุณทําจนเสร็จสมบูรณ์หรือถูกทริกเกอร์เป็นส่วนหนึ่งของการสนทนา Action'
ทําตามขั้นตอนต่อไปนี้เพื่อสร้างความตั้งใจในการทดสอบข้อความ Push
- สําหรับการทดสอบและแก้ไขข้อบกพร่อง ให้ตั้งค่าความตั้งใจใหม่ที่ช่วยให้คุณสามารถส่งข้อความ Push ไปยังผู้ใช้ที่ติดตามได้ ในคอนโซล Dialogflow ให้คลิกปุ่ม + ถัดจากความตั้งใจในการนําทางด้านซ้ายเพื่อสร้าง Intent ใหม่
- ตั้งชื่อความตั้งใจใหม่นี้
Test Notification
- ในส่วนวลีการฝึกอบรม ให้เพิ่ม
Test notification
เป็นนิพจน์ผู้ใช้ - ในส่วนการดําเนินการตามคําสั่งซื้อ ให้สลับตัวเลือกเปิดใช้การเรียกเว็บฮุคสําหรับความตั้งใจนี้
- คลิกบันทึกที่ด้านบนของหน้า
เปิดข้อความ Push
ทําตามขั้นตอนต่อไปนี้เพื่อเปิดใช้ข้อความ Push สําหรับความตั้งใจยกเลิกชั้นเรียน
- ในคอนโซล กล่องโต้ตอบ ให้ไปที่การผสานในแถบนําทาง
- คลิกการตั้งค่าการผสานรวมในการ์ด Google Assistant
- เพิ่มคลาสที่ยกเลิกเป็นความตั้งใจการเรียกใช้โดยนัย ขั้นตอนนี้จําเป็นสําหรับ Dialogflow เพื่อให้ทราบว่าผู้ใช้จะเริ่มการสนทนาด้วยความตั้งใจยกเลิกชั้นเรียนได้ (โดยแตะข้อความ Push)
- คลิกปิด
- ในคอนโซลการดําเนินการ ให้คลิกแท็บพัฒนา และเลือกการดําเนินการในแถบนําทางด้านซ้าย
- คลิกยกเลิกชั้นเรียนภายใต้รายการการดําเนินการ
- ในส่วนการมีส่วนร่วมของผู้ใช้ ให้สลับตัวเลือกคุณต้องการส่งข้อความ Push ไหม
- ตั้งชื่อเนื้อหาที่สื่อความหมายซึ่งอธิบายข้อความ Push บริบทจะเป็น " จะเป็นอะไรไหมถ้าฉันส่งข้อความ Push สําหรับ quoquot ดังนั้นตรวจสอบให้แน่ใจว่าชื่อที่สื่อความหมายและมีความหมายเมื่อพูด สําหรับตัวอย่างนี้ ให้ตั้งค่าชื่อเนื้อหาเป็น
class cancelations
- คลิกบันทึกที่ด้านบนของหน้า
ดําเนินการตามคําสั่งซื้อ
หากต้องการดําเนินการตามคําสั่งซื้อในเว็บฮุค ให้ทําตามขั้นตอนต่อไปนี้
ทรัพยากร Dependency สําหรับการโหลด
ในไฟล์
index.js
ให้อัปเดตฟังก์ชัน require()
เพื่อเพิ่มแพ็กเกจ UpdatePermission
จากแพ็กเกจ actions-on-google
เพื่อให้การนําเข้ามีลักษณะดังนี้
index.js
const {
dialogflow,
Suggestions,
RegisterUpdate,
UpdatePermission,
} = require('actions-on-google');
อัปเดตชิปคําแนะนํา
ในไฟล์
index.js
ให้เพิ่มรายการ NOTIFICATIONS
ลงในรายชื่อชิปคําแนะนํา เพื่อให้คําจํากัดความของ Suggestion
มีลักษณะดังนี้
index.js
// Suggestion chip titles
const Suggestion = {
HOURS: 'Ask about hours',
CLASSES: 'Learn about classes',
DAILY: 'Send daily reminders',
NOTIFICATIONS: 'Get notifications',
};
ตั้งค่าการนําเข้าใหม่
ในการเชื่อมต่อกับฐานข้อมูล Firestore ให้เพิ่มแพ็กเกจ firebase-admin
และเพิ่มค่าคงที่ของช่องที่จัดเก็บไว้ในฐานข้อมูล นอกจากนี้ ให้นําเข้าแพ็กเกจ google-auth-library
และ request
เพื่อจัดการการตรวจสอบสิทธิ์และคําขอไปยัง Actions API
ในไฟล์
index.js
ให้เพิ่มโค้ดต่อไปนี้ลงในการนําเข้า
index.js
// Firebase admin import
const admin = require('firebase-admin');
// Initialize Firestore
admin.initializeApp();
const db = admin.firestore();
// Firestore constants
const FirestoreNames = {
INTENT: 'intent',
USER_ID: 'userId',
USERS: 'users',
};
// Actions API authentication imports
const {auth} = require('google-auth-library');
const request = require('request');
เสนอให้ตั้งค่าการแจ้งเตือนการยกเลิกชั้นเรียน
ในไฟล์
index.js
ให้แทนที่โค้ดต่อไปนี้
index.js
// Class list intent handler
app.intent('Class List', (conv, {day}) => {
if (!day) {
day = DAYS[new Date().getDay()];
}
const classes =
[...new Set(schedule.days[day].map((d) => `${d.name} at ${d.startTime}`))]
.join(', ');
let classesMessage = `On ${day} we offer the following classes: ${classes}. `;
// If the user started the conversation from the context of a daily update,
// the conv's arguments will contain an 'UPDATES' section.
let engagement = conv.arguments.get('UPDATES');
// Check the conv arguments to tailor the conversation based on the context.
if (engagement) {
classesMessage += `Hope to see you soon at Action Gym!`;
conv.close(classesMessage);
} else {
classesMessage += `Would you like me to send you daily reminders of upcoming classes, or can I help you with anything else?`;
conv.ask(classesMessage);
if (conv.screen) {
conv.ask(new Suggestions([Suggestion.DAILY, Suggestion.HOURS]));
};
};
});
ด้วยสิ่งนี้
index.js
// Class list intent handler
app.intent('Class List', (conv, {day}) => {
if (!day) {
day = DAYS[new Date().getDay()];
}
const classes =
[...new Set(schedule.days[day].map((d) => `${d.name} at ${d.startTime}`))]
.join(', ');
let classesMessage = `On ${day} we offer the following classes: ${classes}. `;
// If the user started the conversation from the context of a daily update,
// the conv's arguments will contain an 'UPDATES' section.
let engagement = conv.arguments.get('UPDATES');
// Check the conv arguments to tailor the conversation based on the context.
if (engagement) {
classesMessage += `Hope to see you soon at Action Gym!`;
conv.close(classesMessage);
} else {
classesMessage += `Would you like to receive daily reminders of upcoming classes, subscribe to notifications about cancelations, or can I help you with anything else?`;
conv.ask(classesMessage);
if (conv.screen) {
conv.ask(new Suggestions([Suggestion.DAILY, Suggestion.NOTIFICATIONS,
Suggestion.HOURS]));
};
};
});
เพิ่มการดําเนินการตามคําสั่งซื้อสําหรับความตั้งใจใหม่
เมื่อผู้ใช้บอกว่าต้องการติดตามข้อความ Push ให้โทรหาโปรแกรมช่วยเหลือของ UpdatePermission
เพื่อขอสิทธิ์จากผู้ใช้ หากเป็นเช่นนั้น อาร์กิวเมนต์ PERMISSION
จะถูกเพิ่มไปยังอาร์กิวเมนต์ conv
ของออบเจ็กต์ ##39 ซึ่งคุณสามารถตรวจสอบเพื่อเปลี่ยนการสนทนาได้
เมื่อคุณได้รับสิทธิ์แล้ว ให้นํารหัสผู้ใช้จากอาร์กิวเมนต์ออบเจ็กต์ conv
##39 มาบันทึกไว้ในฐานข้อมูล และคุณจะส่ง User-ID นี้ไปยัง Actions API ได้ในภายหลัง ซึ่งเป็นวิธีที่ Assistant จะกําหนดว่าใครได้รับการแจ้งเตือนบ้าง
สุดท้าย เพิ่มการดําเนินการตามความตั้งใจของ Class Canceled
ที่ทริกเกอร์โดยแตะข้อความ Push ในตัวอย่างนี้ การตอบกลับของคุณเป็นสตริงตัวยึดตําแหน่ง แม้ว่าในเวอร์ชันที่ใช้งานจริงของสคริปต์นี้ สคริปต์การแจ้งเตือนจะให้ข้อมูลแบบไดนามิกมากขึ้นว่าคลาสใดถูกยกเลิกไปแล้ว
ให้เพิ่มโค้ดต่อไปนี้ในไฟล์
index.js
index.js
// Call the User Information helper for permission to send push notifications
app.intent('Setup Push Notifications', (conv) => {
conv.ask('Update permission for setting up push notifications');
conv.ask(new UpdatePermission({intent: 'Class Canceled'}));
});
// Handle opt-in or rejection of push notifications
app.intent('Confirm Push Notifications', (conv) => {
if (conv.arguments.get('PERMISSION')) {
let userId = conv.arguments.get('UPDATES_USER_ID');
if (!userId) {
userId = conv.request.conversation.conversationId;
}
// Add the current conversation ID and the notification's
// target intent to the Firestore database.
return db.collection(FirestoreNames.USERS)
.add({
[FirestoreNames.INTENT]: 'Class Canceled',
[FirestoreNames.USER_ID]: userId,
})
.then(() => {
conv.ask(`Great, I'll notify you whenever there's a class cancelation. ` +
'Can I help you with anything else?');
});
} else {
conv.ask(`Okay, I won't send you notifications about class cancelations. ` +
'Can I help you with anything else?');
}
if (conv.screen) {
conv.ask(new Suggestions([Suggestion.CLASSES, Suggestion.HOURS]));
}
});
// Intent triggered by tapping the push notification
app.intent('Class Canceled', (conv) => {
conv.ask('Classname at classtime has been canceled.');
});
เพิ่มการแจ้งเตือนการทดสอบ
หากต้องการส่งข้อความ Push ไปยังผู้ใช้ ให้ส่งคําขอ POST
ไปยัง Actions API พร้อมรหัสผู้ใช้ ชื่อการแจ้งเตือน และความตั้งใจเป้าหมาย ในตัวอย่างนี้ การทริกเกอร์ Intent การแจ้งเตือนการทดสอบจะทําซ้ําผ่านฐานข้อมูล Firestore และส่งข้อความ Push ไปยังผู้ใช้ทุกรายที่สมัครรับการแจ้งเตือน
ในตัวอย่างนี้ คุณจะต้องใส่โค้ดที่ส่งข้อความ Push ลงในการดําเนินการเว็บฮุคและเรียกโค้ดนั้นโดยเรียกใช้ Intent ทดสอบในการสนทนา ในการกระทําที่คุณตั้งใจเผยแพร่ รหัสข้อความ Push ควรอยู่ในสคริปต์แยกต่างหากจากที่คุณดําเนินการ
ให้เพิ่มโค้ดต่อไปนี้ในไฟล์
index.js
index.js
// Debug intent to trigger a test push notification
app.intent('Test Notification', (conv) => {
// Use the Actions API to send a Google Assistant push notification.
let client = auth.fromJSON(require('./service-account.json'));
client.scopes = ['https://www.googleapis.com/auth/actions.fulfillment.conversation'];
let notification = {
userNotification: {
title: 'Test Notification from Action Gym',
},
target: {},
};
client.authorize((err, tokens) => {
if (err) {
throw new Error(`Auth error: ${err}`);
}
// Iterate through Firestore and send push notifications to every user
// who's currently opted in to canceled class notifications.
db.collection(FirestoreNames.USERS)
.where(FirestoreNames.INTENT, '==', 'Class Canceled')
.get()
.then((querySnapshot) => {
querySnapshot.forEach((user) => {
notification.target = {
userId: user.get(FirestoreNames.USER_ID),
intent: user.get(FirestoreNames.INTENT),
};
request.post('https://actions.googleapis.com/v2/conversations:send', {
'auth': {
'bearer': tokens.access_token,
},
'json': true,
'body': {'customPushMessage': notification, 'isInSandbox': true},
}, (err, httpResponse, body) => {
if (err) {
throw new Error(`API request error: ${err}`);
}
console.log(`${httpResponse.statusCode}: ` +
`${httpResponse.statusMessage}`);
console.log(JSON.stringify(body));
});
});
})
.catch((error) => {
throw new Error(`Firestore query error: ${error}`);
});
});
conv.ask('A notification has been sent to all subscribed users.');
});
ทดสอบข้อความ Push
จากนั้นเรียกใช้คําสั่งต่อไปนี้เพื่อติดตั้งใช้งานโค้ดเว็บฮุคที่อัปเดตกับ Firebase
firebase deploy
หากต้องการทดสอบการแจ้งเตือนในเครื่องจําลองการดําเนินการ ให้ทําตามขั้นตอนต่อไปนี้
- ในคอนโซลการดําเนินการ ให้ไปที่แท็บการทดสอบ
- พิมพ์
Talk to my test app
ในช่อง Input แล้วกด Enter - พิมพ์
Learn about classes
แล้วกด Enter - พิมพ์
Get notifications
แล้วกด Enter - หากคุณยังไม่ได้ให้สิทธิ์การดําเนินการเพื่อส่งข้อความ Push ถึงคุณ ให้พิมพ์
yes
และกด Enter - พิมพ์
yes
แล้วกด Enter ตอนนี้บัญชี Google ของคุณควรจะสมัครรับข้อความ Push สําหรับการดําเนินการนี้
- พิมพ์
no
และกด Enter เพื่อออก - พิมพ์
Talk to my test app
และกด Enter เพื่อเริ่มการสนทนาใหม่ - พิมพ์
Test notification
แล้วกด Enter
ภายในไม่กี่นาทีคุณจะได้รับการแจ้งเตือน "การทดสอบจากยิมแอ็กชัน" Assistant ส่งข้อความ Push บนอุปกรณ์เคลื่อนที่ของคุณ การแตะการแจ้งเตือนนี้จะระบุ Deep Link เกี่ยวกับความตั้งใจของคุณที่จะยกเลิกชั้นเรียน
5 สร้างลิงก์ Assistant
ถึงตอนนี้เราได้พูดถึงฟีเจอร์การมีส่วนร่วมที่คุณนําไปใช้ได้เพื่อให้ผู้ใช้กลับมาที่การดําเนินการของคุณเหมือนเดิม แต่ฟีเจอร์ดังกล่าวคาดการณ์ไว้ว่ามีผู้ใช้ที่ค้นพบและใช้การดําเนินการของคุณ
คุณสร้างลิงก์ Assistant ที่จะลิงก์ผู้ใช้ในอุปกรณ์เคลื่อนที่เข้ากับ Action on Assistant ได้โดยตรง เนื่องจากลิงก์ Assistant เป็นไฮเปอร์ลิงก์มาตรฐาน คุณจึงเพิ่มลิงก์ลงในเว็บไซต์หรือสื่อการตลาดบนเว็บใดก็ได้ เช่น บล็อกหรือโพสต์โซเชียลมีเดีย
ในขั้นตอนนี้ คุณจะได้เรียนรู้ว่าลิงก์ Assistant คืออะไร สร้างลิงก์สําหรับความตั้งใจต้อนรับการดําเนินการของคุณ และวิธีเพิ่มลงในเว็บไซต์ง่ายๆ เพื่อทําการทดสอบ
แล้วผู้ใช้จะมีส่วนร่วมได้อย่างไร
การดึงดูดให้ผู้ใช้มาที่การดําเนินการของคุณเป็นครั้งแรกอาจทําได้ยาก โดยเฉพาะเมื่อผู้ใช้ต้องเรียกใช้การดําเนินการของคุณใน Assistant อย่างชัดแจ้ง ลิงก์ Assistant ช่วยลดอุปสรรคนี้โดยการให้ลิงก์การดําเนินการของคุณแก่ผู้ใช้โดยตรง เมื่อผู้ใช้ติดตามลิงก์ Assistant ในอุปกรณ์ที่พร้อมใช้งาน Assistant ระบบจะนําผู้ใช้ไปยังการดําเนินการของคุณโดยตรง เมื่อผู้ใช้เปิดลิงก์บนอุปกรณ์ที่ไม่ใช่อุปกรณ์เคลื่อนที่หรืออุปกรณ์อื่นๆ ที่ไม่รองรับ Assistant ระบบจะยังนําผู้ใช้ไปยังข้อมูลไดเรกทอรี Actions ของคุณ (หากเผยแพร่แล้ว) ลิงก์จะยังทําการตลาดการดําเนินการของคุณกับผู้ใช้เหล่านั้นได้
ลิงก์ Assistant เป็นเครื่องมือการมีส่วนร่วมที่มีประโยชน์ คุณจึงควรสร้างลิงก์หากวางแผนโฆษณาการดําเนินการผ่านเว็บไซต์หรือโซเชียลมีเดีย เพียงคํานึงถึงเคล็ดลับต่อไปนี้ก่อนที่จะสร้างและแจกจ่ายลิงก์ Assistant
- ลิงก์ Assistant จะใช้ได้เมื่อคุณเผยแพร่การดําเนินการแล้วเท่านั้น ขณะที่โปรเจ็กต์อยู่ในสถานะแบบร่าง ลิงก์จะใช้ได้ในอุปกรณ์ของคุณเองเท่านั้น ระบบจะนําผู้ใช้ไปยังหน้า 404 ในไดเรกทอรีการดําเนินการ
- คุณสามารถอนุญาตให้ผู้ใช้ทดสอบลิงก์ Assistant ก่อนเผยแพร่ได้โดยเปิดตัวการดําเนินการของคุณในสภาพแวดล้อมแบบอัลฟ่าหรือเบต้า โปรดทราบว่ามีเพียงผู้ใช้ที่เข้าร่วมรุ่นอัลฟ่าหรือเบต้าเท่านั้นที่จะทดสอบลิงก์ Assistant ได้
- ตรวจดูว่าปลายทางสําหรับลิงก์ Assistant สร้างความประทับใจที่ดีแก่ผู้ใช้ใหม่ ความตั้งใจต้อนรับคือปลายทางเริ่มต้นสําหรับลิงก์ Assistant เนื่องจากควรแนะนําการดําเนินการให้คุณได้ดีอยู่แล้ว
เปิดลิงก์ Assistant
ทําตามขั้นตอนต่อไปนี้เพื่อสร้างลิงก์ Assistant สําหรับ Intent ต้อนรับ
- ในคอนโซลการดําเนินการ ให้คลิกแท็บพัฒนา และเลือกการดําเนินการในแถบนําทางด้านซ้าย
- คลิก actions.intent.MAIN ในรายการการดําเนินการ
- ในส่วนลิงก์ ให้สลับตัวเลือกคุณต้องการเปิดใช้ URL สําหรับการดําเนินการนี้หรือไม่
- กําหนดชื่อลิงก์ที่สื่อความหมายและอธิบายการดําเนินการ ตั้งชื่อเป็นคํากริยาวิเศษณ์ง่ายๆ ที่อธิบายสิ่งที่ผู้ใช้จะทําได้ด้วยการกระทําของคุณ สําหรับตัวอย่างนี้ ให้ตั้งค่าชื่อลิงก์เป็น
learn about Action Gym
- คัดลอกข้อมูลโค้ด HTML จากด้านล่างของหน้านี้และบันทึกไว้แก้ไขภายหลัง
- คลิกบันทึกที่ด้านบนของหน้า
ทําให้เว็บไซต์ทดสอบใช้งานได้
หากต้องการทดสอบลิงก์ Assistant คุณสามารถใช้เครื่องมือ Firebase เพื่อทําให้เว็บไซต์ทดสอบใช้งานได้ควบคู่กับการดําเนินการตามคําสั่งซื้อ ที่เราสร้างเว็บไซต์ทดสอบง่ายๆ สําหรับตัวอย่างนี้ไปแล้ว คุณเพียงแค่เพิ่มลิงก์ Assistant
ไปที่ไดเรกทอรี /user-engagement-codelab-nodejs/start/public/
สําหรับการดําเนินการตามคําสั่งซื้อและเปิดไฟล์ index.html
ในเครื่องมือแก้ไขข้อความ
วางข้อมูลโค้ด HTML ของลิงก์ Assistant ในองค์ประกอบเนื้อหาในไฟล์
index.html
ไฟล์ควรมีลักษณะเหมือนข้อมูลโค้ดด้านล่าง
index.html
<body>
<p>
<a href="https://assistant.google.com/services/invoke/uid/000000efb5f2fd97">🅖 Ask my test app to learn about Action Gym
</a>
</p>
</body>
ทดสอบลิงก์ Assistant
จากนั้นเรียกใช้คําสั่งต่อไปนี้เพื่อติดตั้งใช้งานเว็บไซต์ทดสอบกับ Firebase
firebase deploy
เมื่อคําสั่งการติดตั้งใช้งานเสร็จสิ้นแล้ว ให้จดบันทึก URL โฮสติ้งในเอาต์พุต
ไปที่ URL นี้โดยใช้เว็บเบราว์เซอร์ในอุปกรณ์เคลื่อนที่ คุณควรจะเห็นลิงก์ Assistant ในเว็บไซต์ทดสอบ การคลิกลิงก์นี้ในอุปกรณ์เคลื่อนที่จะนําคุณไปยัง Intent ของการดําเนินการ&ใน 39 ใน Assistant
นอกจากนี้ คุณยังลองไปที่ URL ที่โฮสต์บนเบราว์เซอร์ในเดสก์ท็อปได้ ซึ่งควรจะนําคุณไปยังหน้า 404 ในไดเรกทอรี Assistant เนื่องจากไม่มีการเผยแพร่การดําเนินการของคุณ
6 ขั้นตอนถัดไป
ยินดีด้วย
ตอนนี้คุณได้เรียนรู้เกี่ยวกับความสําคัญของการมีส่วนร่วมของผู้ใช้เมื่อพัฒนาการดําเนินการ ฟีเจอร์การมีส่วนร่วมของผู้ใช้ในแพลตฟอร์ม และวิธีเพิ่มฟีเจอร์แต่ละรายการให้กับการดําเนินการแล้ว
ทรัพยากรการเรียนรู้เพิ่มเติม
สํารวจแหล่งข้อมูลเหล่านี้เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการมีส่วนร่วมของผู้ใช้สําหรับการดําเนินการของคุณ
- การมีส่วนร่วมของผู้ใช้ และ เอกสารลิงก์ Assistant: เอกสารอย่างเป็นทางการของ Actions on Google เกี่ยวกับฟีเจอร์ที่กล่าวถึงใน Codelab และการมีส่วนร่วมของผู้ใช้โดยทั่วไป
- การวิเคราะห์การคงผู้ใช้ไว้: เอกสารสําหรับฟีเจอร์ข้อมูลวิเคราะห์ในคอนโซลการดําเนินการที่แสดงการคงผู้ใช้ไว้สําหรับการดําเนินการที่เผยแพร่
- หลักเกณฑ์ในการออกแบบการสนทนา: แนวทางปฏิบัติแนะนําและหลักเกณฑ์ในการออกแบบฟีเจอร์การมีส่วนร่วมของผู้ใช้
- Actions on Google GitHub repo: โค้ดตัวอย่างและไลบรารี
- r/GoogleAssistantDev: ชุมชนอย่างเป็นทางการของ Reddit สําหรับนักพัฒนาซอฟต์แวร์ที่ทํางานกับ Assistant
ติดตามเราที่ Twitter @ActionsOnGoogle เพื่อติดตามประกาศล่าสุดและทวีตไปที่ #AoGDevs เพื่อแชร์สิ่งที่คุณสร้าง
แบบสํารวจความคิดเห็น
ก่อนดําเนินการต่อ โปรดกรอกแบบฟอร์มนี้เพื่อแจ้งให้เราทราบการทํางานของคุณ