[LINE][教學] 使用 liff.isApiAvailable() 來讓舊的版本 LINE App 可以跑新的 LIFF 功能

(LIFF ShareTargetPickder 功能展示)

前言

LIFF ShareTargetPickder 是一個相當強大的功能,不僅僅可以在 LINE 裡面讓使用者更方便地分享資訊給好朋友,更可以讓使用者透過外部瀏覽器來分享資訊給好朋友或是聊天群組。

但是這樣的功能在 LINE 上面的支援程度必須要再 10.3.0 之後的版本才能支援,如果使用者的手機 LINE App 版本不是更新到最新版本的話。那麼有可能無法正常執行這個功能。

今天這篇文章就要介紹一個新的 API 功能 liff.isApiAvailable() 功能,如何透過這個 API 讓各位新的 LIFF ShareTargetPickder 可以在使用舊版本 LINE 的使用者上運行,並且提供給各位一段範例程式碼與展示的影片。

範例程式碼

https://github.com/kkdai/liff-template-go

實際跑一個範例 (demo)

開啟這個 LIFF App

如果你是在 iOS 手機並且透過舊版本的LINE App (<10.2.0) 中打開,你會出現一個警告訊息,並且幫你打開外在瀏覽器來開啟這個 LIFF 網址。

可以看以下影片的展示:

程式碼解釋

