LINE開發社群計畫: 20200507 使用 Go 來打造 LINE 聊天機器人

前言

大家好,我是 LINE Taiwan 的 Technology Evangelist – Evan Lin。 感謝 DSC (Google Developer Student Clubs) 的邀請,在 2020/05/07 線上給予同學們基本的課程。 內容將有 Golang 的基本介紹,並且透過打造一個簡單的 LINE Bot 來跟各位展示 Golang 的一些優點。

這次有來自於四間大學(中興大學,台北大學,臺北科技大學以及銘傳大學)的 DSC 社團同學 ,全程也開放網路直播,希望可以讓更多對於 LINE Bot 有興趣的初學者一個良好的教材。

Build LINE Bot with Go / 資深開發技術推廣工程師 Evan Lin

投影片

這一次分享的投影片,主軸分成三個:

為什麼我會學習 Golang ? 什麼是 Golang?

經過了十年在多媒體外商軟體公司的工作之後,為了學習新的 Web 程式語言進而嘗試了不少的程式語言之後,最後選擇了 Golang 來鑽研。並且為了深入的學習 Golang ,而啟動了 Project 52 來作為學習 Golang 的方式,也因此學習了不少的演算法與進階的資料格式的應用方式。

這裡也介紹了一些 Golang 的基本優點:

  • Gofmt / goimport: 幫助你可以讓你的程式碼風格一致並且避免遺漏某一些需要使用的套件。
  • Go test: 幫助你快速準備好測試的方式,撰寫測試程式碼再也不困難。並且可以相當快速的做好效能調校的工作。
  • GoDoc:做文件一直是讓開發人員很困擾的事情,不是因為開發人員不願意寫。往往是輸出到文件需要有一些相關的轉換,或是需要許多額外的資料在程式碼之中。 使用 GoDoc 只要開發者的程式碼已經寫好了,就可以直接在網路上找到(舉例: https://pkg.go.dev/github.com/line/line-bot-sdk-go/linebot 就是直接將 https://github.com/line/line-bot-sdk-go/linebot 轉換成文件的網站。
  • GoRoutine:做 multiple routine programming 在許多語言其實都有一些困難跟繁瑣。除了多線程模型本身就需要有相當多需要注意的東西之外,要建置這樣的所需的程式碼其實也很複雜。使用 goroutine 相當的輕量,並且相當的容易。開發者可以把心力全部放在如何處理多線程的相關控制上。

如何學習 Golang :

由於這次主要的聽眾都還是大學的學生(部分還是大一的學生),所以許多的操作範例都是直接在 Golang Playground 來進行操作。可以省去許多程式初學者經常遇到的環境設置的問題。

同時也建議初學者可以把出現問題的程式碼透過 Golang Playground 來,分享出來在各種社群媒體來詢問。這樣一來也容易察覺問題與解決問題。

同時也建議同學們可以透過 Golang Tour 來一步一步的學習相關的知識,每一頁都有程式碼可以使用,可以線上編輯與執行。也可以透過邊練習,邊了解的方式更快速能夠加深印象。

什麼是 LINE Bot ? 如何透過 Golang 快速打造出一個 LINE Bot ?

學習一個語言最好的方式就是馬上透過它來打造一個東西,不論是一個產品,一個服務甚至是一個小工具。 在這裡相當建議各位透過打造 LINE Bot 來作為學習 Golang 的方式。主要的理由如下:

  • 打造 LINE Bot 不需要高深的美術觀念,對於一些 UI 美感有困難的人。學習 LINE Bot 不僅僅可以更快入手,並且可以讓開發者更專注在程式本身的功能上。
  • 使用正確的平台與訊息發送方式, LINE Bot 的開發是不需要任何費用。 在影片中的範例,展示透過 Heroku 作為伺服器的平台。打造出來的 LINE Bot 因為僅僅是回覆使用者的問題,也不需要任何額外的費用產生。
  • LINE 是一個相當好的工具(或是服務)的發佈平台,如果開發者們開發出相當有用的工具,透過 LINE 可以快速的推薦給親朋好友。而且不需要類似上架 App 的繁瑣的審核過程,發布的流程也是相當的快速。

接下來開始講解如何快速打造一個 LINE Bot:

範例程式碼: https://github.com/kkdai/LineBotTemplate

1. 先去 LINE 官方網站申請機器人帳號 (LINE Bot )

img
  • 請先確認有在 LINE Developer Console 開啟帳號
  • 然後建立一個 Messaging API Channel
  • 在 “Basic Setting” 頁面,取得 Channel Secret
  • 在 “Messaging API” 頁面,去申請 Channel Access Token
  • 在 “Basic Setting” 頁面,將 LINE 官方帳號管理介面打開
  • 到回覆設定的選項中,選擇啟動 “webhook”

2. Deploy LINE Bot template

記得到 https://github.com/kkdai/LineBotTemplate 然後點選下方的 Deploy 按鈕,將基本的程式碼 Deploy 到你的 heroku 之中.

Deploy
  • 輸入剛剛取得的 Channel Access Token跟 Channel Secret 。
  • 請記住你設定的 Heroku App ID ,稍後會使用到。

3. 回到 LINE Bot Dashboard 設定基本資料

到你的 “Basic account information” 來設定,以下一些資料需要填好:

好了… 加入你的機器人.開始跟他講話吧.

這份程式碼是最簡單的範例,設定好之後他只會重複你打的文字.更多的功能會放在另外一份.

影片教學

可以根據以下影片的教學來看如何在五分鐘之內部署自己的 LINE Bot

想要修改代碼嗎?參考以下的影片教學吧

還有問題嗎? 歡迎在 github 上面開啟 issue 詢問。

如何成為 Golang 的專家?

最後因為分享 Golang 與 Project 52 的原因,因為參與了不少的社群活動與研討會,變成了 Golang Taipei 的主辦人之一,透過持續的分享與社群的經營,我才有幸能夠到 LINE 從事 Developer Relations 的工作並且變成了 Go GDE 。 在此也跟大家分享快速地學習 Golang 的小秘訣。

培養技術寫作的習慣:

由於主要旁聽的聽眾都是學生,在此也相當鼓勵學生們在學習一門新的技術,或是程式語言,透過寫作可以快速讓你不斷的反思學習到知識,並且會想要更深入的去了解。 比如說,學習到一個新的語言功能,試著把它寫成一個 TIL (Today I Learn) 透過這個方式,不僅僅可以讓你加深印象,事後透過網路搜尋可以幫助到許多有著相同問題的人(甚至就是你自己)。

使用 Golang 打造任何東西

學習(程式)語言最好的方式,就是去使用它。所以在這裡也相當建議同學們能夠實際上手去打造任何的小工具。不論是一個 LINE Bot 還是一些日常的小工具。 透過動手去打造他,才能了解每個語言之間的奧妙,才能知道某一些需要注意的地方。

分享!分享!記得要分享!!!

經常有人問我,為何能夠經常在各種場合去分享。 我也誠實的告知,其實分享的途中我學習到的更多:

  • 因為需要分享,我會將我了解的事物變成投影片,變成講稿。
  • 因為需要分享,我需要重新思考要如何讓不懂的人能夠了解我的問題與解決方式。
  • 因為需要分享,在口語之間我發現我了解得更深入,並且更容易記住。

所以也建議每位同學,一定要抓住機會去分享。

相關鏈結:

活動小結

很開心跟學生們分享 Golang 與 LINE Bot 的結合,記得上一次講到相關的介紹內容的時候,已經是四年前的事情了。 所以許多的素材與原始碼都需要翻新。 並且也準備好一些新的影片教學,也真的希望想要學習打造 LINE Bot 的朋友們,可以更快速的入手,也希望有任何問題可以到 LINE 的官方討論區或是「LINE開發者官方社群」官方帳號來詢問。

立即加入「LINE開發者官方社群」官方帳號,就能收到第一手Meetup活動,或與開發者計畫有關的最新消息的推播通知。▼

「LINE開發者官方社群」官方帳號ID:@line_tw_dev

關於「LINE開發社群計畫」

LINE今年年初在台灣啟動「LINE開發社群計畫」,將長期投入人力與資源在台灣舉辦對內對外、線上線下的開發者社群聚會、徵才日、開發者大會等,已經舉辦30場以上的活動。歡迎讀者們能夠持續回來察看最新的狀況。詳情請看:

Related Post