Node.JS呼叫企業微信API:自建應用的回撥事件

Roy155發表於2020-09-03

實現環境:

白碼低程式碼平臺(該平臺提供企業微信API,可直接呼叫,減少前期配置除錯工作)

平臺語言:

使用node.js開發

準備工作:

準備一個企業微信管理員賬號

  • 企業微信官方API: https://work.weixin.qq.com/api/doc/90000/90135/90237

  • 白碼使用的API庫:

實現步驟:

1、選擇企業微信回撥介面模板建立webhook,並將 webhook路徑複製。

2、開啟企業微信後臺,在自建應用詳情頁,點選“接收訊息”的“ 設定API接收”按鈕,進入配置頁面。將複製的webhook路徑復貼上到url中,按要求填寫 Token(可由企業任意填寫,用於生成簽名。)及 EncodingAESKey(用於訊息體的加密,是AES金鑰的Base64編碼。),加密說明: https://work.weixin.qq.com/api/doc/90000/90135/90238

3、在客戶聯絡的“客戶>api>接收事件伺服器”中設定相同內容(三個引數保持一致)。

4、在白碼平臺 配置webhook的引數:corpid(我的企業->企業id)、corpsecret(自建應用secret)、token、aesKey(即EncodingAESKey)

5、回撥程式碼

async function hook($req, $resp, $modules = modules) {
 
    //get 請求用於驗證有效性
    if ($req.method == "GET") {
        /**
         * 企業收到訊息後,需要作如下處理:
         * 1、對msg_signature進行校驗
         * 2、解密Encrypt,得到明文的訊息結構體(訊息結構體後面章節會詳說)
         * 3、如果需要被動回覆訊息,構造被動響應包
         * 4、正確響應本次請求
         * 以上1~2步驟可以直接使用解密函式一步到位。
         * 3步驟其實包含加密被動回覆訊息、生成新簽名、構造被動響應包三個步驟,可以直接使用加密函式一步到位。
         */
        $resp.body = await modules.wxworkApi.getVerifyMsg($req);//處理已封裝,可直接呼叫
 
} else if ($req.method == "POST") {
 
        //無法保證在五秒內處理完成,先回復(企業微信伺服器在五秒內收不到響應會斷掉連線)
        $resp.body = "success";
 
        //處理
        let handle = async () => {
            //將資料轉換成json
            let data = await modules.wxworkApi.getMsgData($req);
 
            if (data.Event == "change_contact" && data.ChangeType == "create_party") { /**新增部門 */
 
                //TODO 處理新增部門事件
 
            } else if (data.Event == "change_contact" && data.ChangeType == "update_party") {/**修改部門 */
 
                //TODO 處理修改部門事件
 
            } else if (data.Event == "change_contact" && data.ChangeType == "delete_party") { /**刪除部門 */
 
                //TODO 處理刪除部門事件
 
            } else if (data.Event == "change_contact" && data.ChangeType == "create_user") { /**新增成員 */
 
                //TODO 處理新增成員事件
 
            } else if (data.Event == "change_contact" && data.ChangeType == "update_user") {/**修改成員 */
 
                //TODO 處理修改成員事件
 
            } else if (data.Event == "change_contact" && data.ChangeType == "delete_user") { /**刪除成員 */
 
                //TODO 處理刪除成員事件
 
            } else if (data.Event == "change_external_contact" && data.ChangeType == "add_external_contact") {/**新增客戶事件*/
 
                //TODO 處理新增外部聯絡人事件
 
            } else if (data.Event == "change_external_contact" && data.ChangeType == "edit_external_contact") {/**編輯客戶事件(標籤等資訊) */
 
                //TODO 處理編輯外部聯絡人備註標籤資訊事件
 
            } else if (data.Event == "change_external_contact" && data.ChangeType == "del_external_contact") { /**刪除客戶事件*/
 
                //TODO 處理刪除外部聯絡人事件
 
            }
            handle()
        }
    }


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69981626/viewspace-2716889/,如需轉載,請註明出處,否則將追究法律責任。

相關文章