創建好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的動作囉。
參考資料: