本專案需要您的幫助!
import (
"github.com/xen0n/go-workwx/v2" // package workwx
)
A Work Weixin (aka Wechat Work) client SDK for Golang, that happens to be battle-tested and pretty serious about its types.
In production since late 2018, pushing all kinds of notifications and alerts in at least 2 of Qiniu's internal systems.
一個Golang 企業微信客戶端SDK;碰巧在生產環境試煉過,還對類型很嚴肅。
自2018 年底以來,在七牛至少2 個內部系統運作至今,推播各種通知、警告。
English translation TODO for now, as the service covered here is not available outside of China (AFAIK).
Warning
本庫的v2 版本仍可能發生不相容的API 變更,例如欄位名稱、方法名稱調整等等,請注意。在我們處理完成所有已知的邊邊角角之前,不會有v2 版本的tag。
如果您依賴本庫,請在v2 版本的追蹤工單回覆或作出表情反應,以表明態度!作者現在完全以業餘時間維護本項目了,非常需要您的回饋。
工作上需要用Go 實作一個簡單的訊息推送,想著找個開源函式庫算了,然而現有唯一的開源企業微信Golang SDK 程式碼品質不佳。只好自己寫一個。
Update : 自從這個函式庫寫出來,已經過了很久;現在(2019.08)已經有三、四個同類專案了。 不過看了看這些“競品”,發現自己這個庫的類型設計、公開接口、access token 處理等方面還不賴。 為什麼人們總是喜歡寫死請求Host
、用全域量、為拆包而拆包甚至不惜公開內部方法呢?
本函式庫的v2.x 分支最低支援到Go 的上一個穩定版本,目前為go1.19。 如果您需要搭配更低版本的Go 使用,請移步v1.x 版本,那邊的程式碼仍然最低支援到go1.17。
CI 會在Go 的當前穩定版本、上一個穩定版本上跑測試,只有測試全部通過才可能合併PR。
注意:由於Go 上游的持續發展,我們需要能夠確保相對低成本地追上節奏。 如果go.mod
指定Go 版本相對較低,以至於會阻礙本專案本身的功能迭代或重構了,我們不會特別考慮鎖定Go 版本的下游用戶而放緩十分必要的升級。 如果您確實仍然有此類需求,請提issue 溝通。
Host
,用於自己攔一層網關、臨時調試等等奇葩需求http.Client
WorkwxApp
對象,然後直接用lowlevel
包暴露裸的API 接口,但很可能不做UserInfo
、 Recipient
),以鼓勵idiomatic Go 風格panic
。現存的少數一些情況都是要修掉的。workwxctl
命令列小工具幫助調試詳情請看godoc 文檔,也提供Examples 小段程式碼可以參考。
Markdown 等類型訊息目前不支援作為保密訊息發送,強行發送會報錯誤。 那麼為何發送訊息的方法還全部帶著isSafe
參數呢?
一方面,企業微信服務方完全可能在未來支援更多訊息類型的保密發送,到時候不希望客戶端程式碼重新編譯; 另一方面,反正回應會報錯,你也不會留著這種邏輯。因此不改了。