卡尼多隨筆

認識自我 • 感受世界 • 創造價值

0%

喜歡《大英雄天團》杯麵?何不自己做一個!

做一個 LINE Bot 版的杯麵~

這篇文將簡單分享所有功能的實作細節,至於 demo,可以到我的 GitHub repo 那邊看看。

也想做一個 LINE Bot?可以參考我「用 FSM 及 LINE Messaging API 做一個聊天機器人」這篇文。
想讓自己的 LINE Bot 更 powerful?可以參考我「黑客松 LINE Bot 賽前補帖」這篇文。


指定聽歌

Powered by YouTube Data API

程式碼

解析

  1. 使用者輸入 聽 王藍茵 惡作劇
  2. 借助 YouTube Data API,以「王藍茵 惡作劇」當作 query,取得 video 的搜尋結果
  3. 只取前三個最相關影片的 id,前面加上 https://www.youtube.com/watch?v= 就是影片網址了
  4. 除了 id,還能從 response 拿到影片標題和縮圖
  5. 用 TemplateSendMessage 包一包,傳送給使用者
  6. 使用者點按「聽這個!」以後,因為 MessageTemplateAction,會傳送所選影片的網址
  7. 因為 LINE 的設計,可以直接在 LINE 裡面看 YouTube 影片,也就因此,能直接收聽音樂了

(因為 YouTube Data API 有每日額度限制,超過的話,使用者只會收到「用完每日額度了」)


隨機聽歌

Powered by KKBOX Open API & YouTube Data API

程式碼

解析

  1. 使用者輸入 隨機聽
  2. 借助 KKBOX Open API 的 /charts,隨選當中五個排行榜,並用 QuickReply 的方式,讓使用者選取感興趣的排行榜
  3. 因為是用 PostbackAction,所以接下來會觸發這個條件、進到這個狀態,並呼叫 send_random_tracks
  4. 借助 KKBOX Open API 的 /charts/{playlist_id}/tracks,隨選該排行榜當中的五首歌曲,並用 FlexSendMessage 的方式,讓使用者選五首當中想聽的(文字顏色是隨機的,讓畫面變得有趣不單調)
  5. 使用者點按想聽的歌曲以後,因為 MessageTemplateAction,會傳送 聽 [誰的] [歌曲名]
  6. 後面就是「指定聽歌」的步驟了

做運動

這比較單純。

程式碼

解析

其實就是寫死運動教學影片網址,然後隨機傳其中一個給使用者而已。


查證訊息

Powered by Google & googlesearch-python &
台灣事實查核中心、Cofacts 真的假的、MyGoPen、LINE訊息查證、蘭姆酒吐司

程式碼

解析

  1. 使用者輸入 查證 [可疑訊息]
  2. 借助 Google 及 googlesearch-python 這個套件,以你貼上的可疑訊息當作 query,取得搜尋結果的前幾個網頁連結
  3. 一一對那幾個網頁連結去做判斷,若網址包含 tfc-taiwan.org.tw 等等的關鍵詞,也就是屬於台灣事實查核中心、Cofacts 真的假的、MyGoPen、LINE訊息查證、蘭姆酒吐司其中一個的網頁,就存在相對應的 list 裡面
  4. 結果用 FlexSendMessage 的方式呈現,button 的顏色是根據來源網站的配色決定的,像 MyGoPen 的 logo 橘色較多,所以我選用橘色來當 MyGoPen 的 button 色
  5. 因為 FlexSendMessage 的 button 屬於 uri action,當使用者按下 button 以後,會直接在 LINE 裡面開啟該查證網站的頁面
  6. 若前幾個搜尋結果都不是來自那五個查證網站,使用者會收到「找不太到欸」,畢竟其他來源的消息是真是偽比較不能保證

玩遊戲

Powered by 我爸常傳到群組的消遣遊戲們 😂

程式碼

解析

  1. 使用者輸入 玩遊戲 以後,聊天機器人會用 QuickReply 的方式,問使用者要當消遣還是挑戰(至於我怎麼區分消遣、挑戰?看 source code 應該能略知一二 😁)
  2. 依照使用者的選擇,用 FlexSendMessage 的方式,隨機傳送該類別的遊戲給使用者
  3. 因為 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電子郵件實作教學

程式碼

解析

  1. 使用者輸入 新功能 [名稱] [描述]
  2. 將新功能的名稱和描述填入 email 的 content 當中
  3. 利用 SMTP protocol client,傳送 content 給指定的 email address 也就是我,這麼做,是為了讓我知道有使用者想新增功能
  4. 若寄信失敗,則傳送給使用者「增加新功能的服務出了點狀況」

功能一覽

這頗單純。

程式碼

解析

用 QuickReply,讓使用者點選想嘗試的功能,因為是 MessageAction,所以後續就能觸發上述的功能了!


今天的分享就到這邊,我們下篇文見吧 😃