LINE Developer Day 2019 現場筆記 (三) – LINE Bot 與 DevOps


前面提過,LINE是一家非常熱愛Open Source的公司,諸多的solutions中,十有八九是藉由純Open Source技術來實現的,你很少很少很少看到其他軟體大廠的服務在LINE出現。也因此,當我在議程表當中,看到有Microsoft相關的場次時,不由得眼睛一亮,身為MVP,說什麼我也得前往瞧瞧…

議程表當中,共有兩個與Azure有關的場次,一場是由Kenichiro Nakamura分享的How to optimize bot development lifecycle with DevOps(這場非常有意思,我待會說),另一場則是Ayako Omori的Developing chatbot with Cloud 101 for LINE account auto-reply,兩場都是純日文演說,我也都硬著頭皮參加了。

Bot Framework

Ayako Omoris那一場是少數沒有英文即時翻譯的日文演說,導致我基本上是完全聽不懂講者在說什麼,不過,我卻大致可以掌握整場的內容。很矛盾? 一點也不。

因為內容是我非常熟悉的Azure Cognitive Services與Bot Framework,我發現技術語言是跨國籍的,我雖然完全聽不懂講者的日文,但只看Demo和操作,基本能夠掌握八成左右(所以如果讀者想去國外工作,大可不用過度擔心語文的問題),講者除了大致完整的介紹了MS Bot Framework與LINE Bot如何整合,還有如何使用LUIS和QnA Maker服務,這些過去我在書籍線上課程中大致也都有介紹,講者能在幾十分鐘的時間內把這些內容都塞進去,也算是不容易了。

除此之外,她也提到了MS最近釋出的BotFramework-Composer(這就是個新玩意了):

Bot Framework Composer是一套open source的Chat Bot設計工具,可以讓你用視覺化的方式來建立Chat Bot。除了支援上圖這樣的所視及所得對談設計界面,也支援LUIS和QnA Maker,讓設計人員可以自由的使用這些雲端服務並整合在Bot當中,雖然目前還只是預覽版本,但未來頗值得期待。我知道台灣坊間也不乏這樣的工具,但掛著微軟的招牌,加上又是open source,背後有MS Bot Framework撐腰,又有自然語言語意分析加持,其前景很讓人看好。

開發Chat Bot的DevOps自動化

另一個與微軟有關的場次是由Kenichiro Nakamura介紹的How to optimize bot development lifecycle with DevOps,講者是MS的開發人員,同時也是LAE:

主題的內容是開發Bot時的DevOps。

開發Chat Bot也需要DevOps? 當然,在這個時代不管開發麼甚麼,都需要DevOps,Chat Bot當然也是。講者談到了Chat Bot的開發其實更需要DevOps,特別是我們常常有正式、測試環境、為了讓LINE Bot的開發與測試更順暢,一般來說,我們在開發一個LINE Bot時,會特別建立2-3個LINE Bot Account,分別將其設定成Dev/UAT/Production環境。

而Azure WebApp的好處就在這邊體現了,我們可以透過WebApp的Slot機制來做不同的環境佈署。當我們建立了WebApp後,對該WebApp分別建立額外的Dev or UAT Slot,然後針對不同的Slot配置環境參數:

其實這個做法,基本我們在Azure Web App上幾乎是天天上演,算的上是開發Chat Bot的best practice了。然後,再搭配Azure DevOps,來實現自動化CI/CD:

只要在MS的世界中談到DevOps,那毫無懸念的就是採用Azure DevOps,然後LINE Bot的開發可以採用WebApp(不管是Linux based或是Windows based),以Slot切分出Dev/UAT/Production環境,搭配Azure DevOps的Release Management自動化佈署與簽核功能,在開發人員有任何修改後,自動上版到Dev/UAT環境,待UAT環境的測試人員確認無誤後,可以在portal上按下Approve鈕(上圖右),就繼續自動上版到Production環境。

這個在MS世界中幾乎算是理所當然、生來就有的流程,在Open Source世界多少還是需要一些環境上的配置,但Azure雲端服務搭配Azure DevOps,基本可以近乎自動的實現上面所有的流程。

有趣的Bot

