สอน+วิธีทำ Line Messaging Api
บทความนี้ จะมาสอนการใช้ Line Messaging Api ซึ่งเป็นช่องทางสำหรับนักพัฒนา ที่ต้องการส่งข้อความต่างๆ ผ่านโปรแกรมแชท LINE ด้วยภาษา Python
บทความนี้ เป็นบทความซีรีย์ มีด้วนกัน 3 ตอนด้วยกัน ดังนี้
1) สอน+วิธีทำ Line Messaging Api
2) Chatbot ฉลาดขึ้น ด้วย Dialogflow
3) อัพเดทราคาน้ำมัน และราคาทอง ส่งตรงทุกเช้า ผ่าน LINE
กระบวนการทำงาน
Line ได้ออก Product ขึ้นมาตัวหนึงเรียกว่า Line Messaging Api เป็นการส่งข้อมูลระหว่าง Line และ Server ของเรา กรณีที่ User หรือผู้ที่พูดคุยกับ LINE@ ของเรา(ต่อไปนี้จะเรียกว่า Bot) LINE จะทำการส่ง Request ไปยัง Webhook ที่เราได้ตั้งค่าเอาไว้ Server ของเราจะได้รับข้อมูลจาก LINE ในรูปแบบของ JSON และสามารถ ส่ง Data ย้อนกลับไปยัง LINE ด้วยข้อมูลที่เราต้องการ
ขั้นตอนที่ 1 — สร้าง Line@
ล็อคอินเข้าหน้า Console ของ Line Developer ได้ที่ลิ้งค์ https://developers.line.me/en/
*อาจจะต้องกรอก Email และ Password ที่ได้ทำการผูกไว้กับ Line เพื่อ Login
ขั้นตอนนี้ เป็นการสร้าง Provider ถ้ายังไม่เคยสร้าง ก็กด เครื่องหมาย + และกรอก ชื่อ Provider ที่เราต้องการ, กด Add และกด Next page ได้เลย
ขั้นตอนนี้ เป็นการกรอกข้อมูล Bot ของเรา ใส่ภาพ ชื่อบอท(Bot name) และเลือก Plan ในที่นี้ จะให้เลือกได้แค่ Developer Trial ซึ่งมีข้อจำกัดคือ เพิ่มเพื่อนได้แค่ 50 คน เท่านั้น
กรอกกข้อมูลให้เสร็จสิ้น และกด Confirm ก็เป็นอันเสร็จสิ้น
ขั้นตอนที่ 2 — เริ่มพัฒนา Chatbot
หัวใจหลัก ของการพัฒนา Chatbot ก็คือ Webhook URL หรือกล่าวคือ เมื่อมีการส่ง Message ผ่าน Line@ ที่เราได้ตั้งให้เป็น Chatbot ไว้ จะทำการยิง POST Request มายัง Server ของเราได้ที่ทำการตั้งค่าไว้
ก่อนอื่นจะมาเขียนตัว Bot กันก่อน ทั้งนี้ผมจะใช้ Python ในการพัฒนาเป็นหลัก ซึ่งขั้นตอนการเตรียมการก่อนการพัฒนามีดังนี้
ลง Virtualenv
- Virtualenv เป็นตัวช่วยในการแยก environment ในการทำงานแต่ละโปรเจ็คออกจากกัน ทำให้สามารถพัฒนา คนละ Version หรือลง Libary แยกกันได้โดยง่าย
$ pip install virtualenv
2. สร้าง Env ชื่อ o-oh-bot และใช้ python3 ในการพัฒนา โดยใช้คำสั่ง
$ virtualenv -p python3 o-oh-bot
3. จะได้ Folder ชื่อ o-oh-bot ขึ้นมาตัวหนึง ทำการพิมพ์คำสั่ง เพื่อเข้าสู่โหมดทำงาน
$ source o-oh-bot/bin/activate
จะสั่งเกตุได้ว่า จะมีชื่อ (o-oh-bot) ข้างหน้า $ นั่นก็หมายความว่า เราทำงานภายใต้ environment ที่ชื้อ o-oh-bot แล้ว
Line Bot Sdk
ทาง LINE official มี SDK ที่พร้อมใช้งานแก่ Developer โดยใช้คำสั่งต่อไปนี้
(o-oh-bot)$ pip install line-bot-sdk
หรือที่นี่ https://github.com/line/line-bot-sdk-python
Flask
เป็น Micro web framework ที่ใช้งานได้ง่ายมากๆ และนี่คือหัวใจสำคัญ หรือเป็นหน้าด่าน ที่จะทำให้ LINE สามารถเชื่อมต่อกับ Bot ของเราได้ ทำการลง โดยใช้คำสั่งต่อไปนี้
(o-oh-bot)$ pip install flask
หรือที่นี่ http://flask.pocoo.org/
ngrok
ตัวช่วยสำคัญ ที่จะทำให้เวลาเรารัน webserver บนเครื่องตัวเอง สามารถมองเห็นได้จากภายนอก และยังมี Web UI ให้เราได้ดู Request ที่วิ่งเข้ามาได้ด้วย(สะดวกมาก)
ดาวโหลดและติดตั้งได้ที่ https://ngrok.com/
หลังจากลงเสร็จ ลองพิมพ์คำสั่ง
(o-oh-bot)$ ngrok -v
สร้างไฟล์กันเลยดีกว่า
ก่อนอื่นทำการสร้างไฟล์ขึ้นมาชื่อว่า app.py และใช้โค๊ดดังต่อไปนี้
from flask import Flask, request, abortfrom linebot import (LineBotApi, WebhookHandler)from linebot.exceptions import (InvalidSignatureError)from linebot.models import (MessageEvent, TextMessage, TextSendMessage,)app = Flask(__name__)line_bot_api = LineBotApi('YOUR_CHANNEL_ACCESS_TOKEN')handler = WebhookHandler('YOUR_CHANNEL_SECRET')@app.route("/callback", methods=['POST'])def callback():# get X-Line-Signature header valuesignature = request.headers['X-Line-Signature']# get request body as textbody = request.get_data(as_text=True)app.logger.info("Request body: " + body)# handle webhook bodytry:handler.handle(body, signature)except InvalidSignatureError:abort(400)return 'OK'
@handler.add(MessageEvent, message=TextMessage)def handle_message(event):line_bot_api.reply_message(event.reply_token,TextSendMessage(text=event.message.text))if __name__ == "__main__": app.run()
ก่อนที่จะเริ่มต้นพัฒนา Chatbot ผ่าน LINE โดยใช้ LINE Messaging Api สิ่งสำคัญที่สุดคือ Channel secret , Channel access token และ Webhook URL