วันพฤหัสบดีที่ 5 กรกฎาคม พ.ศ. 2561

สร้าง Actions สำหรับ Google Assistant อย่างง่าย ๆ


          ในบทความก่อนหน้านี้และบทความที่แล้ว ผมได้รีวิวรายงานรถติดและรถไฟฟ้าวันนี้ แอปพลิเคชันที่ทำงานบน Google Assistant ไปแล้ว เพื่อน ๆ บางคนอาจจะสงสัยว่าเขียนยังไงให้อ่านข้อความออกมาให้ฟัง เพราะงั้นในบทความนี้เราก็มาลองเขียน Actions on Google หรือแอปพลิเคชันที่ทำงานบน Google Assistant กันดีกว่า

          Actions on Google คือแพลตฟอร์มที่อนุญาตให้นักพัฒนาสามารถใช้งานความสามารถของ Google Assistant ในการสร้าง Actions ที่ทำงานตามคำสั่งของผู้ใช้งานผ่านการสั่งการด้วยเสียง ซึ่งผู้ใช้งานจะต้องเรียกใช้แอปพลิเคชันหรือ Actions ที่ต้องการผ่าน Google Assistant ด้วยคำสั่งว่า "talk to <ชื่อ Action>" สำหรับภาษาอังกฤษ และ "คุยกับ <ชื่อ Action>" สำหรับภาษาไทย โดยการสนทนาจะดำเนินไปในลักษณะของการโต้ตอบแบบสองทิศทาง นั่นคือผู้ใช้จะต้องผลัดกันถาม-ตอบกับ Actions ไปเรื่อย ๆ จนจบการสนทนา


          หลังจากผู้ใช้งานเรียกใช้ Actions ผ่าน Google Assistant แล้ว อุปกรณ์จะส่งคำพูดหรือข้อความของผู้ใช้ไปยัง Google Assistant ซึ่งจะส่งต่อไปยัง Actions ด้วย HTTP request เมื่อ Actions ทำตามคำสั่งของผู้ใช้งานเสร็จเรียบร้อยแล้วก็จะส่ง HTTP response ตอบกลับมาที่ Google Assistant เพื่อแปลงเป็นคำพูดแล้วพูดตอบกลับผู้ใช้

