วันพุธที่ 11 กรกฎาคม พ.ศ. 2561

สร้าง Actions on Google ให้เชื่อมต่อกับ API เพื่อเพิ่มความสามารถในการโต้ตอบ


          ในบทความที่แล้ว เราได้เขียน Actions ให้โต้ตอบกับเราอย่างง่าย ๆ โดยปราศจากการเขียนโค้ดไปบ้างแล้ว (จริง ๆ น่าจะเรียกว่า "ตั้งค่าการตอบกลับ" มากกว่าการเขียนโค้ดนะ ฮา) และเพื่อน ๆ ก็น่าจะเข้าใจขั้นตอนการทำงานของ Dialogflow แล้ว แต่ถ้าสังเกตดูก็จะพบว่าข้อความที่ตอบกลับมาเป็นข้อความตายตัว ซึ่งถ้าแบบนี้คงจะไม่มีใครอยากใช้งาน Actions ของเรา เพราะงั้นเราควรจะเพิ่มความสามารถในตอบกลับให้ประโยคโต้ตอบมีการเปลี่ยนแปลงไปตามสิ่งที่ผู้ใช้พูด และการจะทำแบบนั้นได้ เราก็จำเป็นจะต้องเชื่อมต่อกับ API เพื่อส่งข้อความของผู้ใช้ไปประมวลผลซะก่อน

สร้างบทสนทนาตอบกลับ


          ก่อนจะเชื่อมต่อ API เรามาแก้ไขรายละเอียดอะไรบางอย่างในตอนท้ายของบทความที่แล้วกันดีกว่า เข้าไปที่ Dialogflow Console กันเล้ยยยยย


          เข้าไปที่เมนู Intents แล้วคลิกที่ Welcome Response Intent ในส่วนของ Text response ให้แก้ไขข้อความเป็น "ดีใจที่ได้ยินเช่นนั้นค่ะ ว่าแต่วันนี้คุณใส่เสื้อสีอะไรเหรอคะ" แล้วคลิกปุ่ม SAVE


          คลิกปุ่ม + ข้าง ๆ เมนู Intents เพื่อสร้าง Intent ขึ้นมาใหม่ และกรอกชื่อว่า Your Color Intent โดยจะมีส่วนที่เราต้องกรอกรายละเอียดเพิ่ออีก 3 ส่วน ได้แก่ Training phrases, Action and parameters และ Fulfillment


          ในส่วน Training phrases ให้ใส่คำว่า "สีแดง", "แดง", "สีแดงครับ", "เสื้อสีแดง" และ"เสื้อสีแดงครับ" ซึ่งเพื่อน ๆ จะสังเกตเห็นว่าตอนที่ใส่คำทีละคำ จะมีไฮไลท์สีเหลืองขึ้นที่คำว่า "สีแดง" ให้โดยอัตโนมัติ และจะมีการใส่ค่า Entity ในส่วนของ Action and parameters ให้เอง..... Entity คืออะไรน่ะเหรอ? Entity ก็คือประเภทของสิ่งต่าง ๆ ซึ่ง Dialogflow จะใช้เพื่อดึงค่าตัวแปรออกมาจากข้อความของผู้ใช้


          ในส่วนของ Fulfillment คลิกเปิดให้ intent นี้มีการเรียกใช้งาน webhook ซึ่งเป็นที่เก็บโค้ดสำหรับประมวลผลและสร้างข้อความโต้ตอบแบบไดนามิก โดยเพื่อน ๆ สามารถสร้าง webhook ได้ 2 วิธี
  1. สร้างภายใน Dialogflow ผ่านเมนู Inline Editor
  2. สร้างที่ Server ภายนอก จากนั้นนำ url มาใส่ให้ Dialogflow
          เมื่อเปิดการเรียกใช้งาน webhook เรียบร้อยแล้วให้คลิกปุ่ม SAVE ซึ่งในขั้นตอนต่อไป เราจะมาทำการสร้าง webhook และเขียนโค้ดเพื่อประมวลผลข้อความของผู้ใช้ ซึ่งผมจะอธิบายวิธีการสร้าง webhook โดยแบ่งออกเป็น 2 วิธี ได้แก่ สร้าง Webhook บน Inline Editor และ สร้าง Webhook บน Cloud Functions for Firebase

