[研討會心得] 20190723 Chatbots 11 at 天瓏書局 Coding Space

前言

大家好,我是 LINE Taiwan 的 Technical Evangelist - Evan Lin。這次很開心受到 chatbot 社群的邀請,參加了 “Chatb10ts meetup 聊天機器人小小聚 11 @ 天瓏書局 Coding Space” 的聚會活動,並且分享 LINE API 更新與個人開發的心得。在此也跟各位分享本次參與的心得,並且也希望透過社群分享的力量能夠讓聊天機器人的開發動能更加的盛大。

  • 社群 Chatbots Meetup: https://chatbots.kktix.cc/

  • 本次活動網頁: 活動網址

由於 Chatbots Meetup 本身屬於社群自主性的活動,裡面也有許多社群朋友所贊助的閃電秀。裡面的所有內容也是相當的難得與有趣。也希望能夠透過本篇文章讓大家稍微了解 Chatbots Meetup 社群閃電秀的魅力。

LINE Social API in Go / 資深開發技術推廣工程師 Evan Lin

投影片

首先先跟所有的來賓分享新的 LINE Login API 更新 並且也分享透過更新後的 API 所撰寫的範例網站 https://login-tester-evan.herokuapp.com/ 。 透過以下三個新的 API 可以讓你更了解聊天機器人的相關訊息,分別有:

由於是新的 API 所以 LINE BOT SDK 相關開源套件還沒有加入這些 API ,如果讀者也是開源貢獻者的話,也歡迎各位直接到各個語言的 SDK 去貢獻。 (參考: Python, Go)

第二個部分就是透過 Social API 來完成 LINE Login 的流程,因為 Social API 並沒有官方套件提供給大家來使用,在這裡開發了一個 LINE Social API Go 套件來方便大家開發使用,並且也有更多的詳細內容在於如何透過 Social API 來開發一個 LINE Login 的範例文章在這裡

想要直接感受的開發者也可以直接透過 https://login-tester-evan.herokuapp.com/ 這個網站來做一些測試與了解。 首先在這裡分享透過 Social API 兩種的取得使用者資訊的方式,分別為: 透過 OpenID 的方式與透過 Social API 。

使用 OpenID 來取得使用者資訊

以上循序圖是根據 LINE 官方文件中的 ““Integrating LINE Login with your web app” 教學文件所繪製的循序圖。透過這個流程可以了解,如果在 scope 之中指定好了 openid之後拿到的 access token 之中就會有一個欄位稱為ID Token 可以透過這個欄位來解析出使用者的資訊。

使用 Access Token 來取得使用者資訊

