做一個 LINE Bot 版的杯麵~
也想做一個 LINE Bot?可以參考我「用 FSM 及 LINE Messaging API 做一個聊天機器人」這篇文。
想讓自己的 LINE Bot 更 powerful?可以參考我「黑客松 LINE Bot 賽前補帖」這篇文。
指定聽歌
Powered by YouTube Data API
程式碼
解析
- 使用者輸入
聽 王藍茵 惡作劇
- 借助 YouTube Data API,以「王藍茵 惡作劇」當作 query,取得 video 的搜尋結果
- 只取前三個最相關影片的 id,前面加上
https://www.youtube.com/watch?v=
就是影片網址了 - 除了 id,還能從 response 拿到影片標題和縮圖
- 用
TemplateSendMessage
包一包,傳送給使用者 - 使用者點按「聽這個!」以後,因為
MessageTemplateAction
,會傳送所選影片的網址 - 因為 LINE 的設計,可以直接在 LINE 裡面看 YouTube 影片,也就因此,能直接收聽音樂了
(因為 YouTube Data API 有每日額度限制,超過的話,使用者只會收到「用完每日額度了」)
隨機聽歌
Powered by KKBOX Open API & YouTube Data API
程式碼
解析
- 使用者輸入
隨機聽
- 借助 KKBOX Open API 的
/charts
,隨選當中五個排行榜,並用QuickReply
的方式,讓使用者選取感興趣的排行榜 - 因為是用
PostbackAction
,所以接下來會觸發這個條件、進到這個狀態,並呼叫 send_random_tracks - 借助 KKBOX Open API 的
/charts/{playlist_id}/tracks
,隨選該排行榜當中的五首歌曲,並用FlexSendMessage
的方式,讓使用者選五首當中想聽的(文字顏色是隨機的,讓畫面變得有趣不單調) - 使用者點按想聽的歌曲以後,因為
MessageTemplateAction
,會傳送聽 [誰的] [歌曲名]
- 後面就是「指定聽歌」的步驟了
做運動
這比較單純。
程式碼
解析
其實就是寫死運動教學影片網址,然後隨機傳其中一個給使用者而已。
查證訊息
Powered by Google & googlesearch-python &
台灣事實查核中心、Cofacts 真的假的、MyGoPen、LINE訊息查證、蘭姆酒吐司
程式碼
解析
- 使用者輸入
查證 [可疑訊息]
- 借助 Google 及 googlesearch-python 這個套件,以你貼上的可疑訊息當作 query,取得搜尋結果的前幾個網頁連結
- 一一對那幾個網頁連結去做判斷,若網址包含
tfc-taiwan.org.tw
等等的關鍵詞,也就是屬於台灣事實查核中心、Cofacts 真的假的、MyGoPen、LINE訊息查證、蘭姆酒吐司其中一個的網頁,就存在相對應的 list 裡面 - 結果用
FlexSendMessage
的方式呈現,button 的顏色是根據來源網站的配色決定的,像 MyGoPen 的 logo 橘色較多,所以我選用橘色來當 MyGoPen 的 button 色 - 因為
FlexSendMessage
的 button 屬於 uri action,當使用者按下 button 以後,會直接在 LINE 裡面開啟該查證網站的頁面 - 若前幾個搜尋結果都不是來自那五個查證網站,使用者會收到「找不太到欸」,畢竟其他來源的消息是真是偽比較不能保證
玩遊戲
Powered by 我爸常傳到群組的消遣遊戲們 😂
程式碼
解析
- 使用者輸入
玩遊戲
以後,聊天機器人會用QuickReply
的方式,問使用者要當消遣還是挑戰(至於我怎麼區分消遣、挑戰?看 source code 應該能略知一二 😁) - 依照使用者的選擇,用
FlexSendMessage
的方式,隨機傳送該類別的遊戲給使用者 - 因為
FlexSendMessage
的 button 一樣是屬於 uri action,當使用者按下 button 以後,會直接在 LINE 裡面開啟該遊戲的頁面
(遊戲連結和說明一樣是事先寫好的,至於不直接傳連結給使用者是因為,這樣畫面就少了點美感,而且更破壞了玩遊戲前的情緒和氛圍)
查天氣
Powered by Google & googlesearch-python
程式碼
解析
這個非常陽春,其實就是直接用 [地點] 天氣
去 google,只是多用 FlexSendMessage
包裝而已。
(本來是想說用氣象局的 API 啦,但想說既然自己平常也習慣 google「天氣」的介面了,直接拿來用或許更簡單也更符合需求)
請求新功能
Powered by SMTP protocol client
參考自 Learn Code With Mike 的 [Python實戰應用]Python寄送Gmail電子郵件實作教學
程式碼
解析
- 使用者輸入
新功能 [名稱] [描述]
- 將新功能的名稱和描述填入 email 的 content 當中
- 利用 SMTP protocol client,傳送 content 給指定的 email address 也就是我,這麼做,是為了讓我知道有使用者想新增功能
- 若寄信失敗,則傳送給使用者「增加新功能的服務出了點狀況」
功能一覽
這頗單純。
程式碼
解析
用 QuickReply
,讓使用者點選想嘗試的功能,因為是 MessageAction
,所以後續就能觸發上述的功能了!
今天的分享就到這邊,我們下篇文見吧 😃