[WeChatBot] Senparc.Weixin.Work 與 開啟Wechat接收API功能

創建好wechat 程序之後,開始需要撰寫我們的webApi Controller 。

看著微信開發的文檔實在是母颯颯,因此很希望會有類似像LineBotSDK 安裝套件,來加速我們的生產速度。

最終找到了一個 Senparc.Weixin.Work ,他撰寫了許多不同版本的微信套件(包含公眾號、企業微信)

也將公開資源放在gitHub上,讓大家可以自行查閱。

參考文件會附上此連結。


 

首先,先來想想我們的需求。我們希望微信就像機器人一樣,當我們pushMessage給他時,他會根據我們自訂的規則去回覆。

因此,我們需要的是接收與回應的功能。


開啟接收與回應功能

起初申請好的企業微信並沒有自動開啟此功能,因此我們必須自行去打開他。

根據開發文件中的指示,我們會看到以下圖片

開發文件:https://work.weixin.qq.com/api/doc#12977

但我碰到的困難卻是我根本找部到哪邊有企業應用,因此還特別問了微信客服,

原來是在我們創建完程序後,下方有個接收消息,需要點選啟用API接收


此為開發文檔會描述的

  • URL是企业后台接收企业微信推送请求的访问协议和地址,支持http或https协议。
  • Token可由企业任意填写,用于生成签名。
  • EncodingAESKey用于消息体的加密,是AES密钥的Base64编码。

验证URL有效性

当点击“保存”提交以上信息时,企业微信会发送一条验证消息到填写的URL,发送方法为GET
企业的接收消息服务器接收到验证请求后,需要作出正确的响应才能通过URL验证。

企业在获取请求时需要做Urldecode处理否则会验证不成功
你可以访问接口调试工具进行调试,依次选择 建立连接 > 接收消息。

OK,看完他寫的後就覺得天哪~~好麻煩喔,不像LINE只要webHook有準確接收到就可以執行了。

因此就在查到底要怎麼讓他接收到,還要解密。

透過Senparc.Weixin.Work 所提供的Signature.VerifyURL讓我們解密後回傳

[HttpGet]
 public HttpResponseMessage Get(string echostr, string msg_signature, string timestamp, string nonce)
 {
      string token = "2";
      string encodingAESKey = "wYtXXXX6";
      string corpId = "wwa70a03";
      string corpSecret = "3yjph-wuo";

      string r_echostr = Signature.VerifyURL(token, encodingAESKey, corpId, msg_signature, timestamp, nonce, echostr);
     
      var response = Request.CreateResponse(HttpStatusCode.OK);
      response.Content = new StringContent(r_echostr, Encoding.UTF8);
      return response;
  }

若有解密成功,則上方的接收消息會讓你保存起來。

但我在一開始有碰到下面這個問題,因為他老是跟我說echoStr 失敗,我利用了錯誤調試去試試看

一樣,有問題。後來才發現 他回傳時多了   " "  ,文件上有說不可以有引號等規定

保存成功後,就開啟了接收API的動作囉。


參考資料:

https://github.com/JeffreySu/WeiXinMPSDK/tree/master/src/Senparc.Weixin.Work/Senparc.Weixin.Work.Test