以上循序圖是透過 Access Token 再去取的使用者資訊的方式。如果是透過 access token 要做,需要再透過 access token 去呼叫 Social API 的 Get user profile API(https://api.line.me/v2/profile) 的方式來取得使用者的資訊。 跟前一個方式不同的是,雖然還需要多呼叫一次來取得使用者資訊。

這次的分享主要介紹了一個方便各位使用 LINE Social API 的 SDK 套件,並且詳細解釋了 LINE Login 的兩種取得使用者資訊的方式。

更多相關內容:

Live Coding 使用 dialogflow + Google Cloud Run 實作 LINE Bot - LINE API Expert, Wolke

由 LINE API Expert - Wolke 所帶來的分享,就是現場帶著觀眾透過 DialogFlow 來部署 LINE Bot 。整個內容從對於 DialogFlow 的基本介紹,什麼是 Intent ,什麼又是 Entity ,再介紹如何透過 DialogFlow 串接 LINE Chatbot 的整個流程。

LIFF 從新手入門到實戰經驗分享, LINE API Expert, iCook CTO, Richard Lee

投影片

接下來同樣身為 LINE API Expert 的 Richard Lee 則帶來了 LIFF 從新手入門到實戰經驗的分享,相當清楚地從 LIFF (LINE Frontend Framework) 的基本介紹,到分享 iCook 當初導入 LIFF 的時候所遇到的一些問題。並且也分享了一篇完整的技術文章,透過 vConsole 來 Debug LIFF 的實作介紹,也歡迎大家可以去了解一下。

閃電秀

講解完了主要三個講者之後,接下來就是介紹這個社群最有魅力的部分就是閃電秀。所有的閃電秀可以參考這篇共筆文章 https://beta.hackfoldr.org/chatbot/ ,由於都是五分鐘的閃電秀,主要內容快速用條列介紹給各位:

  • 結合MQTT 以及 LINE API 的快問快答機器人/ NiJia
    • 身為主辦人之一的 Nijia 首先帶來如何透過 MQTT 一個在 IOT 經常使用的輕薄傳輸協定來讓 Device 可以跟 API server 溝通的方式。
  • CUI:如何做出一個不難聊的機器人 / Estelle(小凹)
    • 投影片:
      • https://drive.google.com/file/d/17jX0UFMkkSz96RcYtv6egYv30CbDkUyi/view?usp=sharing
    • 內容分享:
      • 這一場演講分享了如何設計一個好的 CUI (Conversational User Interface) 來讓你的使用者能夠喜歡跟你的聊天機器人互動與溝通,不會因為難聊而容易中斷與停止整個互動的過程。
  • 小小技巧:開發時使用 ssh 作為免費的 ngrok pro / Patrick Liu
    • 介紹開發 LINE Bot 經常使用到的 ngrok 的使用心得。
  • kamigo: chatbot MVC framework based on rails / 卡米哥
    • Github:
      • https://github.com/etrex/kamigo
    • Demo:
      • https://kamigo-demo.herokuapp.com/menu
    • 內容分享:
      • 最後一位閃電秀的講者,同時也是身為 LINE API Expert 的卡米哥,本身也是知名 LINE Bot 「卡米狗」的作者則帶來了一個新的套件 Kamigo 也就是基於 Ruby and Rails 的 LINE Bot framework。透過 Kamigo 這個套件可以很快速地在 Ruby and Rails 上面快速部署出一個 LINE Bot 。

活動小結

社群分享永遠是讓創意激盪的最佳方式,而 Chatbots Meetup 是一個很熱情與充滿創造力的社群組織。也希望有更多有創意的開發者願意加入 LINE Chatbot 的開發行列,更希望能熱情的參與社群的活動與一起來分享。

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

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

關於「LINE開發社群計畫」

LINE今年年初在台灣啟動「LINE開發社群計畫」,將長期投入人力與資源在台灣舉辦對內對外、線上線下的開發者社群聚會、徵才日、開發者大會等,預計全年將舉辦30場以上的活動。歡迎讀者們能夠持續回來察看最新的狀況。詳情請看 2019 年LINE 開發社群計畫活動時程表 (持續更新)https://engineering.linecorp.com/zh-hant/blog/line-taiwan-developer-relations-2019-plan/)

[TIL][Golang] go/build 與 golang.org/x/tools/go/packages 的差異

前言:

一開始主要是因為看到這個 tweet ,不禁想了解到底什麼是 go/build 而什麼又是 golang.org/x/tools/go/packages

因為 “Developer tools should now use that instead. It support both go path and Go Mod.” 這句話從 @_rsc 講出來更讓筆者想了解這些工具的差異。

What is go/build?

根據 go/build 的 GoDoc 上面解釋,其實 go/build 主要是幫助你取得 Go packages 資訊之用的,當然本身也可以直接拿取原本 binary 的 GOARCH, GOROOTGOPATH 的相關資訊。 當然也是可以取得 packages 相關資訊,至於使用上可以參考以下 sample code.

Sample code for go/build

這個片段程式碼可以解析使用者輸入的套件參數,並且應出所有的套件資訊。比如說你輸入 gobuild flag 就會解析 flag這個套件的相關資訊。

What is golang.org/x/tools/go/packages?

golang.org/x/tools/go/packages 比較專注做套件的解析工作,可以透過 GoDoc 相關資訊來了解,主要透過 packages.Load() 來讀取所有的套件資訊,並且可以透過 packages.Visit()來將所有套件的 dependency 找出來。

而當初設計這個套件主要就是為了 Go Modules 而設計的,大家可以參考相關文件 The Go Blog: Go Modules in 2019 ,裡面的相關敘述。 在 Go 1.11 的 Release note 其實也有提到,在作為 Package Loading 的工具查詢上,雖然 golang.org/x/tools/go/packages 還沒納入 standard library ,但是強烈建議要做 package loading 相關事項的時候應該就要改成 packages 。

Sample code for golang.org/x/tools/go/packages

小結:

golang.org/x/tools/go/packages 在查詢套件資訊的時候,會先透過 GoPath 來查詢,如果找不到就會透過 Go Modules 來查詢。 而 go/build 只要 GoPath 找不到就會顯示套件無法查詢。

這兩個工具在做一些 DevOps 工具或是一些 CICD 的相關工作的時候會用到,就如同 @_rsc 建議的,應該要儘早使用 golang.org/x/tools/go/packages 來查詢相關資訊。但是可惜的是 Bazel 目前還沒有支援。

Reference:

  • https://twitter.com/rakyll/status/1154431863689076736
  • https://godoc.org/golang.org/x/tools/go/packages
  • https://golang.org/pkg/go/build/
  • https://github.com/kkdai/build-package-test
  • https://blog.golang.org/modules2019
  • https://tip.golang.org/doc/go1.11#gopackages

[Golang] 快速整理一些 Go 版本上的差異(使用者角度) (Go version change note since Go 1.3 to 1.12)

前言:

其實從 Go 1.10 之後大概就沒有認真的在確認每個版本的變更之處,所以在這裡整理一下 Go 1.3 ~ 1.12 的變革。 一些快速懶人包如下:

  • 幾個大變動:
    • Go 1.5 : Pure Go for compiler and linker. go vendor.
    • Go 1.11: Go modules and WebAssembly support.

其他好奇的人可以查看 The State of Go.

(用英文寫,因為語言變化用中文實在不好表達)

Go version history (major change):

Since Go 1.3, here only list few major changed you might be interested.

  • Go 1.3 (2014/06/18) (Detail Release note)
    • Start 6 months release cycle.
    • Remove support for Windows 2000
    • Support DragonFly BSD, FreeBSD
  • Go 1.4 (2014/12/10) (Detail Release note)

    • Support build ARM processor of Android system.
    • Support go generate
    • Speed is slightly faster than 1.3
  • (Big change) Go 1.5 (2015/08/19) (Detail Release note)

    • The compiler and runtime are now written entirely in Go (with a little assembler)
      • If you want to build go after 1.5, you need to install go 1.4.2 first.
    • Go programs run with GOMAXPROCS set to the number of cores available.
    • experimental support for “vendoring”
    • Add new tool go tool trace
  • Go1.6 ( 2016/02/17) (Detail Release note)
    • Experienmental port 64-bit MIPS
    • Experienmental port for Android x86 (32bit)
    • HTTP/2 protocol support
    • “GO15VENDOREXPERIMENT” default enable.
  • Go1.7 ( 2016/08/15) (Detail Release note)
    • Support macOS 10.12 Sierra
    • Remove “GO15VENDOREXPERIMENT” support.
    • Full support 64-bit MIPS
    • Move golang.org/x/net/context into standard library context.
    • net/http/httptrace for tracing event in HTTP requests.
  • Go1.8 ( 2017/02/16) (Detail Release note)

    • Remove support for Mac OSX 10.7
    • go fix support context fix from golang.org/x/net/context into standard library context. (which happen in 1.7)
    • plugin package for loading such plugins at run time. Plugin support is currently only available on Linux.
  • Go1.9 (2017/08/24) (Detail Release note)
  • Go1.10 (released 2018/02/16) (Detail Release note)
    • For travis CI, you need to specific version in “1.10”, rather than 1.10.
    • No need set for GOROOT and GOTMPDIR.
    • The go test command now caches test results, to bypass test caching using go test -count=1 to verify if any test failure unexpectly.
  • (Big change) Go1.11 ( 2018/08/24) (Detail Release note)

  • Go1.12 ( 2019/02/25) (Detail Release note)
    • Go’s new windows/arm port supports running Go on Windows 10 IoT Core on 32-bit ARM chips such as the Raspberry Pi 3.
      • GO111MODULE default is on, (go modules will default enable)
    • go tool vet no longer supported.
      • godoc and go doc:
      • go doc begin from 1.4, compatible with godoc
      • godoc goes to pure web service since 1.12.
      • go doc goes to command line tool since 1.12.
      • The ReverseProxy now automatically proxies WebSocket requests.

Reference:

[Golang] 在 KKTIX 上免費透過邀請碼來開邀請票

前言:

身為社群的共同籌劃人,每個月最基本的工作總是在不斷的開票亭,找講者跟舉辦 Meetup。而在舉辦 Meetup 的時候,總是希望可以開放一些邀請票給某些特定的族群(內定名單,工作人員,講者)不需要透過搶票就可以直接拿到票卷,但是 KKTIX 原本的邀請碼是需要透過付費的方式來達成。

其實不用那麼麻煩,可以透過「購票資格」的方式來達成,本篇文章希望能夠幫助有一些人能夠更快的了解。

最後把以前常用的邀請碼建立小工具也開源出來,大家可以拿來用。

建立邀請碼小工具 https://github.com/kkdai/radomtix

流程:

  • 首先先到購票資格去新增一個購票資格,也就是邀請碼的意思。

  • 這裡點選「新增名單」

  • 所謂的名單可以透過「邀請碼」或是某些特殊文字來讓使用者填寫,這裡開始填寫邀請碼。

  • 這時候回到票種去新增一個新的票種

  • 請注意 “必須使用邀請碼購買” 不要打勾

  • 購票資格這裡,就把”Invitation ticket” 跟 “test Invitation code” 連接在一起。

  • 建議可以有購買限制,這樣一個邀請碼只能買一張票。

Reference:

[Google] Google I/O 2019 心得

大家好我是 LINE 台灣的 Technical Evangelist – Evan Lin 。LINE內部的企業文化就是鼓勵大家勇於分享與自我學習,對於各大國內外的研討會更是鼓勵員工們去報名參加與分享。 今年很榮幸地能夠申請到在舊金山舉辦的 Google I/O 2019 ,本篇文章透過開發者關係與技術推廣部門的角度來帶著讀者們用不一點的角度來了解 Google I/O。

身為資深推廣技術工程師與開發者年會的主辦者,本篇文章一開始將先透過活動的意義與原因,到會場的周邊設施加以介紹與分享。最後透過一些機器學習的相關議程分享,希望分享給各位讀者參與 Google I/O 所帶來的饗宴。

什麼是 Google I/O

Google IO logo.svg

(圖片來自: Wiki)

Google I/O 從 2008 開始舉辦後,每年都是 Google 最大的面向全世界開發者的年度開發大會 (類似於 Google Developer Day) 。而 “I/O” 的所代表的縮寫從一開始的”輸入”(Input) 與 “輸出”(Output)到近幾年的”創新”(Innocation)與”開放”(Open)。顯示出整個大會由於參加的人數越來越多,議題也越來越多元與開放。

每一年的 Google I/O 有著來自於全世界的開發者,而在 2019 年根據官方的數據參與的人高達了 7200 位,而且來自於各種類型的開發者,從行動裝置的 Android App 開發者,雲端伺服器與服務開發者到機器學習的資料科學家。各式各樣的開發者也是 Google I/O 每一年最令人驚豔的部分,在此身為 Developer Relations 團隊與機器學習愛好者的筆者會針對以下幾個部分來進行分享:

  • 機器學習的內容分享
  • 報到流程的分享
  • 多采多姿的場外花絮分享

此外,同行的同事 Rene 也分享了她在 Google I/O 的一些想法”2019 Google I/O 初體驗“,在此筆者就不在多家贅述已經提過的部分。歡迎各位去這篇文章裡面查看關於 Sandbox 的一些記錄,相當的充實喔。

機器學習的內容分享

Federated Learning: Machine Learning on Decentralized Data

Federated Learning 是今年 Google I/O 的一大亮點,更是讓許多使用者與機器學習的資料專家都相當驚豔的部分。

原本在做大數據與機器學習的時候,都是由 Edge(也就是資料的產生端,比如說手機,瀏覽器, App)來傳送資料,由於需要有許多的使用者行為的偵測需求,許多的資料也都帶有敏感的個人資料。而且資料在收集與預測 ( Prediction ) 的時候也需要不中斷的網路連線,對於電池能量的消耗與資料的安全上都是很大的隱憂。

但是隨著手機的處理能力越來越快,機器學習平台 (Tensorflow Lite ) 的所需要耗電量也越來越小的的演進下,開始思考著有沒有可能部分的機器處理都在 Edge 端來處理,如此一來許多的資料不需要另外上傳到雲端整合的來處理,又能夠兼顧個人資訊的隱私與安全。 這就是 Federated Learning 的基本中心思想。 這個議程主要討論如何做到之外,也討論了哪一些方面的資料才適合使用 Federated Learning ,能夠如何透過這樣方式來讓使用者滿意度更提升。 很推薦大家好好了解。

報到流程的分享

身為 LINE 台灣 Developer Relations 的一員,也是 LINE 台灣年度開發盛會 TechPulse 的主辦單位之一成員。最令筆者好奇的當然就是報到流程,因為要能夠同時處理七千多人的報到流程設計上需要有許多思考的面相,接下來就讓筆者來分享所觀察到的部分:

首先在線上繳交大會費用之後,就可以獲得註冊的 QR Code 一組,而當初在刷卡填寫個人資料的時候也會一起的填寫個人的衣服尺寸大小。(當然還有參加者的姓名)

當天在經過了層層嚴格的安全檢查之後,就會到了這個註冊的帳篷。裡面其實相當的大,也有 20 ~ 30 位左右的工作人員幫忙指引與分流。

每個人都需要先拿出 QR Code 在這裡刷,這裡的作用主要是作為分流,因為七千多人的東西其實相當的多,這裡的電腦會告訴你該去哪一個櫃檯領取袋子。 在此同時,櫃台前面的工作人員也會收到使用者的袋子號碼。

電腦指引到櫃台前面之後,工作人員就會把參加者專屬的袋子拿出來,整個過程算是相當的順暢跟方便。

當然,最讓許多人好奇的就是這次的袋子裡面有什麼呢?就是一件 Google I/O 的衣服,一個方巾,一個水瓶,一個防曬油,還有一些小貼紙。筆者認為防曬油相當的有用,因為五月的加州真的很曬。

多采多姿的場外花絮分享

” Google I/O 是全世界開發者的嘉年華,全部的議程其實在線上都會直播,參加的人應該要花時間在網路不會直播的部分,多跟來自世界的開發者互動,多參與許多的互動活動” ,這些建議來自於同行的來過不少次的友人,相當的受用,在此也跟各位分享一下,這個開發者嘉年華的場外盛典。

首先先讓各位看一下,整個會場的鳥瞰地圖,可以看到除了有八個議程會場之外,還有八個 Sandboxes 裡面有相當有趣的展示與實驗性質的專案展示。在此也相當推薦大家有去的話一定要保留時間來逛逛。同事 Rene 文章 “2019 Google I/O 初體驗” 對於 AR Sandbox 有許多深入地描寫,可以去了解一下。

如果說場內議程精彩萬分的話,想想看如果有閃電秀事不是更加的精彩呢? 在一個露天的陽台區就有專屬的閃電秀場地,這邊的閃電秀也不是讓會眾報名來講的,大多是 Google 員工或是許多知名的大師。而且就在露天的陽台上,享受著陽光來了解技術,其實是一種相當令人享受的事情。而且每一場閃電秀都是沒有錄影可以了解的,相當建議大家千萬別錯過這個機會。

Google I/O 會場到處是休閒的場所,這個地方的螢幕顯示著河川的快速模擬圖,透過機器學習的方式來模擬河川氾濫的過程。搭配著輕鬆的音樂提供給與會人士一個絕佳的休息場所。

最後分享給各位的是社群會館,也是我這幾天持續待的地方。身為開源社群的一份子,最喜歡就是去了解其他國家的人是如何來經營社群,如何來舉辦社群活動的。 Google 在這裡有些不錯的想法,透過 GDG (Google Developer Group) 的幫助下,在社群會館中有一些有趣的活動。比如說主辦單位會給參與人員問卷,上面有十個問題,主辦單位希望參加的人可以去詢問世界各地的 GDG 主辦人員。 裡面的問題可能是,請問社群多久舉辦聚會一次?在哪裡舉辦? 通常使用什麼樣的場地來舉辦社群活動? 類似的活動都是希望增加與會人員與開發者社群的互動,除了可以讓與會人員更加的瞭解 GDG 之外,也希望能夠吸引到更多人來加入與一起發展 GDG 。

而且在社群會館有來自全世界的 GDG 社群工作人員,大家都充滿熱情並且樂意分享在裡面其實可以補充滿滿的社群熱情。

小結: I/O: Innovation and Open your mind

(圖片: 在社群會館提供,可以拍照變成相片牆的一份子,也可以跟剛認識的朋友一起拍)

Google I/O 主打的就是創意 (Innovation) 與開放 (Open) ,許多的主要概念在製作物跟相關的場地佈置上都可以感受到。對於開發者們的互動更是構思的很清楚,透過場內的議程討論,許多工作訪的互動。還有場外許多活動的想法中可以感受到來自全世界開發者的熱情。 感謝公司能夠提供給身為開發者我這樣的機會,除了了解全世界最大的開發者年會該如何舉辦之外,也更能了解在往後的活動上該如何提供與會人員更開放想法與激勵更多創意。

LINE Developer Day 2019 啟動

身為 LINE 台灣 Developer Relations 團隊的一員,也要跟各位宣佈 LINE 全球開發者年會 LINE Developer Day 2019 將在 2019/11/20 ~ 2019/11/21 在日本的日航酒店舉辦。今年將擴大舉辦為兩天的年會,並且希望能提供許多開發者更多資訊,也希望更深入地讓技術分享給參與的人員,希望大家千萬別錯過。

LINE台灣持續招募中

你是有能力的開發者嗎? 想要加入我們嗎? 快到以下的地方尋找你有興趣的職缺。

[研討會心得] 20190628 Chatbots 10 at 天瓏書局 Coding Space

前言

大家好,我是 LINE Taiwan 的 Technical Evangelist - Evan Lin。這次很開心受到 chatbot 社群的邀請,參加了 “Chatb10ts meetup 聊天機器人小小聚 10 @ 天瓏書局 Coding Space” 的聚會活動,並且分享 LINE API 更新與個人開發的心得。在此也跟各位分享本次參與的心得,並且也希望透過社群分享的力量能夠讓聊天機器人的開發動能更加的盛大。

  • 社群 Chatbots Meetup: https://chatbots.kktix.cc/

  • 本次活動網頁: 活動網址

由於 Chatbots Meetup 本身屬於社群自主性的活動,裡面也有許多社群朋友所贊助的閃電秀。裡面的所有內容也是相當的難得與有趣。也希望能夠透過本篇文章讓大家稍微了解 Chatbots Meetup 社群閃電秀的魅力。

Write image proxy server for LINE Bot in Go / 資深開發技術推廣工程師 Evan Lin

投影片

首先先跟所有的來賓分享新的 LINE Login API 更新 並且也分享透過更新後的 API 所撰寫的範例網站 https://login-tester-evan.herokuapp.com/ 。 透過新的兩個變更,可以讓開發者能夠更有彈性的來開發 LINE Login 的相關應用。 在此列出相關細節:

1. ui_locales:

技術細節: https://developers.line.biz/en/docs/line-login/web/integrate-line-login/#spy-making-an-authorization-request

  • Parameter:
    • ui_locales
  • Type:
    • String
  • Required:
    • Optional
  • Description:
    • Display language for LINE Login screens. Specify as one or more RFC 5646 (BCP 47) language tags, separated by spaces, in order of preference. Corresponds to the ui_locales parameter defined in the “Authentication Request” section of OpenID Connect Core 1.0.

懶人包: 透過輸入 ui_locales 可以變更 LINE Login 顯示語言,比如說

  • ja-JP: 日文
  • ko-KR: 韓文
  • zh-CN: 中文
  • th-TH: 泰文

2. amr:

技術細節: https://developers.line.biz/en/docs/line-login/web/integrate-line-login/#spy-getting-an-access-token

  • Property:
    • amr
  • Type:
    • Array of strings
  • Description:
    • List of authentication methods used by the user. Contains one or more of:
      • pwd:Log in with email and password
      • lineautologin:LINE automatic login (including through LINE SDK)
      • lineqr: Log in with QR code
      • linesso:Log in with single sign-on

懶人包:** 如果透過 JWT 來 decode payload 的話,可以看得到使用者透過哪些方式來做 LINE Login ,比如說

  • pwd: 密碼登入
  • lineautologin: LINE 自動登入 …
  • linesso:Log in with single sign-on

第二個部分介紹如何透過 Golang 來開 Image Proxy Server 。當初開發 Image Proxy Server 的契機是由於當初開發寵物領養機器人 - “流浪動物需要你” 的聊天機器人。由於流浪動物的收容資訊都是透過 Open Data 所提供的,裡面的圖片竟然是 http 而不是 https 。 在這裡分享了透過 Heroku 的開發方式來建置一個 Image Proxy Server 可以不需要任何伺服器的費用就可以讓 http 的圖片轉換到 https的圖片。

相關的開源程式碼在: https://github.com/kkdai/img-cache-server

更多相關內容:

LINE@ 2.0 的 offline to online (LIFF + richmenu + push 機制) / LINE API Expert -Caesar Chi

投影片

LINE@ 2.0 offline to online from Caesar Chi

第一位 LINE API Expert - Caesar Chi 帶來相當實際的運用案例,由於今年在四月的時候,官方帳號 2.0 正式的上線。許多的客戶希望能夠更有效的運用 LINE @ 的帳號來達到更好的使用者轉換率,而 Caesar 在此就分享了在實務上如何有效地透過 LIFF + RichMenu + Push 機制有效地讓廠商能夠更有效率的轉換,並且也跟開發者們分享了,在官方帳號 2.0 轉換後的一些小技巧。

LINE Bot on Cloud Run: 使用 line/line-bot-sdk-go / LINE API Expert - CL Sung

投影片

第二位 LINE API Expert 分享了相當硬底子的開發經驗,透過了 LINE Bot 在 Cloud Run 上來部署 LINE Bot 。

一開始講者分享了當初為什麼會踏入 Golang 的開發過程,並且也分享了 Go 的 Vendor 的機制演變,從 Go 1.5 的 Vendor 到 Go 1.11的 Go Modules 。並且也分享了 https://github.com/line/line-bot-sdk-go 的參與貢獻的開發過程。

接下來透過一個小型 LINE Chatbot 的專案來 (一個回應使用者輸入,並且可以透過 AWS 與 GCP 提供的功能來偵測臉部辨識的聊天機器人)講解如何透過 Google Cloud Run 來開發 LINE Chatbot 。

一開始講者分享兩段透過 GCP 與 AWS 雲端服務來偵測臉的相關範例程式碼,而其他聊天機器人所需要的相關處理程式碼也都帶過一次。完成所有需要的聊天機器人開發上所有需要的部分。

部署上,一開始先講解開發者熟知的透過 ngrok 來部署聊天機器人的方式,接下來透過 docker-compose 的方式來部署起來。並且透過 docker 特有的 Multiple Stage Build 的方式來讓部署的執行檔案大小變小。

最後再來介紹 Google Cloud Run 的部署方式,透過 Container 的方式來實現 Serverless 的技術。透過這樣的方式讓你的 LINE Chatbot 變得更有效率與更經濟。

上線之後,講者也分享了實務上很常使用到的「三寶」- Logging , Tracing 跟 Metrics 。解釋了在這次提供的案例之中如何加入 Stackdriver 的 Logging 與 Tracing ,可惜時間不夠無法完整討論到 stackdriver 的 monitoring 。

閃電秀

講解完了主要三個講者之後,接下來就是介紹這個社群最有魅力的部分就是閃電秀。所有的閃電秀可以參考這篇共筆文章 https://beta.hackfoldr.org/chatbot/ ,由於都是五分鐘的閃電秀,主要內容快速用條列介紹給各位:

  • Is your bot ALIVE? / petertc
    • 相關影片與投影片:
      • https://youtu.be/Ljwwm_8E-uk
      • https://www.slideshare.net/petertc/is-your-chatbot-still-alive
    • 內容說明:
      • 講者分享如何來有效的監控你的聊天機器人,並且能夠精確的確認 chatbot 是正常運作的。這時候透過的方式是跑自動化測試的好幫手 http://doc.sikuli.org 也就是透過圖片的自動化測試工具來監測你的聊天機器人有沒有正常運作。
  • Chatbot O2O 案例分享 / EJay
    • 內容說明:
      • 做這透過 LINE Chatbot 與動態網頁互動跟現在參加活動的會眾互動。透過問卷調查的方式來贈送小獎品。蠻有趣的,可惜沒有相關影片與投影片。
  • Chatbot 待辦小精靈 / Jeffrey
  • 收藏小幫手 - 金魚腦救星 / Zz Chen
  • 從台幣匯率機器人延伸至團購 LIFF / Melix
    • 相關影片與投影片:
    • 內容說明:
      • 相當有創意的應用,原本是開發一個出國幫忙記錄匯率的小幫手。由於不少人有代購的需求,轉變成代購小幫手的工具,開發成 LIFF 之後,透過鏈結的分享。也搖身一變成為團購使用的小工具。相當建議各位看看影片的介紹。
  • 迷你綠洲LINE智慧淨水器 / McGee
    • 內容說明:
      • 分享透過淨水器產品,如果需要更換濾心可以透過 LINE Chatbot 通知。由於牽扯商業宣傳就不提供,請有興趣的去看共筆。
  • 自幹一個 Flex Message Editor / Ding
    • 內容說明:
      • 很棒的工具, Bot Designer 雖然是很方便的工具,但是使用上有收到不少的建議,於是獎者自行開發了另外一套 FLEX MEssage Editor ,功能相當不錯,可惜是商業作品也不方便宣傳。

活動小結

社群分享永遠是讓創意激盪的最佳方式,而 Chatbots Meetup 是一個很熱情與充滿創造力的社群組織。也希望有更多有創意的開發者願意加入 LINE Chatbot 的開發行列,更希望能熱情的參與社群的活動與一起來分享。

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

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

關於「LINE開發社群計畫」

LINE今年年初在台灣啟動「LINE開發社群計畫」,將長期投入人力與資源在台灣舉辦對內對外、線上線下的開發者社群聚會、徵才日、開發者大會等,預計全年將舉辦30場以上的活動。歡迎讀者們能夠持續回來察看最新的狀況。詳情請看 2019 年LINE 開發社群計畫活動時程表 (持續更新)https://engineering.linecorp.com/zh-hant/blog/line-taiwan-developer-relations-2019-plan/)