สร้าง Webhook บน Inline Editor


          วิธีนี้จะเป็นการสร้าง webhook ภายใน Dialogflow ซึ่งถือเป็นวิธีสร้าง webhook ที่ง่าย เนื่องจากเราไม่จำเป็นต้องติดตั้งอะไรลงบนเครื่องของเรา โดยวิธีสร้างให้คลิกที่เมนู Fulfillment ที่อยู่ในเมนูด้านซ้ายมือ


          คลิกเปิดการใช้งาน Inline Editor จากนั้นก็ก๊อปปี้โค้ดด้านล่างไปใส่

'use strict';

// Import the Dialogflow module from the Actions on Google client library.
const {dialogflow} = require('actions-on-google');
// Import the firebase-functions package for deployment.
const functions = require('firebase-functions');
// Instantiate the Dialogflow client.
const app = dialogflow({debug: true});


app.intent('Your Color Intent', conv => {
    const userColor = conv.parameters.color;
    // ตอบแล้วยังไม่จบการสนทนา
    //conv.ask('เลขนำโชคสำหรับ' + userColor+'คือ '+userColor.length);
    // ตอบแล้วจบการสนทนาทันที
    conv.close('เลขนำโชคสำหรับ' + userColor+'คือ '+userColor.length);
});

// Set the DialogflowApp object to handle the HTTPS POST request.
exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);
          ถ้าใช้ conv.ask() บทสนทนาจะยังไม่จบ แต่ถ้าใช้ conv.close() บทสนทนาจะจบทันที จากนั้นให้คลิกปุ่ม DEPLOY เพื่อใช้งานโค้ดปัจจุบัน และจะใช้เวลาในการ deploy สักครู่ ระหว่างรอ Dialogflow ทำการ deploy เรามาทำความเข้าใจโค้ดกันสักนิด

          โค้ดที่ใช้ใน webhook จะเขียนด้วยภาษา Javascript และเรียกใช้งาน Actions on Google Node.js client library เพื่อตอบกลับ HTTP requests ที่ Google Assistant ส่งมาที่ webhook ซึ่ง conv.parameters จะเก็บตัวแปรที่มาจาก Entity โดย color มาจากชื่อ Parameter Name ที่ประกาศไว้ใน Entity

          Inline editor ของ Dialogflow จะ deploy โค้ดของ webhook บน Cloud Functions for Firebase ซึ่งเป็น cloud service ของ Google


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

สร้าง Webhook บน Cloud Functions for Firebase


          วิธีนี้จะเป็นการเขียนโค้ดลงในเครื่องของเรา จากนั้นก็จะ deploy ขึ้นไปบน Cloud Functions for Firebase ซึ่งวิธีนี้จะต้องใช้ Node Package Manager หรือ npm ที่เป็นตัวจัดการแพ็คเกจเสริมต่าง ๆ ในการติดตั้งแพ็คเกจ firebase-tools โดยเจ้าตัว npm นี้จะถูกติดตั้งมาพร้อมกับ Node.js เพราะงั้นอันดับแรกเราก็มาติดตั้ง Node.js กันก่อน

วิธีติดตั้ง Node.js


          ให้เข้าไปที่ Nodejs.org แล้วเลือกตัวติดตั้งตามที่เพื่อน ๆ ต้องการ


          เมื่อโหลดตัวติดตั้งเสร็จแล้วก็อย่ารอช้า กดติดตั้งโลด หลังจากติดตั้งเสร็จก็ให้เปิด Command Prompt (สำหรับ Window) หรือ Terminal (สำหรับ Mac) ขึ้นมาแล้วพิมพ์คำสั่ง

node -v
          ถ้าหาก Command Prompt (หรือ Terminal) แสดงเลขเวอร์ชันของ Node.js ขึ้นมา ก็แปลว่าเราได้ติดตั้ง Node.js เสร็จเรียบร้อยแล้ว อันดับถัดไปเราจะต้องติดตั้ง Firebase Command Line Interface (CLI) ให้พิมพ์คำสั่ง

npm -g install firebase-tools
          เราสามารถเช็คว่าติดตั้ง Firebase CLI สำเร็จหรือไม่ ได้โดยการพิมพ์คำสั่ง

firebase --version
          อันดับถัดไปให้ทำการ Login Firebase CLI โดยการพิมพ์

firebase login


          Command Prompt (หรือ Terminal) จะเปิดเว็บบราวน์เซอร์ขึ้นมา ให้เพื่อน ๆ login Account ของ Google


          เมื่อ login แล้ว ก็จะเจอหน้า Firebase CLI ขอสิทธิ์การเข้าถึง Google Account ให้คลิกปุ่ม ALLOW



          เสร็จเรียบร้อยแล้วก็ปิดเว็บบราวน์เซอร์ได้เลย จากนั้นให้สร้างโฟลเดอร์ที่จะเก็บโปรเจค แล้วย้ายเข้าไปยังโฟลเดอร์นั้น

