API 與 Webhook,其實并沒有那么難懂

API 和 Webhook 都允許不同的軟件系統同步和共享信息,隨著軟件應用程序變得越來越相互關聯,開發人員必須了解這兩種共享數據方式之間的區別,并選擇最能滿足手頭任務需求的工具。

API 與 Webhook

有關API和Webhook的概念、區別,互聯網上已經有不少解釋,本文就不再作過多贅述,僅以兩個簡單的例子描述其原理,供讀者與用戶參考:

API采用的是“拉”數據的方式。假設:項目A需要調用項目B的數據,則B要開放一個接口,每當A需要數據的時候,就向B發送請求,通過這個接口獲得數據。這個接口就是API;

但麻煩也因此產生了:每當A需要調用數據的時候,都需要發送一遍請求,效率較低;并且A并不知道B什么時候更新數據,無法做到數據的實時同步。

這時候,Webhook的作用就體現出來了。

Webhook“人如其名”,采用的是“鉤(hook)”數據的方式。同樣是項目A需要項目B的數據,Webhook的方式是需要A提供一個url給B,每當B更新數據時,可以通過Webhook及時將數據傳遞給A。

美洽如何使用 Webhook

在了解了API與Webhook的作用后,本文將重點介紹美洽是如何使用Webhook的。

正如前文所述,Webhook的特點在于:以事件驅動,可以在發生數據變化時及時回傳數據。因此,美洽將Webhook應用在軟件工作臺的對話、顧客、工單數據等模塊。

目前,美洽支持在工作臺手動或者自動觸發了下列事件之后,主動通知客戶的服務器地址,并把相關信息一并返回給客戶,以實現實時同步數據,但需要客戶按要求準備服務器地址,并完成簽名校驗方可實現:

動作

業務對象

觸發事件

結束對話(conversation.closed)

Conversation

手動或自動結束對話

更新對話(conversation.updated)

Conversation

客服修改對話小結

創建顧客(client.created)

Client

創建顧客、訪客轉換為顧客

更新顧客(client.updated)

Client

在工作臺更新顧客參數

刪除顧客(client.deleted)

Client

客戶在【顧客】刪除顧客

簽名校驗的具體流程如下:

  1. 讀取 HTTP 請求的 Body,將其轉換為字符串 body_str;

  2. 將 body_str 和 secret 拼接成需要加密的字符串 encrypted_str,body_str 在前, secret 在后;

  3. 對 encrypted_str 進行 SHA1 加密得到 signature_str;

  4. 將 signature_str 和 HTTP Header 中的 Meiqia-Signature的值進行比對。

參數樣例如下:

POST /api/meiqia/notify HTTP/1.1 Host: 127.0.0.1:5005 User-Agent: Go-http-client/1.1 Content-Length: 3140 Content-Type: application/json; charset=utf-8 Meiqia-Sign: 44cb7f1e544d8830ab0e1feb959b94b3e02eb7e9 Accept-Encoding: gzip  {      "id": "sub_09e4bee581ffbcd347fcf634e0f99df8_1632648830",   //美洽定義的通知唯一標識  "event": "conversation.updated",                           //主題  "enterprise_token": "09e4bee581ffbcd347fcf634e0f99df8",    //美洽定義的企業 Token  "created_at": 1632648830,                                  //通知的創建時間   "conversation": {                                          //主題的業務對象         "enterprise_id": 97631,                 "dev_client_id": null,                  "page_from_url": "",                  "search_engine": ""              }}

如果配置成功,則返回狀態碼如下:

狀態碼

描述

200

成功,美洽將訂閱的主題成功推送到 Webhook URL

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP