卡尼多隨筆

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

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 Googlegooglesearch-python
台灣事實查核中心Cofacts 真的假的MyGoPenLINE訊息查證蘭姆酒吐司

程式碼

解析

  1. 使用者輸入 查證 [可疑訊息]
  2. 借助 Googlegooglesearch-python 這個套件,以你貼上的可疑訊息當作 query,取得搜尋結果的前幾個網頁連結
  3. 一一對那幾個網頁連結去做判斷,若網址包含 tfc-taiwan.org.tw 等等的關鍵詞,也就是屬於台灣事實查核中心Cofacts 真的假的MyGoPenLINE訊息查證蘭姆酒吐司其中一個的網頁,就存在相對應的 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 Googlegooglesearch-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,所以後續就能觸發上述的功能了!


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