mkdir test-action
cd test-action
          จากนั้นก็ทำการ init ตัว Cloud Functions for Firebase ด้วยคำสั่ง

firebase init functions

          Command Prompt (หรือ Terminal) จะแสดงตัวเลือกให้เลือกโปรเจคที่เราต้องการจะใช้งาน (ตามตัวอย่างผมจะเลือกโปรเจค test-action) จากนั้นก็กดปุ่ม enter แล้ว Firebase CLI จะแสดงคำถามขึ้นมาให้เลือกอีก 3 คำถาม ได้แก่
  • โปรเจคจะใช้ภาษา Javascript หรือ TypeScript (ตามตัวอย่างผมใช้ JavaScript)
  • โปรเจคจะใช้ ESLint เพื่อตรวจสอบ bug และ code style หรือไม่ (ตามตัวอย่างผมเลือก Yes)
  • ต้องการให้ติดตั้ง dependencies ทันทีเลยหรือไม่ (ตอบ Y ไปเล้ยยยยย)
          เมื่อเลือกคำตอบครบเรียบร้อยแล้วก็รอให้ Firebase CLI ทำการ Initial โปรเจคขึ้นมา .....หลังจาก Initial เสร็จแล้ว ไฟล์ที่เราต้องใช้งานคือไฟล์ index.js ที่อยู่ในโฟลเดอร์ functions แต่ก่อนจะเปิดไฟล์ index.js ให้เข้าไปยังโฟลเดอร์ functions แล้วทำการติดตั้ง Actions on Google Node.js client library ด้วยคำสั่ง

cd functions
npm install actions-on-google
          ต่อไปให้เปิดไฟล์ firebase.json ขึ้นมา ลบคำสั่งที่อยู่ในนั้นทั้งหมด แล้วก๊อปปี้คำสั่งข้างล่างลงไปแทน

{
  "functions": {
    "predeploy": [
    ]
  }
}
          อันดับถัดไปให้เปิดไฟล์ index.js ขึ้นมา แล้วก๊อปปี้โค้ดข้างล่างไปวางไว้ในไฟล์ index.js

'use strict';

// Import the Dialogflow module from the Actions on Google client library.
const {dialogflow} = require('actions-on-google');
// Import the firebase-functions package for deployment.
const functions = require('firebase-functions');
// Instantiate the Dialogflow client.
const app = dialogflow({debug: true});


app.intent('Your Color Intent', conv => {
    const userColor = conv.parameters.color;
    // ตอบแล้วยังไม่จบการสนทนา
    //conv.ask('เลขนำโชควันนี้สำหรับ' + userColor+'คือ '+userColor.length);
    // ตอบแล้วจบการสนทนาทันที
    conv.close('เลขนำโชควันนี้สำหรับ' + userColor+'คือ '+userColor.length);
});

// Set the DialogflowApp object to handle the HTTPS POST request.
exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);
          เสร็จแล้วก็ใช้คำสั่ง deploy เพื่อส่งโค้ดที่เพิ่งเขียนขึ้นไป deploy บน Cloud Functions for Firebase ด้วยคำสั่ง

firebase deploy
          รอสักครู่จน Command Prompt (หรือ Terminal) แสดงข้อความว่า "Deploy complete!" จากนั้นให้เราเข้าไปยังเมนู Fulfillment ของ Dialogflow Console เพื่อตั้งค่า webhook ใหม่


          คลิกเปิดการใช้งานในส่วน Webhook ซึ่งจะมีป๊อปอัพขึ้นมาถามยืนยันว่า "ถ้าเปิดการใช้งานในส่วนนี้ จะปิดการใช้งานของ Inline Editor" ให้คลิกปุ่ม YES ไปได้เลย จะสังเกตได้ว่า Dialogflow มีการใส่ค่าในช่อง URL มาให้โดยอัตโนมัติ ซึ่งเป็นผลจากการเลือกโปรเจคในตอนที่ Initial โปรเจค (โปรเจค test-action) เพียงเท่านี้ก็เสร็จสิ้นการ deploy โค้ดตัวใหม่เรียบร้อยแล้ว ไปทดสอบกันโล้ด


          พอกลับไปทดสอบการทำงานใน Actions Console จะเห็นได้ว่า Actions มีการทำงานแบบเดียวกับตอนที่ใช้ webhook บน Inline Editor แต่ต่างกันเล็กน้อยที่ประโยคตอบกลับ (ตรง "เลขนำโชควันนี้สำหรับ.....") ซึ่งข้อดีของการสร้าง Webhook บน Cloud Functions for Firebase นั่นก็คือ เราสามารถใช้งาน JavaScript Library ตัวอื่นเสริมได้ด้วย ซึ่งจะเพิ่มประสิทธิภาพในการเขียนโค้ดนั่นเอง

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


