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.updated) |
客服修改對話小結 |
|
創建顧客(client.created) |
創建顧客、訪客轉換為顧客 |
|
更新顧客(client.updated) |
在工作臺更新顧客參數 |
|
刪除顧客(client.deleted) |
客戶在【顧客】刪除顧客 |
簽名校驗的具體流程如下:
讀取 HTTP 請求的 Body,將其轉換為字符串 body_str;
將 body_str 和 secret 拼接成需要加密的字符串 encrypted_str,body_str 在前, secret 在后;
對 encrypted_str 進行 SHA1 加密得到 signature_str;
將 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 |
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