(完整程式碼可以查看: https://github.com/kkdai/liff-template-go/blob/master/liff.html)

這邊做一些簡單的解釋:

  • if (liff.isApiAvailable('shareTargetPicker')) 透過這個方式來檢查目前是否支援這個 API

    • 如果在 LINE App 呼叫,會根據不同 LINE App 回覆不同回答:
      • 版本小於 10.3.0 回傳 False.
      • 版本大於或是等於 10.3.0 會回傳 True.
    • 如果是在外部瀏覽器呼叫,將會永遠回傳 True.
  • 如果版本不支援,直接往 13 跑,首先先跑出警告視窗顯示: “你的 LINE App 暫時不支援 Share Target Picker ,將開始外部瀏覽器。”

  • 然後透過 liff.openWindow 來開啟外部瀏覽器(透過 external: true ),讓使用者透過別的方式來使用這個功能。

總結

透過 liff.isApiAvailable() 可以讓需要使用 LIFF ShareTargetPickder 的開發者,讓有一些使用者也能夠正常的體驗 LIFF ShareTargetPickder 的威力。

但是隨著 LIFF 的功能逐漸增加,或許以後也會有更多令人驚喜的功能,讓我們一起期待吧?

參考

[podcast] Software Engineering Daily - FB Messenger Rewrite

https://softwareengineeringdaily.com/2020/03/31/facebook-messenger-engineering-with-mohsen-agsen/

最近聽過蠻有趣的 Podcast 講解 Facebook Messenger iOS 版本重寫的過程。 作為技術研究與討論,幾件事情值得整理:

  1. Single source of truth 竟然是 client 的 SQLite 資料庫。
  2. 重寫 Messenger client 團隊高達 120 多人(據說大多是 iOS)
  3. 沒有 React Native 全部都是 Obj-C ,共用部分用 C 整篇內容算是有足夠的深度,並且分享不少過程中的經驗談。

[TIL][Podcast] 關於 WFH 議題的 Podcast

(Photo by Djurdjica Boskovic on Unsplash)

前言

由於新冠病毒的影響,似乎每一間公司就開始(或是試跑) WFH (Work From Home) 也就是在家工作,來避免搭乘大眾交通工具而增加感染的風險。 最近聽了幾個 Podcast 也有提到作為軟體工作人員對於 WFH 的想法,我覺得可以整理一下分享出來。

幾個 Work From Home 的 Podcast:

最近聽了一些關於 WFH (Work From Home) 的 Podcast 討論,分享幾個給大家:

Go Time – Episode #123 WFH

https://changelog.com/gotime/123

參與人員:

內容:

這篇蠻有趣的是討論到很多很細的 WFH 細節:

  • 比如說水喝太多跑廁所。
  • 需要有個好好投資買個好椅子(廣告: LINE 辦公室都是 Human 實在太犯規)
  • 需要有個儀式轉換心情~換衣服可能不錯喔? 也有人建議可以訂鬧鐘,不然很容易上班過久。
  • 需要有個走動的習慣,基本上就是你在辦公室會做的,你應該也要在 WFH 也做,這對我還蠻重要的。我習慣走動一下思考許多活動的細節,往往在家就沒辦法走動實在不太好。有人建議可以養隻狗~他會強迫你去走動。

其他部分其實談到是工程師的 Deep Work 的重要性,也就是如何保留一段時間作為專注工作的方式。這邊就不另外提了。 有一本正在看的書,可以推薦:

Remote Team Management with Ryan Chartrand : Software Engineering Daily

https://softwareengineeringdaily.com/2020/03/26/remote-team-management-with-ryan-chartrand/

討論的內容比起 Work From Home 更直接,而是完全的 Remote Team 。 裡面談到 Remote team 是比較直接的,省去了許多辦公室的禮貌,但是卻能夠直接地給予公司所有的贊助。 員工每一天上班不需要煩惱通勤,中午吃什麼,而是今天要如何幫助專案或是公司前進。

weak self podcast 23: 在家工作!WFH 時怎麼樣才不會 WTF

https://weakself.dev/episodes/23

內容跟前面兩個都蠻像的,想聽中文版本的可以聽聽看這個。

關於 Work From Home 的感想

公司也在最近有試跑 WFH ,目的是希望所有同仁能夠習慣透過 remote work 的方式來完成原先日常有的工作。所以在時間安排上也比較隨機,也希望同仁不要因為 WFH 而特地把會議移開。

對我自己來說, Work From Home 或是在辦公室工作主要就是能夠專心的程度,當然公司超好的椅子也是一個誘因啊! 因為我周圍其實也滿安靜的,所以對我來說不論是在家裡或是在辦公室沒有太多差異,但是我個人是希望在辦公室工作,因為設備比較齊全。

加上最近有一些線上活動需要錄影準備,常常也是要當場跟製作公司討論錄影的相關內容。所以很多時候反而希望能在辦公室辦公。(加上不知道為何家裡樓上的鄰居最近又開始裝潢 orz )

不過真的如同幾個 Podcast 有提到的,很重要的在於如何確認你下班了,避免你的生活因為 WFH 而嚴重的被影響。

除了這些之外,原本如何提升專注力或是如何讓自己專心工作,,這似乎又是另外一個議題了。

[TIL][Podcast] 換了 Podcast 的收聽軟體 Overcast

前言:

聽 Podcast 大概是我好幾年的興趣之一,除了可以幫助我在通勤的開車時間學習一些新的事物。最近有一些有趣的議題也會讓我在通勤開車時間笑個不停。

但是最近發現 iOS 內建的 Podcast 實在沒那麼好用,加上 MacOSX 的版本(說好不提 iTunes) 更是不好用。只好看看有沒有其他的 Podcast 軟體可以更換。

最近換了 Podcast 的軟體: Overcast

主要是因為這個 tweet 的討論,讓我知道了 Overcast 的功能(已知用火?)。裡面有兩個功能我蠻推薦的:

  • Smart speed: 自動移除掉靜音的部分,讓整個播放速度會智慧的調整。
  • Voice Boost: 聲音也會變大聲一點,試了幾天下來蠻清楚的。

比較一下跟 iOS 內建的 Podcast 比較:

  • Overcast 也是可以在網路上聆聽,讓你在 MacOS 上面也是可以同步目前的聽的狀況。
  • iOS Podcast 的 short note 顯示有被人強力的批評,完全不依照原來的格式。
  • iOS 會自動全部下載最新的, Overcast 預設下載最新的,需要更大空間需要付費會員。

推薦的 Podcast

其實來聽 Podcast 最大的問題應該是「如何尋求喜歡的頻道?」 ,這個其實蠻推薦可以試試看 Castbox 。裡面有不少的推薦頻道。

國外推薦 Podcast

國內推薦 Podcast

  • 頂樓加蓋: 由 Affe 跟 Denny 兩人組成的 podcast ,有很多有趣的內容。也很好笑。
  • weak self: 三個 iOS 工程師的內容,也有一些動森跟其他工程師會聊的,蠻有趣的。
  • 冒牌者症候群の下班時間:由 Badu Huang 開台的內容,內容也蠻多元的。30 歲,結婚生子或是換領域都有。
  • 三宅一聲: 三位業界 KOL 經營的內容,可以聽聽。

Reference:

[Golang][LINE][教學] 使用 Icon Switch 來變更聊天機器人的暱稱與圖示

(圖片來自: LINE Developer News )

前言

曾經在 TECHPULSE 2018 的演講上有出現過的 Icon Switch 功能,當時受到相當多開發者的詢問。但是由於當時 Icon Switch API 仍然算是 Partner API (指的是需要透過跟 LINE 申請合作的開發廠商,才能使用的功能),所以能使用的開發者並不多。

很開心的這樣的功能總算開放給所有的開發者來使用,本篇文章就是透過一個簡單的範例來讓開發者們了解該如何使用這樣的功能。

範例程式碼

https://github.com/kkdai/line-bot-icon-switch

如何部署範例程式碼:

  • LINE Developer Console 建立相關的 Provider 跟 Channel

  • LINE Developer Console 建立一個 LINE Messaging API Channel 並且打開 Message API 的功能,並且將以下兩個資訊記住:

    • Channel Secret
    • Channel Token
  • https://github.com/kkdai/line-bot-icon-switch 按下 Heroku Deploy ,建立該帳號並且部署該服務。這時候會要輸入三個資訊:

    • CHANNEL_SECRET
    • CHANNEL_TOKEN
  • 記得把 https://test-api-1234.herokuapp.com/callback 加到 LINE chatbot web hook 才能正確地啟動聊天機器人。

實際跑一個範例 (demo)

  • 先 Deploy 該範例專案,或是直接加入測試機器人 @656gvdsu (也可以掃描以下 QR Code)

  • 輸入任何字,聊天機器人會提示你要可以選擇回覆的人「Brown」,「Cony」或是 「Sally」。

  • 輸入「Brown」,「Cony」或是 「Sally」 就會看到機器人更換他的圖示與暱稱來回覆你。

程式碼解釋

(註: 相關程式碼展示透過 Go)

{
    "type": "text",
    "text": "Hello, I am Cony!!",
    "sender": {
        "name": "Cony",
        "iconUrl": "https://line.me/conyprof"
    }
}

這段由 Icon Switch 的文件上面擷取的範例,可以了解 Message Object 新增了一個 sendeer 的物件,裡面包含了兩個資料:

  • name: 修改的暱稱,但是請注意“避免混淆使用者”,所以全名會是 "暱稱 from OA 名稱" 這樣的全名顯示方式,可以確定發言的是官方帳號(不是某個真人),不容易讓使用者混淆。
  • iconUrl: 圖示的修改,圖片的來源必須是 HTTPS 。

找出 LINE Friends 的圖示

相關的圖示來源可以參考這個 LINE Sticker 文件 ,在這份文件可以找出公開且免費使用的貼圖(請注意,除了這些開放的,其他都需要驗證與購買才能在 LINE 視窗內看到)。

發送修改暱稱

這段範例程式碼該如何如何使用 Icon Switch 的功能,最重要的就是以下這段:

linebot.NewTextMessage("Hi, this is "+message.Text+", Nice to meet you.").WithSender(sendr)

也就是每次送訊息得時候,需要指定發送者的相關資訊 WithSender() 即可。

如何使用 Icon Switch 來推廣你的官方帳號

接下來這邊開始介紹幾個可能很適合使用 Icon Switch 功能的應用場景。

客服業可以透過 Icon Swtich 讓使用者有更好體驗

比如說銀行的客服官方帳號,可以如果使用者在聊天過程中希望有「真人客服」可以幫忙協助的話,可以透過 Icon Switch 來切換圖示代表轉換到真人客服。

LINE 官方帳號活動或遊戲透過 Icon Switch

有一些人透過 LINE Bot 來玩一些網路遊戲的想法,透過 Icon Switch 可以讓使用者更容易了解跟誰在對談。或是這時候是的遊戲狀況。

比如說: 狼人殺類型遊戲,桌遊等等相關類型。

此外,透過 Icon Switch 也可以來做一些活動公告,讓使用這更有親切的感覺:

  • 透過嫦娥來發送中秋節優惠
  • 透過年獸來發送過年活動訊息

總結

Icon Switch 是一個免費,並且可以讓使用者相當有感的功能。希望開發者們能夠一起來發揮創意,來開發出有創意的 LINE Bot 吧。

『Create WoW for the world!」

參考

[研討會心得] 2020/03/17 Chatbots 17 at Dcard

前言

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

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

這次場地感謝 Dcard 贊助在 Dcard 的 14 樓辦公室,有一個專門提供給技術社群分享的空間。相當的不錯,也希望有更多的社群來這裡分享。

由於防疫的要求,這也是我第一次參與到全程配戴口找的線下實體活動。感謝主辦單位準備完善的酒精消毒與口罩配戴叮嚀,讓參與的人與工作人員都能夠受到良好的保護。

LINE Platform Update 202001 / 資深開發技術推廣工程師 Evan Lin

傾聽開發者反饋,以 LIFF Server API 為例:

LINE 對於開發者的反饋是相當重視的,歡迎每一位開發者與我們共同成長,互信與互惠的經營著這個平台。在 2020/01/21 的時候曾經在網站上宣布著 LIFF Server API 即將在三月底停止功能之後,收到了許多開發者的回覆,對於與客戶之間的合作方式將會因為 LIFF Server API 的停用而造成莫大的困擾。

DevRel 團隊蒐集到相關的案例與討論後與總部的開發團隊討論之後,也很開心的獲得了計畫團隊的了解。將時程停止了,更多訊息可以參考 LIFF v1 API 及停用日期變更。

更好用,讀取更快速的 LINE Developer 網站

2020/01/27 我們曾經宣布開發者網站 (LINE Developer) 有了大幅度的改版,變得更快!更好用!最近有一篇更詳細的文章敘述,他們如何從 Middleman 轉換到 VuePress 的過程,歡迎觀看。

相關文章:

更有效地分眾訊息 - Narrowcast 與 Custom

“我們不是不喜歡廣告……我們只是不喜歡與我們無關的廣告。” 同事 Tan 在文章「透過 Narrowcast API 在 LINE Chatbot 上發送”精準”且”討喜”的訊息」裡面有介紹到這個事實。 使用者們並不討厭廣告,但是討厭被跟自己無關,自己不在意的廣告騷擾。經常出現無關的廣告訊息會增加使用者的好友封鎖率。

因此, LINE 在一月底推出了分眾管理的相關 API ,透過主要提供的三種分眾方式:

  • 人口資料挑選方法:
  • 透果使用者的統計資訊來分眾,年齡,性別,甚至是地區,都是可以讓開發者可以根據來分群的方式。
  • 點擊再行銷:
  • 根據發送過的訊息內網頁鏈結的點擊用戶,針對該用戶再來做相關的行銷。
  • 曝光再行銷:
    • 根據發送過的訊息有收到並且已讀的用戶,針對該用戶再來做相關的行銷。

針對以上所以的三種方式還可以做相關的運算比對( OR, AND ) 的方式,更可以讓商家可以找出想要針對的客戶:

  • 九十天前加入的好友,並且為男性的年輕人
  • 點擊過鞋子類商品鏈結的女性好友

這些都是相當好用的範例,更多的範例可以看由廣告與商業部門同仁提供的「LINE 生活圈」官方粉絲團的相關介紹影片

相關資訊:

新的 LIFF App 將不在支援 LINE Things 中的 BLE (藍芽)通訊功能

LINE Things Developer Trial 已停止提供 LIFF app BLE 新功能,且未來將不會恢復提供; 目前僅提供自動通訊功能 (automatic communication)。

2020 年 2 月 10 日之後建立的新 app 將無法於 LINE Things Developer Trial 中使用 LIFF app BLE 新功能。

相關鏈結:

LIFF: Share Target Picker

自 LIFF v1 時代以來透過 liff.sendMessages() 將消息發送回聊天室(以用戶的名義)或的功能,僅打開該LIFF的聊天室。

不少開發者建議 LINE 增加 LIFF 與朋友或群組分享消息的能力。這就是 liff.shareTargetPicker()

開發前需要了解的五件事

  • 從 10.3.0 版開始,LINE App 將支持 “Share Target Picker” (註解: 如果在外部瀏覽器,則不需要等待 LINE App 更新)
  • “Share Target Picker” 僅在 LIFF v2 中可用。
  • 來自 “Share Target Picker” 的消息將代表用戶發送(就像我們向朋友發送消息一樣)
  • 純文字圖像視頻音頻位置Template Message(僅URI操作)Flex消息是可以通過 “Share Target Picker” 發送的消息。
  • 可以在外部瀏覽器中使用 “Share Target Picker” ,但必須先使用LINE Login 進行身份驗證

關於 Share Target Picker 的版本支援部分:

  • LINE 裡面打開網頁 -> IAB (In-App-Browser) ,依賴於 LINE App 版本。 iOS 需要 10.3.0 (目前還沒上架)
  • 外部瀏覽器打開網頁 -> External Browser 不依賴 LINE App 版本。

所以建議大家可以把 LIFF v2 開發在各位的電商網站之中….

相關展示:

或是觀看以下的展示影片:

相關資訊:

LINE Bot 案例分享 - 口罩查詢 / David 董大偉

投影片

最近由於新冠病毒的盛行,全國都一起在忙碌著防疫。董老師也不落人後,透過製作一個口罩查詢機器人來教導大家關於快速部署一些心法。

相關的開發過程:

  • 資料轉換: 衛福部的資訊是 csv ,需要轉換成資料為 JSON 。
  • 方便查詢: 透過 LINQ 來對資料做相關的查詢。
  • 如何定期更新資料: 由於資料剛上線的前幾天,資料查詢需求爆量。需要保存一次資料在 local storage,避免資料因為查詢不到而無法顯示。 並且透過外在服務去測試服務是否還在線上(方式就是 Refresh 相關資料)。

除了開發之外,其實部署跟維運的流程也相當重要:

  • 需要能夠負擔大量用戶:打造具有 HA (High Availability) 的架構,能夠自動水平擴展(Auto-Scale) 。
  • 部署的穩定度: 自動更新版本(自動上版),藍綠部署(Canary Release: 也就是將新功能部署給某一些用戶,可以了解是否有問題發生,避免因為大量部署造成停用的問題)。
  • **服務的可量測性(Measurability) **: 透過外在服務 Azure AppInsights 來幫助量測服務的健康度。

如何 LINE Notify 來主動通知使用者(免費的方式):

LINE Notify 是 LINE 提供具有訂閱的免費服務,許多的開發者除了拿來做訂閱服務外,更可以拿來通知使用者。但是要如何讓使用者能夠「主動訂閱」 LINE Notify 呢?

其實是可以透過 Action Button 來訂閱,但是有一些需要注意的部分:

  • 訂閱服務畫面,拉到最下方需要同意使用者條款。並且確定訂閱。
  • 使用者經常不小心把 LINE Notify 的 OA 封鎖,造成無法訂閱其他資訊。

閃電秀

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

  • 防疫駭客松,4小時創作「尋找口罩」LINE Bot!/ 陳佳新
    • 投影片
    • 簡介:
    • 講者介紹如何在四個小時內透過最快速的方式來打造出一隻「尋找口罩」的聊天機器人。
  • 跨群組尬聊一波!/ 卡米哥
    • 投影片
    • 簡介:
      • 透過一個 LINE Chatbot 結合 LINE Notify 的服務來打造跨聊天室的聊天機器人。不同群組裡的對話都會透過 LINE Notify 來相互轉傳。相當有趣的創意!!
  • 用 LINE 玩桌遊 - 殺手遊戲 / Dairan
    • 投影片
    • 簡介:
      • 透過 LIFF 與聊天機器人來打造一個線上殺手遊戲(一個類似狼人殺的遊戲),遊戲過程相當的有趣。
  • LINE 防翻群機器人 / Dairan
    • 投影片
    • 簡介:
      • 講者在開發殺手遊戲的同時所激發的靈感,一樣是透過 LIFF 與 Chatbot 來讓使用者可以在被翻群機器人翻出的時候,收到加回群的鏈結。

活動小結

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

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

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

關於「LINE開發社群計畫」

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