วันพฤหัสบดีที่ 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 ก่อน ส่วนจะเขียนโค้ดอะไรยังไงนั้น รอติดตามได้ในบทความถัดไปจ้า .....บ๊ายบาย


วันอังคารที่ 3 กรกฎาคม พ.ศ. 2561

[Google Assistant] รถไฟฟ้าวันนี้ แอปพลิเคชันที่ช่วยรายงานข่าวสารจากรถไฟฟ้าของไทย


          หลังจากที่พัฒนาแอปพลิเคชัน รายงานรถติด (ตามที่ได้รีวิวไว้ในบทความที่แล้ว) ประกอบกับมีข่าวรถไฟฟ้า BTS สายสำคัญของพวกเราชาวไทยเกิดปัญหา ทำให้เกิดความล่าช้าในการเดินทาง ผมเลยได้พัฒนาแอปพลิเคชันสำหรับรายงานข่าวของรถไฟฟ้าไทยขึ้นมา ซึ่งเจ้าแอปพลิเคชันตัวนี้จะทำการดึงข้อความจากทวิตเตอร์ของรถไฟฟ้า BTS, รถไฟฟ้าใต้ดิน MRT หรือรถไฟฟ้า Airport Rail Link และเนื่องจากหลักการทำงานคล้ายกับแอปพลิเคชัน รายงานรถติด จึงทำให้ก็อปปี้มาวางเป็นโปรเจคใหม่ได้เลย (ฮา)

          แอปพลิเคชันจะทำงานโดยการถามผู้ใช้ว่าอยากฟังข่าวจากรถไฟฟ้าประเภทไหน ได้แก่ รถไฟฟ้า BTS, รถไฟฟ้าใต้ดิน MRT หรือรถไฟฟ้า Airport Rail Link หลังจากผู้ใช้งานตอบแล้วก็จะดึงข้อความมาจากทวิตเตอร์ของรถไฟฟ้าประเภทนั้น ๆ เรามาดูวิธีเรียกใช้งานแอปพลิเคชันนี้กันเลย

1. กดปุ่มโฮมค้างไว้เพื่อเรียกใช้งาน Google Assistant หรือเข้าผ่าน ลิงค์นี้











2. พูดหรือพิมพ์ว่า "คุยกับรถไฟฟ้าวันนี้" แอปพลิเคชันจะแสดงคำพูดทักทายซึ่งจะเปลี่ยนไปตามช่วงเวลาที่เรียกใช้งาน พร้อมทั้งถามและแสดงตัวเลือกประเภทของรถไฟฟ้าที่เพื่อน ๆ อยากจะฟังข่าว











3. หลังจากตอบประเภทรถไฟฟ้าไปแล้ว แอปพลิเคชันจะทำการรายงานข่าว เมื่อรายงานข่าวเสร็จแล้วแอปพลิเคชันจะถามประเภทของรถไฟฟ้าที่เพื่อน ๆ อยากจะฟังข่าวอีกครั้ง









4. ถ้าเพื่อน ๆ ต้องการปิดการใช้งานแอปพลิเคชันก็พูดว่า "จบการสนทนา"











          สำหรับแอปพลิเคชันตัวนี้ ผมตั้งใจจะให้รายงานข่าวสถานะการณ์ของรถไฟฟ้าว่าตอนนี้รถไฟฟ้าแต่ละประเภทเป็นยังไงบ้าง รถเสียหรือคนเต็มสถานีหรือเปล่า ให้เข้ากับสถานะการณ์ที่รถไฟฟ้า BTS ขัดข้อง อาจจะ publish ออกมาช้าไปสักนิด แต่ก็หวังว่าเพื่อน ๆ จะได้ใช้ประโยชน์จากแอปพลิเคชันตัวนี้บ้าง แล้วก็อย่าลืมเข้าไปให้คะแนนกับเขียนความเห็นที่ลิงค์นี้นะครับ .....สำหรับบทความนี้ ผมก็ต้องขอตัวลาไปก่อนล่ะ บทความถัดไปจะเป็นอะไรก็รอลุ้นกันนะครับ บ๊ายบาย