Line Bot 102 — จับมือทำบอท (Python)

Sitthi Thiammekha
Alpha EM Group
Published in
3 min readAug 17, 2018

สืบเนื่องจากมีสมาชิกใหม่ที่สนใจเข้าร่วม LINE Hack
She บอกว่า อยากลงแข่งด้วย แถมอยากเขียน code เองอีกด้วย
แต่ She บอกว่า เขียนด้วย Python ได้เปล่า

อ่ะ ด๊ายยยยยยยย

ก็อย่างที่บอกไว้ใน Blog ที่แล้ว ว่าจริงๆ LINE มี sdk ไว้ให้หมดแล้ว
ไม่ว่าจะเป็น nodejs java php go ruby ios android c# perl หรือแม้กระทั่ง python
ถ้าเคยเขียนโปรแกรมมาสักภาษาหนึ่ง ก็ทำ LINE Bot ได้แน่นอน

ใครยังไม่ได้อ่าน Blog ที่แล้ว ที่สอนเริ่มต้น Bot ด้วย nodejs ลองไปอ่านดูก่อนนะ

วันนี้ ในฐานะของคนที่ ไม่เคย เขียน Python เลย
มาลองดูกันว่า ผมจะรันบอทได้สำเร็จมั้ย

เริ่มต้นจาก search google (อ่านว่า จูเจิ้น) เลยครับ

line bot sdk python

ก็จะเจอผลการค้นหา หน้าตาแบบนี้

หรือ กดตาม link นี้เลยครับ line-bot-sdk-python
ตรงนี้แนะนำให้ลองอ่าน Readme ดูก่อน
แต่เผื่อไม่ให้เป็นการเสียเวลา ผมจะพาไปลองเล่น example กันเลย

เริ่มจาก clone project มาเลยครับ

git clone https://github.com/line/line-bot-sdk-python.git
cd line-bot-sdk-python/examples/flask-kitchensink/

จากนั้น แวะมาดู Readme ของ Example กันสักหน่อย
เขาบอกว่า

อ่ะ ทำตามครับ
ตรง YOUR_LINE_CHANNEL_SECRET กับ YOUR_LINE_CHANNEL_ACCESS_TOKEN ก็เอามาจาก developer console เหมือนเดิม จะใช้ตัวเดิมก็ได้ครับ

แก้ 2 ค่านี้ แล้วก็รันคำสั่งบน terminal ได้เลย

export LINE_CHANNEL_SECRET=YOUR_LINE_CHANNEL_SECRET
export LINE_CHANNEL_ACCESS_TOKEN=YOUR_LINE_CHANNEL_ACCESS_TOKEN

จากนั้น ก็ติดตั้ง dependency ซึ่งมีแค่ 2 ตัวคือ line-bot-sdk กับ flask ด้วยคำสั่ง pip

ใครยังไม่เคยติดตั้ง pip ก็ไป download ได้ที่ pip ครับ
หรือติดตั้งง่ายๆ ใน 2 ขั้นตอน

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python get-pip.py

จากนั้นก็เริ่มติดตั้ง dependency ได้เลยครับ

sudo pip install -r requirements.txt

ถ้าได้ผล หน้าตาประมาณนี้ก็แปลว่า bot ของคุณพร้อมใช้งานละ
ไปเริ่ม รันกันเลย

python app.py

อ่ะ เสร็จแล้ว Bot server ทำงานละ สังเกตว่า listen อยู่ที่ port 8000

เหลือขั้นตอนสุดท้ายคือ expose port นี้ให้เป็น public url ซึ่งเราก็ใช้ ngrok นั่นเอง

./ngrok http 8000

จากนั้นก็เอา url นี้ ไปลงทะเบียน webhooks ที่ LINE developers console

อ่ะ เสร็จแล้ว ทีนี้ก็ไปเริ่มทดสอบกันเลย

Ta daaaa
จะเห็นว่าเราเชื่อมต่อกับ LINE Bot เรียบร้อยแล้ว

ที่แตกต่างจาก LINE SDK ของ nodejs คือ ของ python นี่สามารถรับข้อความเป็นรูปภาพหรือวิดีโอได้ด้วยนะ ลองส่งให้บอทดูสิ แต่ไม่เอาแบบ Dark Side นะ

นอกจากนี้ยังรองรับข้อความแบบใหม่ล่าสุดที่เป็น flex กับ quick_reply แล้วด้วย

ลองไปเล่นกันดู ข้อความที่บอทตอบสนอง ได้แก่

profile
buttons
confirm
carousel
image carousel
imagemap
flex
quick_reply
ถ้าพิมพ์คำอื่นๆ บอทจะ echo คำนั้นกลับ

เห็นมั้ยว่าทำบอทมันไม่ยากเลย ลองดูนะ
เสาร์อาทิตย์ ใครว่างๆ ลองทำบอทเล่นๆมาโชว์กันได้นะครับ

ถ้าคิดไม่ออก ว่าจะทำอะไร
ผมทิ้งโจทย์ไว้ให้ละกัน ลองทำดู จะใช้ภาษาอะไรก็ได้

ลองใช้ Google Cloud Translation API แปลภาษา TH -> EN
พิมพ์ข้อความหาบอทในภาษาไทย บอทจะตอบกลับเป็นภาษาอังกฤษ

ส่วนใครอยากร่วมทีม LINE Hack ยังมีที่ว่างอยู่นะ
ถ้าคนเกิน 5 คน ก็จะจัดทีมที่สองเลยก็ได้
ใครสนใจ ลงชื่อไว้ก่อนเลยครับ

https://docs.google.com/spreadsheets/d/1GqWcYW1Al-6jHCZ6SfKA7xl9bHbT8Uv5yQHntNULG8g/edit?usp=sharing

ให้เวลาตัดสินใจกันถึงวันจันทร์ละกัน
วันจันทร์จะจัดทีมแล้วนะครับ
จะได้มีเวลาคิดไอเดีย+ทำ prototype กัน

อ้อ ได้ข่าวว่า เจ๊ใหญ่ เขาจะซุ่มฝึกซ้อมนะครับ
ชาว Dev อย่าให้แพ้เขาหล่ะ

Happy Weekend ครับ

--

--