Python-LINEbot 製作教學 -建立LINEbot與webhook串接 - flask
關於自製的LINEbot,無論是商用或是個人使用,都已經常存在於日常生活中。
這篇製作教學提供給有python程式底子的夥伴,快速製作自己的LINEbot。
這邊不使用heroku,而是用glitch直接線上編輯程式並產生可用於webhook的網址。
heroku下次有機會再寫教學。
一、前置設定
1.首先到LINE Developers登入(可使用自己有的LINE帳號)
2.點選Messaging API進入說明頁面,移動到畫面右下角「開始體驗」便可以建立一個Bot(網站上都有按鈕,就資料填一填下一步按完就對了)
3.創建好之後按Messaging API的選項,會到Channel settings
做好應該會有這樣的介面(Provider List內會有創建好的專案)
4.在Basic settings中找到Channel secret 並將內容完整複製存起(等下會使用到)
5.移動到Messaging API
往下滑取得Channel access token並將內容完整複製存起(等下會使用到)
注意:請勿將Channel secret 與 Channel access token公開或外流
順帶一提,可以利用這裡的ID(此ID就是你bot的ID,可以在新增好友的搜尋中找到)
或是直接掃描QRcode加入自己做的LINEbot好友。
但現在Bot應該只會回覆原廠的預設功能。
6.為了關掉原廠的自動回覆功能並改成Webhook,找到Auto-reply messages 並按下右邊的Edit
在進階設定中設定如下
以上前置作業都完成了
請確認自己是否已經完成這三件事
1.取得Channel secret 與 Channel access token
2.加入自己的LINEbot好友
3.停用原本的自動回應,啟用Webhook
完成就繼續往下看(注意LINE的網頁不要關)
二、程式修改
我在glitch上面用Python寫了一個LINEbot的初始程式
開啟網頁後,稍微往下移動,中間視窗的右下角有一個按鈕
點下去會開啟頁面
我已經設定與寫好的程式碼就在這裡,而這一份你開起來可以修改的專案便是你自己的!
(記得申請glitch的帳號,這樣你改好的專案才會存在自己帳號裡)
程式與檔案的設定說明
1.env
這裡面的設定內容
是即使像我這樣將程式開放公開給大家看,也不會顯示的內容
只有我自己的帳號登入可以看的到,通常會將重要不可外洩的資訊塞在這裡
例如我原本的SECRET其實是有值的,但打開看到會是Variable Value
在此請將剛剛請大家保留下來的Channel secret 的內容貼上去Variable Value 的位置
2.glitch.json
這個檔案之中重要的可參考前兩行
第一行使用pip3安裝了左側requirements.txt中的套件
第二行表示程式運行的起始程式是左側的server.py
如果改了server.py的名字,記得在這邊的設定也要做修改
3.requirements.txt
這個檔案中每一行都是需要安裝的套件
目前有使用到的Flask以及LINE的SDK
所以在此會顯示
若之後有需要安裝其他套件,將套件名稱往下一行增加即可
4.server.py
這個就是主程式啦!
該有的註解都寫在裡面了,主要需要修改的部分為 Channel access token
確認已經改了Channel secret 與 Channel access token後
要開始最後工程啦
三、串接webhook
點選專案左上角的
第一行的部分是專案名稱,可以直接修改。
記得要改的話現在就要先改,因為網址就是專案名稱。
若已經連到LINE後便不可以隨便修改,否則LINE也需要重新設定。
其他是專案可以設定的內容
喜歡黑色主題的,可以點選有月亮的那個按鈕圖示(個人通常是用黑色的)
我將專案名稱改成了lineline,會直接顯示在畫面上
接著點選下方的
選擇Live App 將下面的網址複製(可點copy)
其他Project Page跟Code是分享自己的程式碼用的,不要選錯
接著回到LINE的網頁
在Messaging API的選項下方找到Webhook settings
把剛才複製的網址貼上去 後面加上/callback
圖片中黑框的部分應該是你程式碼的專案名稱
設定完成後
回到程式碼server.py
找到這段
此時webhook已經認證完畢
請將程式碼召喚回來(?)
就是把「'''」刪掉就好啦 像醬
每一次修改程式之後
左下角要出現OK 才代表程是沒有問題
也可以點它 在展開的Tools裡面選擇Logs
就可以看到執行的結果
(每一次修改程式都會自動執行)
以上步驟都結束的話
你現在可以使用LINE,跟自己的bot對話了!
目前我寫的程式是讓它重複你說的話。
簡易說明
剛才取消註解的那段程式碼中
event.message.text 是使用者傳送的文字訊息(bot接收到的訊息)
你也可以下個print去把它印出來,在log就會看到內容
message = TextSendMessage(text=event.message.text)
TextSendMessage代表的是bot要傳送文字的訊息內容,
我將text的值設定為剛才使用者傳送的內容,並將整段存在message變數中。
line_bot_api.reply_message(event.reply_token, message)
這句則是由bot端要發送的內容
event.reply_token是代表剛剛收到訊息的那個使用者(就是回覆給傳訊息來的人)
message則是要隨送的內容。
由於剛剛設定的message內容為使用者傳送的內容,所以執行起來的結果
就是使用者傳什麼,bot就回什麼囉!
建立LINEbot與webhook串接的教學就到這邊!
再來想做甚麼功能就自行製作囉!
留言
張貼留言