Meeting Maker Bot

การสร้าง Hangouts chatbot เพื่อการสร้างกิจกรรม การประชุม การนัดหมาย ฯลฯ บน Google Calendar ผ่าน Hangouts Chat API และ Google Calendar API โดยการสร้าง Agent บน Dialogflow

Web Service ที่เกี่ยวข้อง

  1. การสร้าง Agent Intents และ Entities ผ่าน Dialogflow

เริ่มการสร้าง Project หรือ Agent ผ่าน Dialogflow โดยการเข้าไปที่ https://dialogflow.cloud.google.com/ และเลือกเมนู Create New Agent

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

เริ่มโดยการกดที่เมนู Intents และเลือกการ Create Intent

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

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

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

และเมื่อเราทดสอบการรับ-ส่งข้อความระหว่างผู้ใช้และ Chatbot เราก็จะได้ผลลัพท์ดังรูป

ต่อมาในส่วนของ Entities

Entities คือ กลุ่มคำที่มีความหมายหรือคุณลักษระที่เหมือนกัน โดย Dialogflow จะมี Entities กลุ่มนึงให้เราสามารถใช้งานได้ทันที เช่น Time และ Date เป็นต้น และเรายังสามารถเพิ่มกลุ่ม Entities ของเราเองเพื่อใช้งานให้เหมาะสมกับ Agent ของเรา

เริ่มต้นการสร้าง Entities เลือก Entities ที่เมนูซ้ายมือและคลิก Create Entity จากนั้นระบุ Reference value ซึ่งเป็นคำหลักที่เราจะใช้ใน Agent นี้ และระบุ Synonym หรือกลุ่มคำที่มีความหมายและคุณลักษณะเดียวกับ Reference value

หลังจากที่เราสร้าง Entities ที่จะใช้งานครบแล้ว เมื่อกลับมาที่ Intents Dialogflow จะทำการแม็ทคำที่มีอยู่ใน Synonym ของ Entities ที่เราสร้างขึ้นและแปลงเป็น Parameter เพื่อใช้ในการทำงานต่อไป

เมื่อเราสร้าง Intent เรียบร้อยแล้วเราจะทำการสร้าง Follow-up intent เพื่อใช้ในการรับคำตอบจากผู้ใช้ หลังจากที่ผู้ใช้ระบุวัน-เวลาที่สร้างกิจกรรมมาแล้ว โดย Appointment-yes จะเป็นการรับคำตอบจากผู้ใช้เมื่อต้องการยืนยันวันจัดกิจกรรม โดย Training phrases ในส่วนนี้จะเป็นคำที่เกี่ยวกับการยืนยัน และ Appointment-no จะตรงข้ามกัน คือเป็นคำที่เกี่ยวกับการยกเลิกวัน-เวลา ที่ผู้ใช้ระบุลงไป

2. การเชื่อมต่อ Agent เพื่อใช้งานกับ Google Calendar

ก่อนที่เราจะทำให้ Agent ของเราใช้งานกับ Google Calendar ได้นั้น เราต้องทำการ Enable ตัว Google Calendar API ของ Google Cloud Platform เสียก่อน โดยการ กดที่ Setting หรือ รูปเฟืองหลังชื่อ Agent ของเรา และคลิกที่ Project ID เพื่อเข้าสู่หน้า Google Cloud Platform

เมื่อเข้ามายังหน้า Google Cloud Platform แล้ว ให้เราเลือกเมนู APIs & Services และเลือกหัวข้อ Dashboard

จากนั้นทำการคลิกที่ +ENABLE APIs AND SERVICES เพื่อค้นหา API ที่เราต้องการใช้งาน

ทำการค้นหา Google Calendar API และทำการ Enable ตัว API เพื่อให้ Agent ของเราใช้งาน API ตัวนี้ได้

หลังจาก Enable ตัว API เรียบร้อยแล้ว ให้เราคลิก Google Calendar API ที่หน้า Dashboard เพื่อทำการสร้าง Account ในการใช้งาน โดยการเลือกเมนู Credentials และคลิกลิ้งค์ Credentials in APIs & Services

ทำการสร้าง Account โดยการคลิกปุ่ม Create Credential และเลือก Service account key

หน้าจอการสร้าง Service account key ส่วนของ Service account ให้เลือก New service account ตั้งชื่อในช่อง Service account name และเลือก Key type เป็น JSON จากนั้นกดปุ่ม Create

ระบบจะแสดงหน้าจอ Service account has no role ให้เราคลิกที่ Create without role ได้เลย

เราจะได้ไฟล์ JSON มา 1 ไฟล์ ซึ่งข้อมูลในไฟล์นี้จะใช้สำหรับการตั้งค่าให้ Agent ของเราสามารถทำงานร่วมกับ Google Calendar ได้

3. การตั้งค่าบน Google Calendar เพื่อให้ Agent สามารถสร้างกิจกรรมบน Calendar ได้

