LV. 21
GP 192

【心得】使用Python+Heroku實作哈哈姆特不EY聊天機器人

樓主 Jia g919233
GP6 BP-
此文章是從我的小屋轉過來的,供需要的人參考~

本篇主要是簡介python寫bot的程式碼,有關聊天機器人(bot)串接哈哈哈姆特不EY的介紹可參考官方網站(https://sites.google.com/gamer.com.tw/hahamut-bot/首頁)



檔案結構如下:
|-- bot 資料夾
    |-- app.py
    |-- ey_bot.py

網頁框架我是使用Flask,app.py就是進入點。
有關機器人的部分是分離出一個ey_bot.py。


先來看app.py的內容:
ACCESS_TOKEN與APP_SECRET記得更改成自己Bot開發者後台的Bot token > Keys。

下個部分是讓你測試看看連線是否正常,例如我是用Heroku,架起來之後瀏覽器輸入https://{HEROKU_APP_NAME}.herokuapp.com/到跟目錄,正常會出現ok!!!文字。
Heroku可以參考網路上的資料,或者來看看我之前寫的「創建自己的聊天機器人,使用LineBot+Python+Heroku」。

再來
當收到POST請求(傳訊息給機器人)後會先進行驗證,驗證訊息完整性和原始來源。
ey_bot.verify_webhook(request)
如果正確,接下來轉碼成utf-8後送入EyBot的respond函式。



主要有關機器人的程式碼放在ey_bot.py:
我是用Class(類別)實作。
一開始接收傳進來的ACCESS_TOKEN與APP_SECRET值。

verify_webhook是做webhook事件驗證

respond函式是接收到訊息後處理、回應
最一開始msg接收到的樣子如下:
{'botid': 'bot@178', 'time': 1566095036431, 'messaging': [{'sender_id': 'g919233', 'message': {'text': '你好'}}]}
我們擷取'messaging'中'sender_id'當成要回傳的id,而'messaging'中'message'的'text'及是使用者傳送過來的文字訊息。
回傳文字以及回傳貼圖的內容,我把它寫成函式reply_text和reply_sticker。(回傳圖片、特殊介面這邊就先不寫出來了)
這邊就以回傳同樣的文字及一張貼圖示範。


程式碼其餘的部分就不特別講解了。


最後架起來後記得去Bot開發者後台修改URL。
Bot token > Webhook
例如我是用Heroku,輸入https://{HEROKU_APP_NAME}.herokuapp.com/callback
實際測試~


哈哈姆特機器人串接官方資料

6
-
未登入的勇者,要加入 2 樓的討論嗎?
板務人員:

0 筆精華,吸收日月精華中
一個月內新增 0
歡迎加入共同維護。


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

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