[Golang][LINE][教學] 導入 LINE Login 到你的商業網站之中,並且加入官方帳號為好友

(圖片來自: Linking a bot with your LINE Login channel )

前言

剛起步的商業網站或是服務,想要吸引使用者來註冊,但是由於需要輸入一堆資訊讓使用者望之卻步。這個時候透過 OpenID 的登入方式常常可以吸引許多使用者快速加入服務。不論是透過透過 Google 或是 Facebook 的帳號都是很方便的。做為台灣手機軟體佔有率名列前茅的 LINE ,當然也有相關的服務稱為 LINE Login 。

繼上一篇 [Golang][LINE][教學] 將你的 chatbot 透過 account link 連接你的服務 教學之後,本篇文章將介紹 LINE Login 並且提供一個範例 (Golang) 講解如何導入 LINE Login 在已經有的商業網站服務之中。

常常也很多開發者在詢問,如何透過 LINE Login 在使用這加入服務的時候直接幫使用者加入官方帳號。這篇文章也會在最後的範例裡面提到該如何做。

為何要使用 LINE Login

許多的商業服務都會透過會員機制來提供許多專屬的優惠或是獎勵活動,但是會員的註冊與登入流程常常讓許多使用者覺得為難。除了要填寫許多的資料外,使用者還需要額外記住另外一組的帳號密碼。 LINE 在台灣的佔有率相當的高,並且幾乎每個使用者都有 LINE 的帳戶的狀況下,這時候如果能夠直接使用 LINE 帳戶來註冊與登入網站服務的話是不是相當的方便?

LINE Login 除了提供一個方式來登入之外,也可以提供使用者名稱,大頭照的相關資訊。並且透過 LINE Login 也可以同時讓使用者加入商業服務的 LINE官方帳號,讓使用者更無時無可都可以使用到相關的服務。

什麼樣的情況會建議使用 LINE Login

這裡會條列出哪些情況建議需使用 LINE Login 作為讀者來評量自己有沒有需要使用 LINE Login :

  • 剛開始要建立電子商務服務或是網站,想要減少使用者註冊的時間並且快速加入。
  • 想要推廣自身官方帳號的聊天機器人服務。
  • 就算是已經推廣一段時間的電子商務服務,但是想要透過 LINE 來接觸不同的客戶群。

了解為什麼使用 LINE Login 以及甚麼狀況下建議使用之後,接下來就引導讀者如何使用範例程式碼

範例程式碼

https://github.com/kkdai/line-login-go

如何部署範例程式碼:

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

  • 建立一個 LINE Login 的帳號,並且將以下兩個資訊記住:

    • Channel ID
    • Channel Secret
  • 另外建立一個 LINE@ 並且打開 MessageAPI 的功能(也就是建置 chatbot 用),並且將以下兩個資訊記住:

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

    • LINECORP_PLATFORM_CHANNEL_CHANNELID
      • 填入 LINE login channel ID
    • LINECORP_PLATFORM_CHANNEL_CHANNELSECRET
      • 填入 LINE login channel Secret
    • LINECORP_PLATFORM_CHATBOT_CHANNELSECRET
      • 填入 Chatbot channel Secret
    • LINECORP_PLATFORM_CHATBOT_CHANNELTOKEN
      • 填入 Chatbot channel Token
    • LINECORP_PLATFORM_SERVERURL
      • 這個資訊根據你的 heroku app 名稱來決定,假設你的 Heroku app 名稱叫做 test-api-1234 那麼你就該填 https://test-api-1234.herokuapp.com
  • 回到 LINE Login 的帳號設定,[App setting] 將以下位置寫入 callback URL https://test-api-1234.herokuapp.com/auth

  • 回到 LINE chatbot 的帳號設定,記得把 https://test-api-1234.herokuapp.com/callback 加到 LINE chatbot web hook 才能正確地啟動聊天機器人。