對我來說,前面介紹的那些不算是特別新鮮的內容,但這位講者一上場,立即就吸引了我的目光…原因是,他帶來了一隻非常有意思的Bot。

開場的第一張投影片,他先請大家掃QR Code加一隻LINE Bot為好友,這隻Bot可以幹嘛呢? 它可以索取當前的投影片:

這是一隻有著Rich Menu的LINE Bot,按下該LINE Bot的Rich Menu,就可以下載講者當前螢幕上撥放的投影片!!!

這有意思,這樣大家就不用拍照了啊~

這對講師超級有用的!

為甚麼呢? 每次我在上課,總是會看到許多學員在底下拍照,可能是覺得某一張投影片相當精彩,所以想要拍照存證留念,但我自己也會坐在底下當學員,這樣拍照出來的品質我清楚的很,有時候實在慘不忍睹。

而且,不是每一個講者都會在會後立即釋出投影片,特別是我,我上課的投影片常常是幾百張裡面的幾十張。因為我會把同樣的主題放在一個.pptx檔案裡面,然後看不同的課程就挑其中一小段來講。因此,我不是很方便把整份投影片都給學員。

但學員常常需要做筆記或是從投影片上摘錄重要的資訊啊,怎麼辦呢? 這就是你常常看到學員在底下拍照的原因了。

現在有了這支Bot超讚的啊。

你只要在台下打開手機,眼睛盯著台上的螢幕,喜歡哪一張投影片,就立即在手機上按一下,那一張投影片就會自動下載到你的手機裡,超完美的啊。我看到這支Bot之後立刻被吸引,第一時間就給他安裝了起來,不過…

開場前10分鐘還可以用…後來似乎就…掛了。

發生了什麼事情嗎? 當下我不知道,但不管如何,這個Bot太讓人驚艷了,我立刻下定決心,我回台北之後要自己做一個出來玩。

發生了什麼?

後來,我跟講者聯繫上,請教了他是怎麼實現這個Bot的。他告訴我,基本上是採用了MS Office的VSTO開發技術,透過設計一個外掛(Add-Ins),在PowerPoint的 “下一頁” Event上,做一些動作,把當前的投影片位置提供給Bot的WebAPI(底下是講者blog上的介紹):

而到底當下究竟發生了什麼? 導致現場Bot有問題的呢? 這個故事你可以看底下講者的Blog,有現場報導般的說明:

在LINE Developer Day 2019通過LINE bot分發PowerPoint幻燈片的故事

你會發現,這個故事的主角不僅僅是這支Bot,還包含了講者開發這支Bot的過程,以及他如何使用Azure DevOps做開發的版控與rollback,是個非常精彩的故事。

這整個故事讓這場研討會變的很有意思,講者用自身的LINE Bot開發DevOps經驗,來講在開發LINE Bot時候DevOps扮演了如何重要的角色。不只是過程吸引人,產出的Bot也非常吸引人…

後記

從看到那隻Bot的那一天開始,一直到我回台灣,我始終對那隻LINE Bot念念不忘。終於,我找了一個周末的下午,在自己的環境重新開發了一隻類似的Bot,我改變了做法,在PowerPoint的VSTO當中,Hook 投影片播放的下一頁事件,在該事件發生時,再抓取當前的投影片,然後以非同步的方式上傳到Imgur圖床,並且把該位置丟給LINE Bot的WebAPI。

此時,只要有任何用戶按下Rich Menu上抓取當前投影片的按鈕,LINE Bot就會將該圖片下載到用戶手機上,完成當前投影片下載的任務…

哈,非常完美,下一次,換我帶給學員surprise~

LINE Developer Day 2019 現場筆記 (一) - 看見LINE、開發者、未來
LINE Developer Day 2019 現場筆記 (二) - 關於LIFF的改變與未來

留言

Eng Soon Cheah寫道…
在Microsoft Ignite 就有 BotFramework-Composer(Preview) Release Workshop 了。
Unknown寫道…
Cool 最後的Bot有創意,果然科技始終來自需求~

這個網誌中的熱門文章

在POC或迷你專案中使用 LiteDB

使用Qdrant向量資料庫實作語意相似度比對

專業的價值...

使用 Airtable 在小型需求上取代傳統資料庫

周末讀書會 - 一如既往