สอน+วิธีทำ Line Messaging Api

Prapon Chinchan
3 min readNov 29, 2017

--

บทความนี้ จะมาสอนการใช้ Line Messaging Api ซึ่งเป็นช่องทางสำหรับนักพัฒนา ที่ต้องการส่งข้อความต่างๆ ผ่านโปรแกรมแชท LINE ด้วยภาษา Python

บทความนี้ เป็นบทความซีรีย์ มีด้วนกัน 3 ตอนด้วยกัน ดังนี้
1) สอน+วิธีทำ Line Messaging Api
2) Chatbot ฉลาดขึ้น ด้วย Dialogflow
3) อัพเดทราคาน้ำมัน และราคาทอง ส่งตรงทุกเช้า ผ่าน LINE

กระบวนการทำงาน

โปรแกรม LINE <-> API <-> Server ของเรา

Line ได้ออก Product ขึ้นมาตัวหนึงเรียกว่า Line Messaging Api เป็นการส่งข้อมูลระหว่าง Line และ Server ของเรา กรณีที่ User หรือผู้ที่พูดคุยกับ LINE@ ของเรา(ต่อไปนี้จะเรียกว่า Bot) LINE จะทำการส่ง Request ไปยัง Webhook ที่เราได้ตั้งค่าเอาไว้ Server ของเราจะได้รับข้อมูลจาก LINE ในรูปแบบของ JSON และสามารถ ส่ง Data ย้อนกลับไปยัง LINE ด้วยข้อมูลที่เราต้องการ

ขั้นตอนที่ 1 — สร้าง Line@

คลิ๊กที่ Start using Messaging API

ล็อคอินเข้าหน้า Console ของ Line Developer ได้ที่ลิ้งค์ https://developers.line.me/en/

*อาจจะต้องกรอก Email และ Password ที่ได้ทำการผูกไว้กับ Line เพื่อ Login

กรอกชื่อ Provider ที่ต้องการ และกด Add

ขั้นตอนนี้ เป็นการสร้าง 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

  1. 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 แล้ว

พิมพ์คำสั่ง source o-oh-bot/bin/activate

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 
ขึ้นเลข version แบบนี้ แสดงว่าลงเสร็จสมบูรณ์

สร้างไฟล์กันเลยดีกว่า

ก่อนอื่นทำการสร้างไฟล์ขึ้นมาชื่อว่า 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

คลิ๊กที่ กรอบสีแดงๆ

ยังเขียนไม่จบ ยาวชิบหาย เดี๋ยวมาเขียนต่อนะ

--

--