สร้าง Python Chatbot ร่วมกับ Line, Dialogflow, Flask, Heroku - Ep.3

บทความสุดท้ายสำหรับซีรีย์ Python Line Chatbot ซึ่งใน Ep สุดท้ายนี้จะเป็นการ deploy โปรเจคท์ของเราไปที่ Heroku กันครับ

สร้าง Python Chatbot ร่วมกับ Line, Dialogflow, Flask,  Heroku - Ep.3

สวัสดีครับสำหรับ Ep.3 เราจะนำ Chatbot ของเรา Deploy ขึ้น Server ให้ Chatbot ของเราสามารถออนไลน์ ได้ตลอดเวลาโดยไม่ต้องเปิดตัว NGROK ทุกครั้ง โดยครั้งนี้เราจะมาใช้ ตัว Server ฟรีที่ชื่อว่า Heroku ซึ่งเป็น Platform as a Service โดยถึงแม้จะเป็นตัวฟรี แต่ Heroku แบบฟรีก็มีข้อจำกัด อยู่ที่หากไม่มีการใช้งานหรือการส่ง request เข้ามายัง server นานเกิน 30 นาที จะให้ server มีการ sleep ซึ่งเมื่อมีการส่ง request เข้ามาอีกรอบ จะต้องใช้เวลาสักครู่ในการ run server อีกครั้ง

บทความแนะนำ (Deploy แบบละเอียด)

****

ติดตั้ง Heroku CLI

ก่อนอื่นให้เราติดตั้ง Heroku CLI(Heroku Command Line Interface) ลงเครื่องเราก่อนไปที่

ทำการ Download และตั้งให้เรียบร้อย ตามเครื่องที่เราใช้งาน

Login เข้าใช้งาน Heroku

เริ่มต้นให้เราไปที่ https://id.heroku.com/login

ทำการสมัครสมาชิก และ login ให้เรียบร้อย

ก่อนที่เราจะทำการ Deploy โปรเจคของเราขึ้นไปยัง Heroku นั้นเราต้องเตรียมไฟล์ต่าง ๆ ก่อนโดยสิ่งที่ต้องทำคือ ให้เราทำการสร้างโฟลเดอร์สำหรับ Deploy ก่อนเพื่อความสะดวก

อย่างแรกที่ต้องการคือ ไฟล์โปรเจคท์ .py ของเรา ในที่นี้ก็คือไฟล์ app.py ที่เราได้ทำมาใน Ep ก่อนหน้านี้

requirements.txt

ต่อมาคือไฟล์ requirements.txt ให้คลิกขวาสร้างจาก Notepad ได้เลย

ให้ทำการเปิดไฟล์ requirements.txt ขึ้นมาและพิมพ์ตามนี้ ซึ่งในที่นี้ก็ชื่อชื่อและเวอร์ชั่นต่างๆของ library ที่เราต้องการนั้นเอง

requirements.txt

Flask==1.1.2
line-bot-sdk==1.17.0
gunicorn==20.0.4

Procfile

ต่อไปเป็นไฟล์ชื่อ Procfile ซึ่งสำหรับไฟล์นี้เป็นไฟล์ที่มีนามสกุลเป็น File เลยซึ่งเราสามารถใช้ตัว IDE ในการช่วยสร้างได้

จากนั้นนำไฟล์ที่ได้มาเก็บไว้ในโฟลเดอร์แล้วให้ทำการเปิดไฟล์ Procfile ด้วย Notepad

Procfile

web:gunicorn app:app

เท่านี้ก็พร้อมสำหรับการ Deploy แล้ว

Go to Heroku Dashboard

เริ่มต้นให้เรากลับไปที่ Heroku ของเรา https://dashboard.heroku.com/apps

กด Create new app ได้เลย

ใส่ชื่อตามที่เราต้องการแล้วกด Create app ได้เลย

เท่านี้เราก็พร้อม Deploy กันแล้ว ให้ไปที่โฟลเดอร์ของเราพิมพ์ CMD ในช่อง address ของโฟลเดอร์เพื่อทำการ run CMD ในตำแหน่งที่เก็บไฟล์ได้เลย

เราจะได้หน้าต่าง CMD ขึ้นมาสำหรับพิมพ์คำสั่งเพื่อ Deploy แล้ว

คำสั่งแรกให้เราพิมพ์ heroku login เพื่อทำการ login ก่อน

ขึ้นแบบนี้ให้กด Enter ได้เลยจากนั้นตัว Heroku จะเด้งหน้า Browser ขึ้นมาให้ login ให้เรากด login ให้เรียบร้อย

เมื่อกด login แล้วให้เรากลับไปดูที่ CMD ของเราจะขึ้นหน้าต่างประมาณนี้ก็ถือว่าผ่านครับ

จากนั้นพิมพ์คำสั่งตามลำดับได้เลย

  1. git init

  2. heroku git:remote -a xxxxx (xxxxx แทนชื่อโปรเจค Heroku ที่เราสร้างโดยของผมจะเป็น heroku git:remote -a chat-bot-test-flask)

  3. git add .

  4. git commit -am “make it better” จากนั้นกด SAVE ก็เรียบร้อย

Push โปรเจคท์ของเราไป Heroku

และคำสั่งสุดท้าย git push heroku master จากนั้นให้รอตัว cmd ทำการ run ให้เรียบร้อย

ถ้าไม่เกิด Error อะไรก็เสร็จเรียบร้อยแล้วที่ให้เรานำ URL ที่ได้จาก Heroku ไปผูกกับ Dialogflow ได้เลยโดย URL ของเราจะเป็น https://xxxx.herokuapp.com/

(xxxx แทนชื่อโปรเจค Heroku ที่เราสร้างโดยของผมจะเป็น https://chat-bot-test-flask.herokuapp.com/)

Dialogflow

ทำการเปลี่ยนชื่อเว็บหรือโดเมนเนมของเราเข้าไปแทนตัว NGROK ที่ใช้ทดสอบก่อนหน้า โดยไปที่ https://dialogflow.cloud.google.com

ใส่ URL ของ Heroku ให้เรียบร้อย กด SAVE แล้วไปลอง Chatbot ของเราได้เลย

เท่านี้เราก็ได้ chat bot ที่สามารถใช้งานได้จริงแล้วซึ่งหากเราต้องการใช้งาน Heroku แบบเต็มประสิทธิภาพเราสามารถดูรายละเอียดค่าใช้จ่ายต่างๆ ได้ที่นี้เลย https://www.heroku.com/pricing

สำหรับ Ep.3 ซึ่งเป็น Ep สุดท้าย ผมก็ขอจบลงเท่านี้ก่อน และหวังว่าทุกคนจะได้โปรเจคท์ Python Line Chatbot ไว้ใช้งานและ deploy เสร็จสรรพเรียบร้อยกันแล้วนะครับ ติดตามซีรีย์ที่เกี่ยวข้องกับ Chatbot ในโอกาสหน้ากันได้เลยยังมีอะไรให้ศึกษากันอีกเพียบครับ ถ้าชื่นชอบบทความนี้ ซัพพอร์ตเราได้โดยการกด Response หรือคอมเมนต์ด้านล่างบทความนี้ได้เลยนะครับ ขอบคุณครับ

สำหรับใครที่ยังไม่ได้อ่าน 2 Ep ก่อนหน้าสามารถอ่านได้ที่ลิ้งค์นี้ได้เลยนะครับ

Python Line Chatbot Series by STACKPYTHON