Login เข้าสู่ระบบแล้วทำการเลือก Calendar ในแถบด้านซ้ายมือ คลิกเครื่องหมาย + ข้างหลัง Other calendars และเลือก Create new calendar

ทำการสร้าง Calendar โดยใส่ชื่อและคำอธิบาย

เมื่อสร้าง Calendar เสร็จแล้วให้ทำการ refresh หน้าจอ 1 ครั้ง แล้วเลือก Calendar ที่เราสร้างขึ้นมาเมื่อสักครู่นี้ เลื่อนหาหัวข้อ Share with specific people และคลิกปุ่ม +Add people

เมื่อคลิก +Add people แล้ว ให้เปิดไฟล์ JSON ที่เราดาวน์โหลดมาในหัวข้อที่ 2 จากนั้นให้ copy ข้อมูล client_email มาใส่ในช่อง email และส่วนของ permission ให้เราเลือกเป็น Make changes to events

เมื่อกดปุ่ม send แล้ว ให้เราเลื่อนลงมาข้างล่างหาหัวข้อ Integrate calendar จะมีข้อมูล Calendar ID ให้เรา copy ข้อมูลส่วนนี้ไว้เพื่อใช้ในหัวข้อถัดไป

4. Fulfillment และ Inline Editor

การเชื่อมต่อ Google Calendar API ผ่าน Fulfillment โดยเริ่มจากเลือกเมนู Fulfillment ในส่วนของ Inline Editor ให้เลือกเป็น Enable ซึ่งใน Inline Editor นี้ จะมีไฟล์ index.js และ package.json โดยมีโค้ดเริ่มต้นมาให้ ไปที่ package.json ในส่วนของ dependencies ให้เราเพิ่ม “googleapis”: “^43.0.0” ลงไปภายในปีกกานั้น

จากไหนไปที่ไฟล์ index.js บน Inline Editor และ copy ข้อมูลต่อไปนี้ไว้ที่ global scope

const { google } = require(‘googleapis’);
const calendarId = “
calendarID”;
const serviceAccount = {
Data in JSON FILE};
const serviceAccountAuth = new google.auth.JWT({
email: serviceAccount.client_email,
key: serviceAccount.private_key,
scopes: ‘
https://www.googleapis.com/auth/calendar'
});
const calendar = google.calendar(‘v3’);

— — calendarID ให้เรานำข้อมูล Calendar ID ที่ copy ไว้จากท้ายหัวข้อที่ 3 มาใส่ในส่วนนี้

— — Data in JSON FILE ให้เรานำข้อมูลทั้งหมดในไฟล์ JSON ที่ได้ดาวน์โหลดมาจากช่วงกลางหัวข้อที่ 2 มาใส่ในส่วนนี้

เมื่อทำส่วนนี้เรียบร้อยแล้วเราจะมาเริ่มตัวโค้ดในส่วนของการสร้างกิจกรรมบน Google Calendar กัน โดยโค้ดในส่วนนี้ได้ทำการปรับให้เหมาะสมกับตัว Chatbot ที่เราต้องการใช้งาน ซึ่งท่านใดที่จะนำโค้ดนี้ไปใช้ อาจจะต้องทำการแก้ไขเพื่อให้สามารถใช้งานได้กับ Agent ของท่าน

5. Integrations และ Hangouts Chat

ก่อนที่ Agent ของเราจะสามารถใช้งานบน Hangouts Chat ได้นั้น เราต้องทำการ Enable Hangouts Chat API ก่อน โดยการเลือกเมนู Integrations และเลือก Hangouts Chat

Dialogflow จะถามว่า เราจะให้ใครสามารถที่จะ install ตัว Chatbot ของเราได้บ้าง เมื่อเลือกและกด Start

หลังจากกดปุ่ม Start แล้วจะมีหน้าต่างแจ้งว่าบอทเราทำงานแล้ว ในหน้าจอนี้เราสามารถเข้าไปตั้งค่าชื่อและรูปภาพของ Chatbot ได้ หรือกดปิดที่ปุ่ม Close ตรงมุมขวาบนเพื่อไปเริ่มใช้งานได้เลย

เมื่อเราสร้างตัว Chatbot ใน Hangouts Chat แล้ว เราต้องทำการเรียกใช้ใน Hangouts Chat อีกที โดยการเข้าไปที่ Hangouts Chat ในแถบด้านซ้ายมือ เลือกที่ Person, room, or bot และเลือก Find a bot

จากนั้นทำการค้นหาชื่อบอทตามที่เราตั้งค่าไว้หรือโดยปกติชื่อ Chatbot ของเรา จะเป็นชื่อเดียวกันกับ Agent ใน Dialogflow

กดที่ปุ่ม Message เพื่อเริ่มการใช้งาน Chatbot บน Hangouts Chat

6. ทดสอบการสร้างกิจกรรมบน Google Calendar ด้วย Hangouts Chatbot ที่เราสร้างมา

--

--