เริ่มสร้าง Action


          ก่อนจะเริ่มสร้าง Actions เรามาทำความเข้าใจขั้นตอนการทำงานที่เกิดขึ้นเมื่อเราเรียกใช้งาน Actions จาก Google Assistant กันก่อนดีกว่า



          เมื่อผู้ใช้พูดประโยคว่า "คุยกับรถไฟฟ้าวันนี้" Google Assistant ที่อยู่ในอุปกรณ์ก็จะทำการแปลงคำพูดไปเป็นข้อความ ประมวลผลด้วยปัญญาประดิษฐ์ แล้วเรียกใช้งาน Actions "รถไฟฟ้าวันนี้" ที่อยู่บน Dialogflow ซึ่ง Welcome Intent ก็จะทำงานขึ้นมาเป็นอันดับแรก (Intent คือจุดหมายหรือหน้าที่ที่ผู้ใช้งานต้องการให้ทำ หรือพูดง่าย ๆ ก็คือการทำงานที่ Actions สามารถทำงานได้) แล้วจึงส่งข้อความทักทายตอบกลับไปให้ผู้ใช้

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

          ถึงตรงนี้เพื่อน ๆ ก็คงพอจะเข้าใจภาพรวมของ Actions on Google บ้างแล้ว ก่อนที่จะเริ่มสร้าง Actions เพื่อน ๆ ก็จำเป็นต้องไปเปิดสิทธิ์การใช้งานของ Google account ก่อน (ถึงตรงนี้เพื่อน ๆ น่าจะมี account ของ Google กันหมดแล้วเนอะ) ให้เข้าไปที่ Activity Console ของ Google account


          เมื่อเข้ามาที่หน้า Activity Console แล้ว ให้เปิดสิทธิ์การเข้าถึงของเมนู Web & App Activity (กิจกรรมบนเว็บและแอป), Device Information (ข้อมูลอุปกรณ์) และ Voice & Audio Activity (กิจกรรมเสียงพูดและเสียง) ให้เรียบร้อยซะก่อน จากนั้นก็ปิดหน้านี้ไป แล้วเปิดหน้า Actions Console เพื่อสร้างโปรเจค Action


          คลิกปุ่ม Add/Import project


          ตั้งชื่อโปรเจค (เช่น test-action เป็นต้น โดยชื่อนี้จะเป็นชื่อสำหรับระบุโปรเจคเฉย ๆ ไม่ใช่ชื่อที่เรียกใช้งาน Action) เลือกภาษาและประเทศตั้งต้นที่จะให้ Actions ทำงาน แล้วคลิกปุ่ม CREATE PROJECT


          หน้านี้จะให้เลือก Category ถ้ายังไม่เลือกให้คลิกปุ่ม SKIP ไปก่อนก็ได้


          คลิกเมนู Actions ที่อยู่ในแถบเมนูซ้ายมือ


          คลิกปุ่ม ADD YOUR FIRST ACTION เพื่อเริ่มสร้าง Actions กันเลย


          ป๊อปอัพจะแสดงขึ้นมาให้เลือก Actions ที่เพื่อน ๆ ต้องการจะสร้าง ให้เลือก Custom intent แล้วคลิกปุ่ม BUILD (ตัวเลือกอื่นจะเป็น intent ที่ Google มีมาให้อยู่แล้ว) ระบบจะเปิดหน้าเว็บของ Dialogflow Console ขึ้นมา (Dialogflow เป็นเว็บของ Google ที่ให้บริการในการประมวลผลข้อมูลของผู้ใช้ ซึ่งจะช่วยให้เราสามารถผสมผสานแอปพลิเคชันการสนทนาเข้ากับ Google Assistant รวมไปถึงแพลตฟอร์มการสนทนาอื่น ๆ )


          เมื่อเข้ามาที่หน้า Dialogflow Console เป็นครั้งแรก ก็จะมีให้ตั้งค่า account และมีข้อกำหนดในการให้บริการ จากนั้นให้คลิกปุ่ม ACCEPT เพื่อเข้าสู่หน้าการทำงานหลัก ซึ่งระบบก็จะทำการสร้าง Dialogflow agent ขึ้นมาเชื่อมโยงเข้ากับโปรเจค Actions ที่เพื่อน ๆ ได้สร้างขึ้นไว้เมื่อกี้


          เลือกภาษาและเวลา จากนั้นก็กดปุ่ม CREATE (ข้อควรระวัง: เมื่อเพื่อน ๆ เลือกภาษาที่จะให้ Actions รองรับการทำงานแล้ว จะเป็นการกำหนดให้ Actions นี้ปรากฎอยู่ในหน้า Explore ของประเทศที่รองรับภาษาที่เลือกเท่านั้น ซึ่งเพื่อน ๆ สามารถเพิ่มภาษาที่จะให้ Actions นี้รองรับได้ในภายหลัง)



          เมื่อระบบสร้าง Actions ขึ้นมาแล้ว ก็จะนำเพื่อน ๆ ไปหน้าเมนู Intents ให้เอง ซึ่งภายในเมนูนี้จะแสดง Intent ทั้งหมดของ Actions โดยเริ่มต้นเพื่อน ๆ ก็จะเห็น Intent ที่ระบบสร้างขึ้นมาให้โดยอัตโนมัติทั้งหมด 2 Intent ได้แก่ Default Fallback Intent และ Default Welcome Intent ให้คลิกที่ Default Welcome Intent


          ในส่วนของ Events (กรอบสี่เหลี่ยมสีน้ำเงิน) จะเป็นการผูกเหตุการณ์เข้ากับ intent นี้ ซึ่งระบบได้ผูกเหตุการณ์ Welcome ไว้ให้อัตโนมัติ นั่นหมายความว่าเมื่อ Actions นี้ถูกเรียกใช้งาน intent นี้ก็จะทำงานเป็นอันดับแรก

          ในส่วนของ Response (กรอบสี่เหลี่ยมสีแดง) จะมีช่องให้เราพิมพ์ข้อความที่ Actions จะใช้ตอบกลับเมื่อ intent นี้ถูกเรียกให้ใช้งาน และข้างล่างกรอบจะมีตัวเลือกอยู่ ถ้ากดเปิดใช้จะทำให้ Actions จบการสนทนาทันทีที่ intent นี้ทำงานเสร็จ


          ให้เพื่อน ๆ คลิกปุ่มถังขยะเพื่อลบข้อความทั้งหมดออก คลิกปุ่ม ADD RESPONSE แล้วเลือก Text response จากนั้นให้ใส่ข้อความว่า "สวัสดีค่ะ สบายดีไหมคะ" คลิกปุ่ม SAVE เพื่อบันทึกการเปลี่ยนแปลง แล้วคลิกเมนู Intents ที่อยู่แถบซ้ายมือเพื่อกลับไปหน้าแสดง intent ทั้งหมด


          คลิกปุ่ม CREATE INTENT เพื่อสร้าง intent ใหม่


          ในหน้าสร้าง intent ใหม่ จุดที่ต้องใส่ข้อมูลจะมีอยู่สามจุด ได้แก่ ชื่อ intent, Training phrases, Responses


          ชื่อของ intent จะต้องใส่ชื่อที่ไม่ซ้ำกับ intent อื่น ในที่นี้ให้ใส่เป็น Welcome Response Intent


          ในส่วนของ Training phrases เป็นส่วนที่กำหนดว่า intent นี้จะทำงานเมื่อได้รับคำสั่งอะไรมาจากผู้ใช้ ให้คลิกปุ่ม ADD TRAINING PHRASES แล้วใส่คำว่า "สบายดี" ซึ่งนั่นหมายความว่า เมื่อผู้ใช้งานพูดคำว่า "สบายดี" ก็จะเป็นการสั่งให้ intent นี้ทำงาน


          ในส่วนของ Responses ให้คลิก ADD RESPONSES แล้วใส่คำว่า "ดีใจที่ได้ยินเช่นนั้น" จากนั้นให้คลิกปุ่ม SAVE แล้วคลิกเมนู Intents ที่อยู่แถบซ้ายมือเพื่อกลับไปหน้าแสดง intent ทั้งหมด


          คลิกเข้าไปยังหน้า Default Fallback Intent โดยเจ้า intent ตัวนี้จะทำงานในกรณีที่คำสั่งของผู้ใช้ไม่ตรงกับ intent ไหนเลย ซึ่งเราจะทำการแก้ไขในส่วนของ Responses เพื่อให้ Actions จบการสนทนาเมื่อ intent นี้ทำงานเสร็จ


          ลบข้อความเก่าออกทั้งหมดแล้วเพิ่มข้อความ "ขอโทษค่ะ ฉันไม่เข้าใจที่พูด เอาไว้ค่อยกลับมาใช้บริการใหม่นะคะ" ลงไปแทน จากนั้นคลิกใช้งานจบการสนทนาแล้วจึงคลิกปุ่ม SAVE ซึ่งหลังจากทำการตั้งค่าต่าง ๆ เสร็จเรียบร้อยแล้ว เราก็จะมาทดสอบ Actions กัน ให้คลิกที่เมนู Integrations ที่อยู่ในแถบเมนูฝั่งซ้าย


          ในเมนูนี้จะมีให้เลือกว่าจะให้ Actions ใช้งานร่วมกับแอปพลิเคชันแชทตัวไหนบ้าง ให้เพื่อน ๆ คลิกที่ Google Assistant > Integration Settings


          หลังจากคลิกแล้วจะมีป๊อปอัพขึ้นมา ให้เลื่อนลงไปข้างล่างกดใช้งานตัวเลือก "Auto-preview changes" แล้วคลิกปุ่ม TEST ระบบจะเปิดหน้า Simulator ของ Actions Console ขึ้นมา


          ในการทดสอบ Actions ให้พิมพ์คำว่า "คุยกับแอปทดสอบของฉัน" ในช่องข้อความ หรือคลิกที่ตัวเลือกใน Suggested input ก็ได้


  • Actions จะพูดทักทายว่า "สวัสดีค่ะ สบายดีไหมคะ" ตามที่ได้ตั้งค่าไว้ใน Default Welcome Intent
  • เมื่อเพื่อน ๆ ตอบกลับไปว่า "สบายดี" Actions ก็จะไปเรียกใช้งาน Welcome Response Intent และตอบกลับมาว่า "ดีใจที่ได้ยินเช่นนั้น"
  • เมื่อเพื่อน ๆ พิมพ์คำพูดอื่นนอกจากคำว่า "สบายดี" Actions ก็จะไปเรียกใช้งาน Default Fallback Intent และตอบกลับมาว่า "ขอโทษค่ะ ฉันไม่เข้าใจที่พูด เอาไว้ค่อยกลับมาใช้บริการใหม่นะคะ" แล้วจบการสนทนาทันที

          เป็นยังไงบ้างครับ เพียงเท่านี้เราก็ได้ Actions ที่สามารถตอบโต้กับผู้ใช้งานอย่างง่าย ๆ โดยไม่ต้องเขียนโค้ดสักบรรทัดแล้ว แต่แค่นี้ทำได้เพียง Actions แบบ static ที่โต้ตอบกับผู้ใช้ได้อย่างจำกัดเท่านั้น ยังเอาไปใช้งานอะไรไม่ได้ จำเป็นต้องเขียนโค้ดเพิ่มความสามารถให้กับ Actions ก่อน ส่วนจะเขียนโค้ดอะไรยังไงนั้น รอติดตามได้ในบทความถัดไปจ้า .....บ๊ายบาย


Share:

0 comments:

แสดงความคิดเห็น