ETH官方钱包

創作內容

5 GP

創建自己的聊天機器人,使用LineBot+Python+Heroku

作者:Jia│2019-05-08 22:51:42│巴幣:1,008│人氣:9847
此篇教學是以 Python line-bot-sdk套件 在 Heroku 上架設一個 LINE Bot 聊天機器人。

主要分為三個部分
  • 創建Line Bot頻道
  • 創建Heroku專案
  • 佈署程式碼


創建Line Bot頻道

註冊Line Develpers帳號完畢後,
點選"Providers" > "Provider List" > 右邊"Create New Provider"。

輸入Provider name (這邊我們應該隨便輸入一個即可)。

創建Provider完成後,進來創一個Messaging API。
點選Messaging API的"Create Channel"。

接下來填寫Line Bot Channel基本資訊:
App name (APP名稱)
App description (APP描述)
Category (分類)
Subcategory (子分類)
Email address (信箱)


創建,下一步點擊同意。

勾選同意Line條款,點擊"Create"。

創建完成,接下來點進去做些相關設定。

Use webhooks -> 開啟(Enable)

罐頭回應Auto-reply messages和Greeting messages關閉(Disabled)。

Channel secret可以先複製下來,待會用到。

產生Channel access token,點擊"issue"。

選擇0 hours代表不會過期。
Channel access token也可以先複製下來,待會用到。


創建Heroku專案

Heroku的免費限制比較有影響的是:
每月免費dyno小時數(依照dyno的運行時間) 共550小時的額度(沒有驗證);
30分鐘內若無人使用的話,會進入休眠狀態(換句話說,如果30分內有請求的話,就不會進入休眠)。

註冊Heroku帳號完畢後,點選右上角"New" > "Create new app"。

設定App name,點擊Create app。
(App name限制:3個字以上、只能小寫字母數字和減號、小寫字母開頭)



佈署程式碼

