landing_image landing_image landing_image landing_image landing_image landing_image landing_image
portrait

YX.S

成為一個厲害的普通人

擁有一個 Line 聊天機器人感覺好潮啊~

抱著這樣的想法,然後也有想爬的資料

決定自己動手做一個自己的機器人!

本篇紀錄了建立機器人的詳細過程

 

一、Line開發者平台建立資料

要建立 Line 聊天機器人,首先當然要去 Line 申請

我們到 Line Developer 並使用自己的 Line 帳號登入

登入後會到自己的頁面去,點選頁面上的 Create 按鈕

 

點選 Create 後 就輸入自己的專案名稱

送出後,就會建立一個專案,然後我們再選擇 Messaging API Channel

 

然後接下來就會要我們輸入一些專案的資訊

填完資後按下送出,專案就建立完成了!

 

這時候在 Basic settings 之下可以看到 『Channel secret』

然後再去到 Messaging API settings 之下可以看到 『Channel access token』

這時候 token 應該是空的,按下右邊的 issue 按鈕之後,就會出現 token 了

 

要把這兩個值記下來,會在程式碼中使用到

 

二、Heroku 申請

上面 Line 專案建立完成之後

我們可以去到 Heroku 並註冊加入會員

Heroku 是一個 Pass 服務,可以讓我們很方便的部屬專案

而且是免費的,一個帳號每個月可以免費使用 450 小時

對個人要使用的 Line 機器人來說應該非常足夠了

 

不過要注意的是如果沒在使用,Heroku在沒有連線超過 30 分鐘時

會自動休眠,每次從新啟動需要等待30秒左右~

 

註冊完成後,我們可以選擇 Create New App

然後輸入一個名稱,並點 Create 送出

 

開好專案之後,我們要回到 Line 開發者平台

將我們的 heroku 網址存起來

在專案內的 Messaging API 底下可以看到 Webhook settings

將我們在 heroku 的專案網址貼上:

https://.herokuapp.com/callback

 

接著要讓本機可以與 heroku連結

去到 Heroku Dev Center 然後點選 The Heroku CLI

 

然後會看到裡面有介紹如何安裝 Heroku CLI

我們在自己的 bash 進行安裝:

brew tap heroku/brew && brew install heroku

 

確認有安裝完成

heroku

 

本機登入 

heroku login

 

三、部署及錯誤排解

在 Line 以及 Heroku 都準備完成後

就可以將聊天機器人部署上去了!

 

直接到 Line 官方的將範例複製下來

我是選擇使用 Python,在這之前還要記得安裝好套件

pip install line-bot-sdk

 

然後新增一個資料夾,底下就一個 main.py 存入剛剛複製的範例

然後記得程式碼中的

 

line_bot_api = LineBotApi('YOUR_CHANNEL_ACCESS_TOKEN')

handler = WebhookHandler('YOUR_CHANNEL_SECRET')

 

要換成自己的 sercert 以及 token~

 

建立 git 

git init

 

將專案與 heroku 連結

heroku git:clone -a

 

專案加入追蹤並上傳

git add .

git commit -m"init app"

git push heroku master

 

第一次上傳失,一直顯示失敗

後來才發現需要將 heroku 專案做好設定,讓他知道我上傳的是 Python程式

 

 

於是我們到 heroku 的專案中,選擇 setting

底下有一個 Buildpacks 區塊,點選右邊的 Add buildpack,選擇 python 並按確定

 

完成這設定之後,還是有遇到錯誤

App not compatible with buildpack

 

後來才知道部署 Python,還需要有 requirements.txt 檔以及 Procfile 檔

前者是告訴 server 需要安裝的套件

後者是告訴 heroku 在部屬時需要做的事情

requirements.txt 可以這樣產生:

pip freeze > requirements.txt

Procfile 則需要自己建立,我建立了之後裡面有這一行:

web: gunicorn main:app –preload

告訴 heroku 要利用 gunicorn 執行 web server

 

這樣,完成之後, Line 機器人就可以動起來囉!!