iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 4
8

用一句話來說明什麼是 Webhook:「Webhook 是讓一個網站能訂閱另一個網站的方法。」為了確保我們對訂閱的理解是一致的,接下來會講什麼是訂閱。

訂閱是事件驅動

訂閱是當某些事情發生的時候,通知者會告訴訂閱者這件事發生了。既然訂閱了,就表示收到事件後訂閱者應該會採取某些行動。

訂閱階段:

通知階段:

下面會用生活中的例子來說明什麼是訂閱。

設定鬧鐘

設定鬧鐘是一種訂閱行為。為什麼你會需要一個鬧鐘呢?因為你可能早上 9 點有事,希望能在早上 8 點起床。以這個例子來說:

  • 訂閱者是你
  • 通知者是鬧鐘
  • 事件是當早上 8 點
  • 你會採取的行動是起床

當然你也許會希望通知者是你的妹妹,可是你不一定有妹妹。

點餐

點餐是一種訂閱行為。首先你到櫃檯跟 NPC 點餐,點完餐之後你可能會取得一個會震動的小物,或者一根旗子,或一張紙,或者什麼都沒有,總之你會待在位置上等,直到 NPC 送餐給你,或者小物開始發出光芒並且震動,然後你帶著震動小物去找 NPC 取餐。

  • 訂閱者是你
  • 通知者是餐廳的 NPC
  • 事件是當餐點作好時
  • 你會採取的行動是取得餐點

你的主管交代你作事

你的主管交代你作事可能隱含著一種訂閱行為。首先你的主管找到你,然後跟你說:「這件事就交給你負責了。」你:「好哦~好哦~」

  • 訂閱者是你的主管
  • 通知者是你
  • 事件是當你作好那件事時
  • 你的主管會採取的行動是安排更多的事情給你

訂閱「只要有心,人人都可以做卡米狗」系列文

訂閱「只要有心,人人都可以做卡米狗」系列文是一種訂閱行為。首先你會到「只要有心,人人都可以做卡米狗」系列文按下「訂閱系列文」。訂閱之後,當我發新文章時,你會在 iT 邦幫忙的網頁右上角收到一個通知。(可是如果你不會時常開著 iT 邦幫忙的網頁,又為什麼要訂閱呢?_?)

  • 訂閱者是你
  • 通知者是我
  • 事件是當我寫好新文章時
  • 你會採取的行動是讀我的新文章

按讚卡米狗 FB 粉絲團

按讚卡米狗 FB 粉絲團是一種訂閱行為。首先你會到卡米狗 FB 粉絲團按下「讚」。當我在粉絲團發表貼文時,你會在 FB 網頁右上角收到一個通知。

  • 訂閱者是你
  • 通知者是我
  • 事件是當我在粉絲團發表貼文時
  • 你會採取的行動是讀我的貼文

如果你不會時常開著 iT 邦幫忙的網頁,那麼就應該訂閱一下卡米狗 FB 粉絲團。

你可能會問:「我為什麼要訂閱?」

為什麼要訂閱

對呀,為什麼要訂閱呢?

訂閱是有效率的雙向溝通方法

使用訂閱可以使你不需要去檢查事件到底發生了沒,而且可以讓你在事件發生的瞬間就立即採取行動。

如果你沒有訂閱鬧鐘

你會睡得不安穩,或者睡過頭。你必須不斷的起床看時鐘(注意,時鐘跟鬧鐘不同),以確保你沒有睡過頭。

如果你事情做完沒跟你主管講

你會比較爽,但是如果你的主管有看這篇文的話,他會知道你在摸魚。訂閱是一種很吃信用的機制,當通知者經常沒有盡通知責任時,訂閱功能就完全失效了,訂閱失效後就要回歸到原始的方法:單向溝通。

單向溝通是沒有效率的溝通方法

假設你去早餐店點個早餐內用桌號3,在你手機滑了兩小時後,發現早餐還沒送來,於是你去問早餐店老闆:「阿我的早餐有做嗎?」老闆回:「有啦~有啦~正在做。」其實根本就忘記做,而且也差不多該吃午餐了。但如果在你手機滑十分鐘時就去跟老闆確認,也許你可以早一點拿到。

假設你是主管,你應該要跟你的員工說事情做好時跟你說一聲,明確表達你想要訂閱你員工,以確保你可以在你員工事情做完時就安排下一件事情。為了確保當通知者不盡通知責任時,你還是可以榨乾他,你要追問一個逾期時間,在時間內沒做完你就會去找他,也就是說交代工作時應該要說兩件事:「你預計什麼時候會做完」「做完的時候叫我」,如果你發現你的員工都沒有主動來找你,而是你去找他,他才跟你說「喔!我剛做好呢!」「喔!我做完忘記跟你講」那肯定就是他在摸魚。

所以不管做什麼事,還是要主動一點才好。

講到這裡,人與人之間的溝通方法,我想大家應該都完全理解。至於網站跟網站之間的溝通方法有很多種,Webhook 使用的是 HTTP 協定。

HTTP 協定

電腦跟電腦在網路上傳遞訊息的方法其實跟郵局送掛號很像。你會作出一張明信片寄出(HTTP Request),明信片會在網路上傳遞,每個經手的郵局、郵差都能看見你寫的內容,收件人必須在收到每個明信片時進行簽收,還要立馬寄一封回信(HTTP Response),最後寄件人會收到回信,就算完成一次交流。

從這張圖來看我們可以知道,你是主動方,網站是被動方。只要你不戳他,他就不會回。一個基本的網站就是這樣,只要你不做任何操作,網頁上的東西就不會變。你可能需要不斷地按下重新整理,確保你看見的畫面是最新的,舉個例:這篇文章的瀏覽量不會主動更新。

HTTP 協定有安全性問題

這樣的溝通方式是不安全的,只要任何一個經手的郵局、郵差是壞人,就可以偽造信件內容。有一種詐騙手法是詐騙集團會寄假的繳費單給你,如果你以為繳費單是真的,你就會去便利商店繳費。在網路上也有類似的詐騙手法。那麼要怎樣才能確保安全(Secure)呢?答案就是使用安全(Secure)的 HTTP 協定。

HTTPS 協定

HTTPS 協定就是安全的 HTTP 協定,跟 HTTP 協定有 87% 像,不同的是它傳遞的不是明信片而是密信片,經手的郵局、郵差無法看懂內容。而且寄件者的簽名有經過認證,可以確認寄件人身分,不用擔心收到造假的信。

今天就講到這裡,明天會講 Line Webhook 實際的運作流程。


上一篇
第三天:作一隻最簡單的 Line 聊天機器人
下一篇
第五天:認識 Line Messaging API Webhook
系列文
只要有心,人人都可以做卡米狗33

尚未有邦友留言

立即登入留言