實際跑一個範例

  • 當部屬好網站服務後,直接用瀏覽器登入網站即可。如果沒有部署的人,可以使用 https://login-tester-evan.herokuapp.com/
  • 連線到網站後會看到有三個 LOGIN botton 選項
    • LINE Web Login
    • LINE Web Login with chatbot (normal)
    • LINE Web Login with chatbot (aggressive)
  • 如果你選擇第一個登入,就會直接跳到 LINE Login 的選項。
  • 如果你選擇第二個選項,在 Consent Page (使用者同意頁面) 會多一個是否加入官方帳號的選項。
  • 第三個跟第二個類似.只是會將加入官方帳號的選項另外跳出一夜。讓使用者更容易加入。

流程圖與程式碼解釋

(圖片來自: Integrating LINE Login with your web app)

以下的內容均參照 Integrating LINE Login with your web app

  • (1). 首先瀏覽器訪問該網站 (假設你直接使用 https://login-tester-evan.herokuapp.com/),進入了 browse() 顯示出三個 LINE Login 按鈕。
  • (2). 使用者按下了 LINE Web Login 的話,就會進入 gotoauthpage() 直接產生一組 API URL 直接導向到 https://access.line.me/oauth2/v2.1/authorize 。這邊其實有一些參數可以設定,可以參考 LINE Login 參數設定
  • (3). 使用者這時候會連到 LINE Platform 來進行登入的步驟,不論是透過 App 登入還是輸入帳號密碼的登入方式。登入完成後會透過 redirect_uri 網址的位址傳回一組 code ,作為使用者資料的存取之用。 這時候會呼叫到 auth() 來解析 code 。
  • (4). 在同一個 auth() 之中解析 code, state, 與 friendship_status_changed 後,檢查 state 正確性之後。就可以透過 code 去抓取使用者的資料了。 這時候會呼叫 https://api.line.me/oauth2/v2.1/token 的 API ,相關必要參數也可以參考這個網址
  • (5). 一樣在 auth() 之中,回傳的結果可以得到 id_token ,透過 id_token 需要透過解譯的方式來將它還原成使用者的資料。這邊也已經包裝好為 DecodeIDToken()
  • 透過 DecodeIDToken() 就可以得到使用這名稱與大頭照。 (email 需要額外申請)

以上就是一般的電子商務網站的導入流程,接下來就介紹如何在導入 LINE Login 的時候直接加入官方帳號 (聊天機器人) 為好友的步驟。

在 LINE Login 同時直接加入官方帳號為好友

根據 Linking a bot with your LINE Login channel的教學,以下將流程簡化讓大家能夠快速了解。讀者可以直接透過範例網站或是程式碼來感受之間的差異性。主要就是 bot_prompt={BOT_PROMPT} 這個參數的差別。

  • 使用者點下 LINE Web Login with chatbot (normal) 的按鈕,則會送出 bot_prompt=normal 。在使用者同意頁面會出現官方帳號的選項給使用者選取。
  • 使用者點下 LINE Web Login with chatbot (aggressive) 的按鈕,則會送出 bot_prompt=aggressive。這時候會跳出一個新的頁面讓使用者來使用者選取是否要加入官方帳號。

這邊提出幾個建議在接受 friendship_status_changed 的時候,需要注意的事項:

  • friendship_status_changed 回傳為 true 的時候,這時候需要透過 https://api.line.me/friendship/v1/status 的 API 再去確認好友狀態的變化。
  • 如果有加入好友的話,建議也可以緊接著進行 account-link 的相關設定。在 web login session 還維持的時候可以快速將使用者的 chatbot 與帳號鏈結在一起。

總結

對於一個新的服務,如何快速的讓使用者能夠註冊與登入是一個大難題。這時候透過 LINE Login 可以幫你解決大多數的問題,並且 LINE Login 在手機上往往可以直接開啟 LINE App 使用者連登入的流程都省略了。馬上就註冊完畢與登入。 使用者也不需要擔心, LINE Login 僅僅提供名字與大頭照作為基本資料( Email 需要申請 ) 。

本篇文章透過一個簡單的 Golang 範例,展示了如何快速導入 LINE Login 到電子商務網站之外。還指引了如何透過 LINE Login 來加入官方帳號的聊天機器人到使用者的 LINE 帳戶。 讓使用者在透過 LINE Login 的同時也馬上了解該服務的 LINE 官方帳號的位置。並且可以提供更多元的服務。

參考

[Golang][LINE][教學] 將你的 chatbot 透過 account link 連接你的服務

(圖片來自: LINE Developer Document: Link user account )

前言

經營有成的電子商務網站,如果想要透過 LINE 官方帳號( OA: Official Account) 與聊天機器人來觸及更多使用者應該要怎麼做呢? 你要如何透過安全又有效的方式來串連網站與 OA 的互動呢?

這篇文章將介紹 LINE account binding,透過 account binding 可以讓你的 chatbot 了解面對的使用者身份。並且透過綁定帳號的方式來提供使用者一制化的體驗。並且透過一個範例來讓你更容易快速建置出來。

範例程式碼

https://github.com/kkdai/line-account-link

如何部署範例程式碼:

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

  • 建立一個 LINE@ 並且打開 MessageAPI 的功能,並且將以下兩個資訊記住:

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

    • LINECORP_PLATFORM_CHANNEL_CHANNELSECRET
    • LINECORP_PLATFORM_CHANNEL_CHANNELTOKEN
    • LINECORP_PLATFORM_CHANNEL_SERVERURL
      • 這個資訊根據你的 heroku app 名稱來決定,假設你的 Heroku app 名稱叫做 test-api-1234 那麼你就該填 https://test-api-1234.herokuapp.com/
  • 記得把 https://test-api-1234.herokuapp.com/callback 加到 LINE chatbot web hook 才能正確地啟動聊天機器人。

範例應用場景

這個範例想要表的是一家電子商務公司有 三個使用者 (ID: 11, 22, 33) 也都有相關的身份資料在該電子商務網站。而這個聊天機器人可以展示如何透過 LINE account binding 來串連你的使用者與聊天機器人。

整個場景都流程分成以下幾個步驟:

  • 使用者加入電子商務的官方帳號 。
  • 在官方帳號選單的聊天機器人視窗中,選擇“帳號綁定” (link)。
  • 連線到該電子商務網站,輸入原本已經有的帳號跟密碼。
  • 確認帳號訊息無誤後,倒回聊天機器人並且進行帳號綁定。

實際跑一個範例

  • 先 Deploy 該範例專案,或是直接加入測試機器人 @yzy8635g (也可以掃描以下 QR Code)
  • 加入帳號後 ,輸入任何字串都是會顯示帳號尚未綁定。你可以連到該商業網站顯示帳號 (list) 或是直接開始綁定帳號 (account link)

  • 按下 “list” 會傳回顯示所有使用者的網址.按下 “link” 則顯示登入頁面開始登入。

  • 到了登入網頁,就輸入該商業網站的帳號跟密碼。 這個範例程式裡面是 11, pw11 (假定使用者叫做 Paul)
  • 登入成功之後,就會收到 chatbot 回報帳號綁定成功。把綁定帳號網頁關閉即可。(要做得更好,可以透過 LIFF 來做 account binding 就可以自動關閉網頁)
  • 回到聊天機器人,這時候帳號就顯示綁定完成。表示 chatbot 能夠將你與商業網站的使用者連接一起。 chatbot 也就已經將使用者 Paul 的帳號綁定。

流程圖與程式碼解釋

根據以上的流程圖,稍微說明一下每個角色代表的意義:

  • User:
    • 就是指的是 LINE 上面的用戶。
  • Provider’s bot server:
    • 這邊指的就是該商業服務的 LINE 官方帳號的聊天機器人伺服器。
  • Provider’s web server:
    • 這個就是該商業服務的網站伺服器,如果是購物網站就是該購物網站的後台伺服器。
  • LINE Platform:
    • 這個就是指 LINE 平台的資料處理系統。

了解每個角色代表的意義之後,我們開始解釋每個流程所代表的意思.通常在 Account Link 發生的時候,商業網站的官方帳號會發送一個「是否要連接你的 LINE 帳號與商業網站?」的請求.當使用者同意之後,才會啟動以下的相關步驟:

  1. 官方帳號的 LINE bot 會對 LINE 平台發送一個該使用者要求 account link 的 token 請求。

  2. 如果請求資料正確, LINE 平台就會回覆一個 token 。

    res, err := bot.IssueLinkToken(userID).Do() 這樣可以透過該使用者帳號直接 issue token

  3. 官方帳號的 LINE bot 透過取得的 token 跟 LINE 平台請求將兩個資料做連接。

  4. LINE 平台會傳回一個網址,讓使用者透過該網址來做資料的連接。

    這邊就傳回 該網站的 /link以這個作為鏈結的網址。

  5. 使用者連線到該網址(這裡通常是透過 LINE bot 直接送出 URL scheme 讓使用者點選導向該網頁).請注意這個網址會是直接連接到商業網站之中。

  6. 顯示該商業網站的登入畫面,讓使用者登入該綱頁網站。

  7. 使用者在商業服務平台輸入了自己的登入資訊。

  8. 商業服務平台透過使用者的帳號資訊產生了一個隨機數 (nonce)。

    雖然說 nonce 為隨機數,其實有產生的規則與限制

    • 使用 secure random number generator
    • 建議透過 base64 encode
  9. 商業服務平台將使用者導向到 LINE 平台的 account-linking 的進入點。

  10. 使用者讀取 account-linking 進去點,並且將商業服務平台的隨機數帶進去。

  11. LINE 平台傳回同一組隨機數與使用者 ID (UID) 到商業服務平台的 webhook 用來作為綁定之用。

  12. LINE bot 這時候收到該隨機數 (nonce) 的認證,透過這個隨機數 (nonce) 將使用者在 LINE 上面的身份與商業服務平台帳號取得綁定。

    也就是最後要將這些資訊傳回給 Server ,作為綁定成功地確認https://access.line.me/dialog/bot/accountLink?linkToken={link token}&nonce={nonce}

  13. 這時候 chatbot 會收到 EventTypeAccountLink 的 event 並且透過結果可以知道該使用者綁定成功。 nonce 也會提供給你作為帳號比對的資訊。

為何要使用 Account Link

透過 account link 可以讓 chatbot 裡面的使用者與原先商業網站的帳號相互的綁定。透過的機制就是一開始 issue link token 並且在登入成功後將 token 帶回到 chatbot 裡面,並且透過產生的 nonce 可以確保雙方資料的無誤與正確性。 整體來說,使用 account link 具有以下的優點:

  • 步驟簡單:透過 IssueLinkToken 與 API call 即可完成整個綁定流程。
  • 安全:透過改使用者申請的 token 才能夠作為 accountLink 的回傳 token ,可以確保手續完整性。

什麼樣的情況會需要使用 Account Link

這個部分將會討論,什麼樣的情況下會需要使用 account link:

  • 已經有大量的使用者族群在原有的商業網站上面
  • chatbot 需要綁定原有的使用者資訊

總結

對於已經有相當量使用者的服務提供商而言,透過 account link 可以讓 chatbot 的使用者與原有服務的帳號資訊綁定,讓使用者有著一致的服務體驗。方法上也相當簡單,希望透過這個範例可以讓開發者更容易了解整個流程與概念。

參考

  • https://developers.line.biz/en/docs/messaging-api/linking-accounts/
  • https://github.com/kkdai/line-account-link

[Golang][LINE][教學] 如何傳送 LINE 專屬的表情符號(emoji)

前言

大家都知道 LINE 有一些自己獨特的表情符號(而非一般的 emoji) ,如果真的想要在 chatbot 中來顯示表情符號其實沒有那麼簡單。剛好發現其實網路上的資源也不多,順便寫一下相關資料分享給大家。

顯示一般的表情符號 (Emoji)

⚽️ 🏀 🏈 ⚾️ 🏐 🏉 🎾

如果要顯示 emoji ,其實他的代碼可以直接複製。這裡有兩種方式可以顯示。

  • 直接將 emoji 複製起來,貼到字串裡面即可 str := 🍆 即可

如果要顯示完整 emoji 列表可以去這裡找

如果要透過 Golang 來顯示,可以透過以下的程式碼:

關於 LINE 自訂的表情符號

首先要先解釋一下, 一般來說如果要在官方帳號(OA) 上面直接發送具有 LINE 特定的表情符號可以透過以下方式。

\uDBC0\uDC84  

這一段代表的就是顯示熊大的表情符號。但是你會發現不論你如何顯示都無法正常顯示。

經過尋找過後,發現以下的 issue 已提醒相關的資料。Python LINE SDK discussion

裡面有提到兩件重要的事情:

  • LINE Emoji 是自定義的,要參考 LINE Emoji document
  • 透過另外一個討論 Java LINE SDK discussion ,會發現 LINE Emoji 需要透過 utf32 來轉換到 utf8 。 (因為 Golang 本身都是透過 utf8 來處理字串)

所以處理方式如下:

  • 透過 LINE Emoji document 來查表,找尋需要的 熊大 Brown 表情 0x100084
  • 由於是 32 位元,前面補零 0x00100084
  • 產生 utf32 decoder
  • 轉換 utf32 成 utf8

那就直接來看程式碼:

參考

[好書分享] 跟TED學說故事,感動全世界

  • 跟TED學說故事,感動全世界 - 好故事是你最強大的人生資產
  • The Storyteller’s Secret
  • 作者:卡曼.蓋洛
  • 原文作者:Carmine Gallo
  • 譯者:許恬寧
  • 出版社:先覺出版
  • 出版日期:2016/07/01

書籍網址: http://moo.im/a/458fuE

前言:

跟著前一篇文章[好書分享] 跟TED學表達,讓世界記住你之後,這一本書相當推薦在讀完前篇文章之後繼續閱讀。也就是說如果說前一本書能讓你打破觀念,開始了解一個好的演講需要的一些要素。那麼這本書就是要讓你好好開始學習講一個好故事,講一個真誠的故事,講一個令人深刻的故事。

內容簡介:

這本書的主軸由二十四篇充滿著故事性的演講(可能不全是 TED) 開始提起,讓你了解每一篇所具有的說故事技巧。

第一部 那些點燃我們內心火焰的說故事大師

裡面先提到故事最重要的一些元素,不是誇張不是精彩,而是夠真實。這邊也不斷的建議我們,許多感動人心能夠連接講者與聽眾的故事往往就是講者自己的故事。這一段引用不少知名人士的演講,從搖滾樂天王史汀,星巴克的創始人到傳教的牧師。大家能了解這些人一站出來就能夠吸引每個聽眾的目光,但是讓感動內心的往往就是他們真實的過往故事,他們如何遇到困境,加以突破最後變成現在令人稱羨英雄的故事。

第二部 那些啟迪我們的說故事大師

第二段就是要提到故事往往要能「夠簡單」,透過故事本身的用字遣詞。這邊提到一個很重要的概念就是,就算你的故事內容與脈絡很好,你還需要不段的修飾故事本身的文字。讓故事說出來的時候,平易近人任何人都能輕鬆地閱讀並且了解。

這邊舉了比爾蓋茲在演講台上直接喝大便過濾的水,來讓大家注意並且打破了所謂「聽眾的安全堡壘」讓故事本身深刻的烙印在聽眾的心理。而哈洛威爾醫生透過比喻的方式來解釋「注意力不足過動症」(ADHD),讓每個聽眾就算沒有任何醫學的背景也能夠快速地了解。

第三部 那些一針見血的說故事大師

第三段開始要教導講者,你要能夠濃縮你的故事。如果你的演講無法改成一句話,一段文字或是三十秒的小故事。你的演講主軸真的需要好好的重新思考。

這邊有提到幾個有趣的例子:特斯拉的馬斯克用了很短的一句話敘述了現在世界上電池的缺點。太空人如何用短短的一個小故事與幾張圖片來讓你了解恐懼。如何透過明信片短短的區域來解釋你的生意點子獲得投資。

第四部 那些激勵人心的說故事大師

激勵人心的說故事大師往往都能夠讓他的故事具有靈魂,讓故事的本身變成演講的主軸。

跨國旅館的老闆透過自己的故事來激勵每一個員工,並且希望員工都能夠尋找自己的故事。因為故事的本身就代表著良好的服務,貼近人並且感動人心。讓每個來訪的顧客都能夠賓至如歸。

失去雙腳的講者敘述著自己原本快樂的生活,經歷了失去雙腳的巨變,如何調整自己並且擁抱全世界。

這些都是故事應該具有的靈魂。

第五部 那些啟動改造時刻的說故事大師

這裡首先都就提到了金恩博士,他如何透過「我有一個夢…」的起頭,來串接所有想法並且形成了跨世代的偉大演講。原本在講稿裡面並沒有那句話的,而這些被認為像是即席加入的幾個文字卻構成了最重要的元素。

這些可能都是不斷練習的結果,大家都聽過一萬個小時。除了不斷練習能帶來的熟練度之外,還能夠帶來敏銳的直覺能了解如何讓故事本身變得不朽經典的小技巧。

說故事大師的拿手絕活:

■告訴別人故事之前,先重新打造你告訴自己的故事。 ■給聽眾能認同的英雄,告訴大家他們克服了什麼困難,以及最後的收穫。 ■簡報至少要有65%是故事。 ■數據與事實雖能說服聽眾,但唯有動人的故事能讓大家起立鼓掌。 ■提供有用的細節,讓故事更豐富。 ■堅守三數法則。 ■皮克斯七步驟,給聽眾可以歡呼加油的對象。

◎特別收錄1:24個故事QRcode即掃即聽! ◎特別收錄2:故事大師的百寶箱、故事力檢測表,三秒鐘立即吸收全菁華!

心得:

這本書除了讓你聽過一次那些偉大的故事本身外,透過頗析故事架構與共同的元素可以讓人快速地了解並且不斷的精進自己的故事。這本書的許多小技巧都相當能夠幫助你思考故事在演講中的比重,重新給予原本可能只是小插曲的故事新的靈魂。

透過這本書的閱讀之後,我重新了解故事對於一段演講的重要。必須得說也由於這樣的原因使得原本看似簡單的故事現在都要好好的思考整個故事架構與內容,務必力求完美。講師在講解的時候其實也大多依照著這本書的架構來教導。

記得第一次剛看完的時候,就決定將自己的演講分成兩段故事來表達。但是卻無法完整抓到故事給予人的連貫感與深刻程度,使得整個演講排練相當的糟糕。也只能說雖然說故事的能力是天生的,但是如何將故事說得好說得深刻說的動人,真的是需要持之以恆的練習。

[好書分享] 跟TED學表達,讓世界記住你

  • 跟TED學表達,讓世界記住你 - 用更有說服力的方式行銷你和你的構想
  • Talk Like TED : The 9 Public Speaking Secrets of the World’s Top Minds
  • 作者:卡曼.蓋洛
  • 原文作者:Carmine Gallo
  • 譯者:羅雅萱、劉怡女
  • 出版社:先覺出版
  • 出版日期:2014/05/29

書籍網址: http://moo.im/a/23bdVW

前言:

最近即將在年底的大活動來講比較軟性的題目。公司提供很好的福利給來分享的講者適當的訓練 ,為了能夠更了解,特地去買了電子書閱讀器 (readmoo),也買了一堆電子書來好好閱讀。

記得曾經聽誰說過『越硬的內容,講起來越軟(代表簡單);而越軟的內容,講起來越硬(代表很難)』,所以開始不斷的閱讀一些如何說出一個好演講的書籍。有兩本其實相當推薦。這是其中一本,另外一本是「跟TED學說故事,感動全世界」。

此外,為何說「越硬的內容越好講?」因為越艱深的內容,最重要的課題是要講的「淺顯易懂」這樣就已經成功了八成,只要在中間再加上一點點笑話,就是一場完美的演講。 但是軟性的演講是需要聽眾 call for action 的,更是因為每一張投影片可能都相當的容易了解。所以要能講到內心深處就格外的困難。要能夠讓聽眾感同身受,並且像是受到佈道般的激動感受。

內容簡介:

這是一本精心挑選了很多傑出的 TED 演講的書籍,並且詳細的解讀了每一個成功的演講背後的原因。

以下幾個是擷取出來的推薦,也是我最喜歡的幾個章節之一。

▍羅賓森爵士如何幽默的談教育,使他的談話成為迄今最受歡迎的TED演說,勝過許多名人? POINT!關鍵的第一步聽起來可能違反我們的直覺──別企圖表現得很幽默!帶有幽默感的敏銳觀察,才是最恰當,也最有效的。

▍比爾‧蓋茲為什麼要把蚊子帶上TED講台,是什麼原因讓他的演講5年後依然被討論? POINT!在演說中加入令聽眾瞠目結舌的橋段,那麼這段教他們難以忘懷的演說就能緊緊抓住他們的注意力,並且在演說結束後仍久久不忘。

▍發現鐵達尼號的深海探險家巴拉德,如何在18分鐘內讓人們重新認識海洋? POINT!告訴聽眾一些他們從來沒聽過的資訊,並且以別出心裁的方式來包裝這些資訊;或針對行之有年的老問題提出新鮮、新奇的解決之道。

心得:

這是一本相當好的書籍,雖然整本書都是以介紹 TED 的成功演講為案例。但是非常清楚地解釋了每一段演講成功的原因,並且有附上相關演講的 QR code 。 雖然之前有一段時間我中午都是邊吃飯邊看 TED ,但是裡面還是有相當多段影片是我沒有看過的。

首先推薦的就是羅賓森爵士這段 TED 史上點擊率最高的演講,真的是相當的幽默風趣。讓每個聽的人都會會心一笑之外,也會認真的思考教育本質的問題。就如同他一直說的,「如果你的演講不有趣,就不會有人聽你說話。」再來我也很推薦比爾蓋茲的思路,首先透過不斷的清楚堆砌故事來深入人心之後。最後透過放蚊子的方式來打破每個人的防禦心,讓故事深刻的打到每個人的心理。

相當推薦這本書可以給以下兩種人:

  • 如果你很喜歡看 TED 的演講影片,但是不知道哪幾篇是最受歡迎的。可以來看看這本分析,會讓你欣賞精彩的演講之外,深刻的了解許多背後的用意。
  • 如果你跟我一樣,有一個機會要講比較軟性的演講。也很推薦你先從這一本看起,因為他會先開始讓你有學習的動機。先從欣賞一場好演講開始。

[Golang][LINE][教學] 如何快速建置一個 LINE Notify 的服務

前言

LINE 在 2017 年其實推出了一個「通知」的服務,名稱為 「LINE Notify」.這個服務跟 LINE Bot 裡面的推送(Push Message) 其實是分開來的,而且服務也是需要另外申請的.

本篇文章將簡單的介紹這個機制運作的方式,並且暨「[Golang][教學] 在 Heroku 建立你自己的 LINE 機器人 (LINE Bot API)」 之後,在寫一個 LINE Notify Template 的服務. 讓各位可以快速部署出自己的 LINE Notify 的服務.

LINE Notify

LINE Notify 的申請頁面 跟 LINE Bot 的不同,建議各位可以先去申請 Github 或是 IFTTT 的服務.

你會發現有一個新的帳號加你為好友,千萬不能封鎖 不然所有的 LINE Notify 都會收不到.

如果你可以正常的串接 Github 或是 IFTTT 的 Line Notify ,我們就可以繼續以下的相關工作.

開發 LINE Notify 服務

講到要如何開發一個 LINE Notify 的服務,主要需要進行以下幾件事情:

  • LINE Notify 的申請頁面 註冊你將要啟動的服務,來取得 Client IDClient Secret
  • 一個靜態網頁來負責開啟 POST 資訊到 LINE Notify 並且讓使用者在 LINE Notify 上面登入帳號與傳送相關資訊
  • 開發一個 API 端口(auth)負責跑 LINE Notify oauth 來讓使用者的 LINE 帳號與 Line Notify 的服務器登陸服務
  • 開發另一個端口(callback)來接收,傳送回來的 token 並且儲存作為之後通知之用
  • 最後有一個發送通知的端口(或是服務器透過資訊變更而啟動) 的端口 (notify) ,負責將要更新的資訊傳送給 LINE Notify 服務器來轉發到 Line Noty 的帳號上

在服務的說明上,可以參考 Line Notify 的官方網頁 或是 Poy Chang 所寫的「實作 Line Notify 通知服務 (1)」 都相當清楚. 但是本篇文章是希望能快速帶領各位完成一個 LINE Notify 的服務,所以接下來會使用我所開發的 LINE notify repo 來介紹.

透過 Line Notify Template 快速建立服務

Line Notify Template Repo: https://github.com/kkdai/linenotify

接下來的文章,將會一個個來解釋該如何透過 LINE Notify Template 來快速進行開發:

申請一個 Line Notify 服務:

記得到這個網址來申請你需要的 LINE Notify 服務,關於網址的部分可以先隨便輸入.稍後服務建立起來後再申請.

建立好服務後,記得將兩個重要資訊抄錄下來 Client IDClient Secret:

透過 Heroku Deploy 快速搭建出已經建立好的 LINE Notify Template

這裡會先假設各位都已經有 Heroku 帳號 ,接下來各位到這個 repo

LINE Notify Template Repo: https://github.com/kkdai/linenotify

點下 「 Deploy to Heroku 」來將這個服務部署到你自己的 Heroku 伺服器(不需要花費)

這時候會需要輸入 App Name 代表你服務的名稱與網址請隨意輸入.但是稍後要記錄起來.

範例裡面我們將輸入 test-linenotify ,區域就沒有差別. (這個名稱是 unique ,請勿跟我一樣 XD )

然後到 Setting Tab 去打開 Reveal Config Vars 加入以下的參數:

  • CallbackURL:
    • 這裡需要輸入你 App 網址,假設你 app 叫做 test-linenotify 那麼網址就會是 https://test-linenotify.herokuapp.com/callback
  • ClientID:
    • 輸入 Client ID 從 Line Notify 註冊頁面所取得的資料
  • ClientSecret:
    • 一樣,輸入 Client Secret 從 Line Notify 註冊頁面取得的資料

回到 Line Notify 服務頁面來修改相關資料:

你需要回到當初設定的服務網址去修改相關網址.依照以下方式來修改:

  • 服務網址:
    • 依照這個範例, https://test-linenotify.herokuapp.com/auth
  • Callback URL:
    • 依照這個範例, https://test-linenotify.herokuapp.com/callback

就這樣.. 全部設定完成.

如何使用 LINE Notify Template 來測試:

根據這個範例,你需要到這個網址 https://test-linenotify.herokuapp.com/auth

你會看到一個按鈕,這個時候你可以按下連接到 Line Notify按鈕 , 他會要求你登入 Line 的服務然後連接到以下的網頁.

這時候建議選擇 「透過 1 對 1 聊天接收通知」,然後就會導到一個成功的網頁.

並且在 Line Notify 會出現以下綁定成功的訊息.

發送測試 LINE Notify 訊息吧

由於這個範例程式不具備資料儲存的功能(他也只會記住前一次登陸的 token ),所以建議連動成功之後馬上就開始測試.

根據這個範例,你可以馬上輸入 https://test-linenotify.herokuapp.com/notify?msg=test1 這個指令是會傳送文字 test1 到你的 Line Notify 去.然後你就會看到以下資料.

未來的工作:

這個範例只是讓各位能夠快速了解 LINE Notify 運作的原理與一個服務需要哪些 API .但是離正式上線還有許多功能要做,如果你要開發一個正式的服務,可能需要以下相關服務.

  • 更詳細的服務登入網頁:
    • 需要一個更清楚的網頁讓使用者知道明瞭,該 LINE Notify 是提供哪些服務.
  • 資料庫來儲存所有的使用者 Token:
    • 要傳送給相關使用者,你需要一個清單來記住所有註冊的使用者 token .
    • 由於 Heroku 並不提供資料庫功能,而這個範例程式也只有存在記憶體中. 也就是隨時會被改調或是因為 Heroku 進行每天六個小時的停機而清除掉.
  • 更好的內容提供:
    • 飯粒提供的內容相當簡單,只是一個 Query String 來傳送資料.正常狀況可能是監控一系列的機器,或是做網路爬蟲等等相關工作.
    • 身為服務提供商,需要定期抓取資料並且決定要不要送給使用者(或是送給哪位使用者)

參考

  • https://notify-bot.line.me/doc/en/
  • https://poychang.github.io/line-notify-1-basic/
  • https://mr117119.wordpress.com/2017/08/15/line-notify-line-%E6%8F%90%E4%BE%9B%E7%9A%84%E5%85%8D%E8%B2%BB%E9%80%9A%E7%9F%A5%E6%9C%8D%E5%8B%99/