請先安裝git,下載範例專案(https://drive.google.com/file/d/1DKJ8D5sNHWs2NNvaqQaiQASURQTAHUK7/view?usp=sharing)。
專案是使用Python的line-bot-sdk套件撰寫,可以參考line-bot-sdk-python的GitHub

佈署的方法(Deployment method)就按照預設Heroku Git(Use Heroku CLI)。


接下來照它底下的流程佈署。
下載並安裝Heroku CLI (https://devcenter.heroku.com/articles/heroku-command-line)。

開啟範例程式碼資料夾中的"app.py",修改其中的"line_bot_api"、"handler",改為前面在Line Bot網頁看到的Channel access token、Channel secret。

開啟範例程式碼資料夾,在路徑上輸入"cmd"打開命令提示字元。

登入Heroku
$heroku login

創建一個新的Git存儲庫
(
如果沒有使用過git,要先設定名字、信箱
$ git config --global user.name "你的名字"
$ git config --global user.email "你的信箱"
)
$ git init
$ heroku git:remote -a {HEROKU_APP_NAME}

上傳程式碼
(如果之後程式碼有修改,也要重新執行)
$ git add .
$ git commit -am "make it better"
$ git push heroku master


回到Line Bot
Webhook URL裡輸入{HEROKU_APP_NAME}.herokuapp.com/callback

接下來加入這個LINE Bot來測試看看吧!
底下Bot Informations可使用QR code或ID加入。

範例程式是回應一樣的文字。




除錯

可以觀看在 Heroku 的日誌紀錄
右上角"More" > "View logs"。






引用網址:http://www.jamesdambrosio.com/TrackBack.php?sn=4385956
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:Line Bot|Chat Bot|聊天機器人|Heroku|Python|Messaging API

留言共 14 篇留言

Wochaoshen
想請問出現404NOTFOUND可能是甚麼原因呢?
https://wdlinebotest.herokuapp.com/
爬文有試別的py,會變成Application error

07-14 10:48

Jia
NOTFOUND是因為我原先並沒有加入此頁面(因為不需要),如果你要測試我稍作修改專案程式碼了,你再重新下載試試。
至於Application error你可以參考以下連結,在命令提示字元(CMD)推送完專案後,輸入"heroku ps:scale web=1"(如圖 imgur.com/a/KSRSaGZ )即可,正常的話打開{HEROKU_APP_NAME}.herokuapp.com應該會看到"home OK"文字。
www.tastones.com/zh-tw/stackoverflow/heroku/heroku-error-codes/h14_-_no_web_dynos_running/07-14 18:51
Kui
想要試著做出能藉由關鍵字去進行GOOGLE圖搜的機器人 請問大大有頭緒ㄇQQ

07-14 20:46

Jia
我不是很清楚你想做出來的效果,我大致給個方向:
"google搜尋圖片"的話你可以搜尋關鍵字"python 爬蟲圖片"有很多資料可以參考;
至於"使用line-bot-sdk回覆圖片"你可以參考 https://ithelp.ithome.com.tw/articles/10195531 。
祝好運~[e12]07-14 21:08
Wochaoshen
大感謝,頁面有跑出來了,只是還是無法回傳訊息,找原因的時候verify webhookurl回傳returned an invalid HTTP status code,想說會不會跟頁面出不來有關,不過好像不是這問題@@

07-14 21:03

Jia
哈哈,有幫到就好。
應該不是,我之前在找資料時也有看到有人提起(下方討論的部分),
https://yaoandy107.github.io/line-bot-tutorial/
看跟你的有無相關。07-14 21:16
Jia
話說你的名字是Wo(我)chao(超)shen(神)?[e34]07-14 21:22
Kui
好的 感謝!

07-14 21:13

Jia
加油~[e19]07-14 21:17
Wochaoshen
昨天後來發現是LINE Developers的設定跑掉了,之後在試跑ruby on rails,之後應該也會試著做discord的bot~~
有這麼明顯嗎(羞~)當初想不到要取什麼,就隨便起個名字,以為看看動漫瘋沒差,結果居然有機會用這帳號回覆技術文...

07-15 07:38

Jia
有時候找bug反而花很多時間XD
我也想來寫個chatbot,但還沒有靈感...
就想說你這名字不像英文單字所以查查看www
竟然發現不得了的秘密(X
沒有啦,這不算是什麼技術文[e38]07-15 11:08

你好 我最近在做專題 LINEBOT的專題
我想請問我照著您打的是沒有問題 執行結果也無誤完美
但是當我改了程式碼 重新上船程式碼 機器人卻不理我 (以下為我修改的最後一段程式碼,我想加入其他功能,像是輸入貼圖,他能回應我對應的貼圖)
----------------------------------------------------
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
if event.message.text == "貼圖":
line_bot_api.reply_message(event.reply_token,
StickerSendMessage(package_id=1, sticker_id=2))
else:
line_bot_api.reply_message(event.reply_token,
TextSendMessage(text=event.message.text))


if __name__ == "__main__":
app.run

10-14 23:54

Jia
你使用StickerSendMessage有把它import進來嗎?
(大約在app.py第9行的地方)
———————————————————————————————————
from linebot.models import (
MessageEvent, TextMessage, TextSendMessage, StickerSendMessage
)
———————————————————————————————————
這樣我測試是OK

題外話:
如果你覺得每次改一下就要放到Heroku上測試不方便,
可以試試ngrok10-15 08:50

@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
if event.message.text == "貼圖":
line_bot_api.reply_message(event.reply_token,
StickerSendMessage(package_id=1, sticker_id=2))
else:
line_bot_api.reply_message(event.reply_token,
TextSendMessage(text=event.message.text))


if __name__ == "__main__":
app.run

10-15 16:37


抱歉 !!
還是不能成功

10-15 16:38


有了成功了!!!謝謝

10-15 19:25

Jia
恭喜~10-15 22:55
八龍易主(′?ω?`)つ
Jia你好
想請問一下 Heroku在這中間扮演的角色是什麼
他是發出XX請求 或者是作出回應...等?

11-17 00:20

Jia
簡單來說
你寫好的程式需要在電腦上運行,但這樣你電腦就需要24小時開著,
浪費電、怕電腦當機、效能、URL、安全性、SSL憑證、成本等等問題,
所以就需要雲端伺服器,讓你可以把程式放在上面運行,而Heroku這個服務已經把伺服器的環境建好,讓你可以簡單的使用。11-18 13:15
彼得哈特利
Jia大大安安
請問你有把heroku跟github連結嗎
我想連結github 而且在Authorized OAuth Apps那邊也有授權heroku了
可是它還是一直顯示
We are unable to access this connected repository on GitHub
Either the repository is empty, the authorization key is not valid, or the account used to connect to GitHub doesn't have access to the repository. Try disconnecting the repository above and then reconnect.

11-21 00:48

Jia
有哦~
我後來有使用GitHub連接部署,可以成功,
你可以參考別人的文章看看是否有遺漏的地方11-21 08:53
彼得哈特利
沒事了 後來發現Github也要先psuh一次才行
感謝大大

11-21 08:56

Jia
哈哈,ok11-21 10:31
Mirroring
我在執行此行 heroku git:remote -a {HEROKU_APP_NAME}時遭遇以下錯誤,請問我有哪邊沒做對嗎?

? Error: You do not have access to the app mirror.
?
? Error ID: forbidden

12-30 17:05

Jia
你試試以下這篇的方式看能不能解決
https://stackoverflow.com/questions/32577459/you-do-not-have-access-to-the-app-when-trying-to-access-heroku-console12-30 21:45
Biichuen
如果我要讓它在我傳了訊息之後,她不要再重複傳一次我傳的訊息,我應該如何修改呢?

06-17 01:33

Jia
handle_message()中48行的TextSendMessage函式內給text你想要回應的字串即可06-19 08:48
我要留言提醒:您尚未登入,請先登入再留言

5喜歡★g919233 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:如何安裝OpenCV 在... 後一篇:你的眼睛正常嗎? 顏色產...


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情? 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】