เก็บข้อมูล LINE Chatbot ด้วย MongoDB (EP.6)

Aeknarin Sirisub
LINE Developers Thailand
5 min readJul 5, 2021

--

สวัสดีครับทุกท่าน ห่างหายกันไป 2 เดือน วันนี้ กวิ้นกลับมาพร้อมกับ เทคนิคเจ๋งๆ ที่จะมายกระดับการเขียน LINE Chatbot ให้เก๋ากว่าเดิม มาฝากทุกท่าน จะเป็นยังไงไปติดตามกันเลย

ในช่วงนี้น้องกวิ้นได้รับ inbox เข้ามาหลายๆคนอยากให้บอกถึงแนวทางการเก็บข้อมูลเวลาที่เราทำ chatbot ขึ้นมาแล้วว่าจะทำอย่างไรได้บ้าง วันนี้น้องกวิ้นก็เลยจะมาบอกเทนนิคการเก็บข้อมูลเข้า Database กันนะครับโดยที่วันนี้เราจะมาเก็บข้อมูลเข้า MongoDB กัน ถ้าหากว่าใครยังไม่ทราบหรือไม่เคยใช้ MongoDB มาก่อนกวิ้น แนะนำให้ไปอ่านบทความนี้ก่อนเพื่อทำความเข้าใจในเบื้องต้นนะจ๊ะ

PART 1 — สร้าง Cluster ของ MongoDB

ก่อนที่เราจะเก็บข้อมูลลง Database ได้เราจำเป็นที่จะต้องสร้าง Database ซะก่อนซึ่งวันนี้เราจะสร้าง MongoDB บน Clound กันซึ่งสามารถสมัครใช้ฟรีได้เลย ก่อนอื่นให้ click ไปที่ https://www.mongodb.com/cloud/atlas แล้วจะพบหน้าจอนี้

ให้คลิ๊กที่ Start Free

เมื่อคลิ๊กเข้ามาแล้วจะพบกับหน้าสำหรับให้เรา Sign in ซึ่งถ้าหากว่าเรายังไม่ account เราจะต้องทำการ sign in ซะก่อนถ้าหากว่าใครมี account แล้วก็สามารถที่จะ Sign inได้เลย

สำหรับใครที่ยังไม่มี account เราสามารถที่จะ sign in ได้สองวิธีนั่นก็คือเราสามารถที่จะ sign in ได้โดยการผูกกับ Google account หรือสามารถที่จะ sign in หรือ สร้าง account ใหม่ผ่านทาง Atlas ได้เลย ในกรณีนี้ผมจะใช้วิธีการ sign in ผ่านทาง google account โดยให้กดปุ่ม Sign up with Google

เมื่อกดเข้ามาแล้วจะพบกับหน้าที่ให้เราเลือก account ของ Google เพื่อใช้สำหรับการ sign in เมื่อเราทำการเลือก account google แล้วก็จะพบกับหน้าจอนี้

ให้เราทำการอ่านข้อกำหนด และ ทำการ accept ให้เรียบร้อยแล้วให้กด Submit

หลังจากที่กด Submit แล้วจะพบกับหน้านี้

หลังจากนั้นเราจะต้องทำการสร้าง organization โดยให้กดที่ปุ่ม Create an Organization

ให้เราทำการกรอกข้อมูล Organization ของเราลงไป และ ทำการเลือกเป็น MongoDB Atlas หลังจากนั้นให้ทำการกด next

หลังจากนั้นเราก็จะพบกับหน้าที่ให้เราสามารถ add member เข้ามาในทีมได้ซึ่งเราสามารถมาเพิ่มในภายในหลังได้ เพราะฉะนั้นเราจะข้ามไปก่อน ให้คลิ๊กที่ปุ่ม Create Organization ได้เลย

เมื่อเราทำการสร้าง Organization เรียบร้อยแล้วระบบจะนำเรามายังหน้าสำหรับสร้าง project ซึ่งเราจะต้องทำการสร้าง project ซะก่อน ให้เราคลิ๊กที่ New Project

ต่อจากนั้นให้เราทำการ ใส่ชื่อ project ของเราลงไป และ กดปุ่ม Next ได้เลย

เมื่อเรากดปุ่ม Next มาแล้วจะเจอหน้าให้เรา add member เข้ามายัง project ตรงนี้ถ้าเราอยากเพิ่มใครเข้ามาสามารถเพิ่มได้เลย หรือ ถ้าไม่เพิ่มก็สามารถที่จะกด Create Project ได้เลย

เมื่อเราทำการสร้าง Project แล้วจะเข้ามาสู่หน้าสำหรับสร้าง Cluster ให้กดที่ปุ่ม Build a Cluster

หน้าต่อมาเค้าจะให้เราเลือก package สามารถเลือก package ได้ตามใจชอบเลยฮะ แต่กวิ้นจะเลือก แบบ Free นะฮะ เมื่อเลือก package ได้แล้วก็กดปุ่ม Create a Cluster ได้เลย

ต่อจากนั้นเค้าก็จะให้เราเลือกผู้ให้บริการ ซึ่งมีทั้ง AWS,Google Cloud และ Azure ใครอยากได้เจ้าไหนเลือกได้เลยย แต่กวิ้นเลือก AWS หลังจากนั้นเค้าจะให้เราเลือกว่าจะใช้ Clound ที่ติดตั้งอยู่ที่ไหน ตรงนี้กวิ้นแนะนำเลือกเป็น Singapore เมื่อเราทำการเลือกแล้วก็กด Create Cluster ได้เลย

เมื่อกด Create Cluster แล้วเราอาจจะต้องรอนิดนึงเพื่อให้ระบบทำการสร้าง Cluster ให้เราซึ่งจะใช้เวลาประมาณ 5–6 นาที เมื่อ Cluster สร้างเสร็จแล้วจะขึ้นหน้าจอแบบนี้เท่ากับว่าเราสร้าง Cluster สำเร็จแล้ว

PART 2— สร้าง Database ใน MongoDB

เมื่อเราทำการสร้าง Cluster เรียบร้อยแล้วหลังจากนั้นจะต้องทำการเชื่อมต่อกับ Cluster เพิ่มทำการสร้าง Database ของเราขึ้นมาซึ่งตรงนี้ผมแนะนำ tool ตัวนี้เลยครับ https://www.mongodb.com/products/compass สามารถ download ได้ทั้ง window และ mac เลย เมื่อ download มาแล้วเมื่อทำการเปิดโปรแกรมขึ้นมาหน้าตาจะเป็นประมาณนี้

ซึ่งจากตรงนี้เราสามารถที่จะทำการ connect กับ Cluster ที่เราทำการสร้างมาแล้วได้เลยโดยการนำ link connection มาใส่ แต่ว่าตอนนี้เรายังไม่มี เราสามารถทำการสร้างได้โดยไปกดที่ปุ่ม CONNECT

ในครั้งแรกเมื่อเราทำการกดปุ่ม CONNECT ระบบจะขึ้นมาให้เราทำการตั้ง username และ password และ ทำการตั้งค่า ip ที่จะเข้ามาเชื่อมต่อกับตัว Cluster ซึ่งตรงนี้เราสามารถทำการ setup ได้ถ้าหากว่าเราต้องการล็อก ip ที่เข้าถึง แต่ถ้าเราไม่ได้ซีเรียสสามารถกดปุ่ม Allow Access from Anywhere

ถัดจากนั้น ให้กด Add IP Address หลังจากนั้นให้ทำการกรอก username และ password และกดปุ่ม Create Database User

หลังจากนั้นให้กดปุ่ม Choose a connection method

ต่อมาระบบจะให้เราทำการเลือก connection ว่าเราจะเชื่อมต่อผ่านทางไหนให้เราเลือกเชื่อมต่อผ่าน MongoDB Compass

เมื่อเราเลือก connection แล้วหน้าต่อมาจะมีให้เลือกว่าเรามีโปรแกรมแล้วหรือยัง ถ้าเรายังไม่ได้ download โปรแกรมเราสามารถที่จะมา download ตรงนี้ได้ แต่ถ้าเรา download มาแล้วให้ copy link ที่ได้ไปใช้ได้เลย

เมื่อเราทำการ copy link มาแล้วให้กลับมาที่โปรแกรม MongoDB Compass และ นำ link มาวางในช่อง connection ที่สำคัญอย่าลืมเปลี่ยน password นะจ๊ะ

เมื่อเรากดปุ่ม connect และ ทำการ connect สำเร็จจะขึ้นหน้าจอแบบนี้มาให้

เมื่อทำการ connect สำเร็จแล้วให้เรากดปุ่ม CREATE DATABASE เพื่อทำการสร้าง Database

ให้เราทำการตั้งชื่อ Database และ collection ซึ่งในส่วนของ collection นี้นั้นให้เรามองเสมือนเป็น table ใน mysql ก็ได้ครับ หลังจากนั้นให้กดปุ่ม CREATE DATABASE

เมื่อเราทำกดปุ่ม CREATE DATABASE แล้วก็จะพบกับ Database ที่เราทำการสร้างขึ้นมาให้เราลองกดเข้าไปที่ Database ที่เราทำการสร้างขึ้น

เราจะเจอกับ Collection ที่เราสร้างขึ้นมา

PART 3— เก็บข้อมูล LINE Chatbot ลง MongoDB

ในที่สุดเราก็มี Database ที่พร้อมจะให้เรานำข้อมูลเข้าไปเก็บแล้วววว มาถึงขั้นตอนการเขียน code เพื่อนำข้อมูลที่เราได้จาก LINE Chatbot ไปเก็บใน MongoDB กันในส่วนนี้ กวิ้นขอลัดขั้นตอนการเขียนเชื่อมต่อ LINE Chatbot ไปเลยนะจ๊ะ ส่วนใครที่พึ่งเข้ามาอ่านบทความของกวิ้นสามารถตามไปดูบทความการเชื่อมต่อ LINE Chatbot ที่บทความนี้ก่อนได้เลยจ้า

เมื่อเราทำการเขียน Chatbot เชื่อมกับ server ของเราได้แล้วเราก็จะมาเริ่มเขียนโปรแกรมเพื่อเชื่อมต่อกับ MongoDB กันเลย รายละเอียดเพิ่มเติมสำหรับการติดตั้งสามารถดูเพิ่มได้ที่ลิงค์นี้นะจ๊ะ

เอาละเมื่อเราติดตั้งส่วนเสริมเพื่อช่วยในการเชื่อมต่อกับ MongoDB แล้วก็ไปลุยกันต่อเลย เริ่มแรกเราก็จะเขียนโปรแกรมรับข้อมูลจาก LINE ซะก่อน

/*Get Data From POST Http Request*/$datas = file_get_contents('php://input');/*Decode Json From LINE Data Body*/$deCode = json_decode($datas,true);

หลังจากนั้นเราก็จะมาเขียนส่วนเชื่อมต่อกับ MongoDB โดยเพิ่มเติม code ส่วนนี้เข้าไป ซึ่งองค์ประกอบหลักๆ ประกอบไปด้วยส่วนที่ 1 ก็คือการเชื่อมต่อกับ Cluster ที่เราได้ทำการสร้างกันมาตั้งแต่ขั้นตอนที่สอง ต่อมาจะเป็นการชี้ไปยัง Database และ จบด้วยการชี้ไปยัง Collection ที่เราได้ทำการสร้างเอาไว้ จะออกมาเป็นแบบนี้

$client = new MongoDB\Client('mongodb+srv://admin:xxx@cluster0.yubyy.mongodb.net/myFirstDatabase?retryWrites=true&w=majority');
$db = $client->TEST;
$collection = $db->line_user_data;

หลังจากนั้นเราก็จะทำการเขียนเพิ่มเติมส่วนของการ insert ข้อมูลเข้าไป เพื่อเก็บข้อมูลการ Chat ที่ถูกส่งเข้ามาใน Chatbot แบบนี้

$insertOneResult = $collection->insertOne(
$deCode
);

เมื่อเรานำ code มาประกอบร่างกันแล้วก็จะได้เป็นแบบนี้

เอาละไปดูผลลัพธ์กันดีกว่าาาา

ไหนดูซิ๊เข้า Database หรือเปล่านะ

ว้าวววข้อมูลเข้า Database เรียบร้อยสวยงาม

เป็นยังไงกันบ้างครับสำหรับ EP นี้หวังว่าเพื่อนๆ จะสนุกไปกับการได้ทดลองทำกันนะครับ พบกันใหม่ EP หน้า สำหรับวันนี้ บ๊ายบายยย

ตอนนี้ LINE Developers เรามีแฟนเพจแล้วนะจ๊ะอย่าลืมไปกด LIKE กันด้วยนะ

https://www.facebook.com/LINEDEVTH

ส่วนใครที่ยังไม่ได้เข้าร่วมกลุ่มกับเรา คลิ๊กที่นี่ได้เลย

https://www.facebook.com/groups/LINEDEVTH

Resources

Developer console
https://developers.line.biz/en/

Messaging API Document
https://developers.line.biz/en/docs/messaging-api/

Messaging API Reference
https://developers.line.biz/en/reference/messaging-api/

--

--