背景
我有時候想搗鼓個工具用。起初是爲了讓我及時掌握一些信息,想做一個消息推送功能。但是由於功能簡單,不想單獨開發個手機 APP。於是就想着能否直接把消息推送到個人微信上。
面臨的問題
以前有 web 版的個人微信,有些人就基於 web 版的個人微信接口做了一個開發套件。但是現在 web 版只有少數一些微信號能夠登錄,我就登錄不了。
另一種方式是申請公衆號,使用公衆號的消息推送。但是公衆號主要是對關注者的,只用來給我自己推送消息不太合適。而如果在公衆號上增加一些其他功能,等於是把功能開放給所有關注的人了,沒什麼必要。
後來我才知道公衆號的消息推送有次數限制,不過對於個人使用已經足夠了。
最終採取的方案是通過企業微信把消息推送到個人微信。
實現後的消息流向
個人微信 -> 企業微信 -> 個人服務器
個人微信 <- 企業微信 <- 個人服務器
實現步驟
- 在企業微信手機端上創建企業(不會覈實真實企業)
- 在企業微信web端管理頁面通過個人微信掃碼綁定企業的微信插件
- 在web端管理頁面上創建應用
- 在個人服務器上啓動服務
- web端管理頁面設置應用接收信息的 API 地址
- 在個人微信上收發消息
1. 在企業微信上創建企業
以手機企業微信爲例,菜單依次如下:
我 | 設置 | 管理企業 | 全新創建企業 | 企業
- 填寫企業名稱
- 行業類型根據需要選擇
- 員工規模選擇1-50人
- 真實姓名填寫自己的姓名
點擊創建就能創建成功了。
2. 綁定插件
上一步創建企業後,會自動將當前帳號切換到這個企業(之後可以來回切換)。
電腦瀏覽器訪問:
https://work.weixin.qq.com/wework_admin/frame#profile/wxPlugin
在切換到新創建的企業後,用企業微信的掃碼登錄。
登錄後會自動跳轉到【微信插件】功能頁。可以看到下圖那樣的頁面。
用個人微信掃【邀請關注】一欄的二維碼。關注後,個人微信會綁定該企業。如果企業微信加入了多個企業(如正在任職的企業),不用擔心會綁定到這些企業上。
3. 創建應用
電腦瀏覽器訪問:
https://work.weixin.qq.com/wework_admin/frame#apps
進入應用管理模塊。
依次訪問:
應用 | 自建 | 創建應用
如下圖:
填寫頁面要求的信息,記得在可見範圍裏把自己選上。
創建成功後,進入應用頁面可以看到以下信息:
- AgentId
- Secret
- 功能 | 接收消息 | 設置API接收
其中標記 2 的 Secret 是企業的密碼。在請求企業微信接口的時候,要使用企業 ID 和應用密碼獲取 Token。
接着進入應用頁面裏標記 3 的【設置API接收】。
注意這裏的 Token 僅用於計算簽名,和請求企業微信接口時用於驗證身份的 Token 不是同一個,因此隨機獲取就行。
URL 按以下格式填寫:
http://IP:端口/qiye-wechat/agents/應用的AgentId
這裏的 IP 和端口設置爲個人服務器的 IP,以及即將在下一步啓動服務時開放的端口。
Token 和 EncodingAESKey 隨機獲取或者自己填都行。
填完之後先不點保存,等到下一步【啓動服務】執行完後再保存。因爲保存的時候。企業微信會向上面的 URL 發送一個請求驗證。
4. 啓動服務
登錄個人服務器,下載下面這個項目:
https://github.com/schaepher/noty
進入項目文件夾,複製一份 config.json.example 到 config.json。初始內容爲:
{
"addr": "127.0.0.1:55556",
"corp_id": "",
"agents": [
{
"id": 1000002,
"secret": "",
"token": "",
"encoding_aes_key": "",
"type": "echo"
}
]
}
corp_id 是企業的 ID。通過以下鏈接頁面底部獲取:
https://work.weixin.qq.com/wework_admin/frame#profile
在 agents 裏面,填寫剛剛創建的應用的信息。其中 secret 是通過應用界面的 Secret 一欄進入獲取的。也就是下圖的標記 2。
type 是 agent 類型,與企業微信無關,與本項目 qiyewechat 文件夾裏 agent.go 的 AgentFactory 有關。默認爲 echo,作用是個人微信發什麼,服務器就返回什麼。
接下來是編譯和運行。
go build
./noty
5. 配置企業微信
回到剛纔的【設置API接收】界面,點擊保存。此時企業微信會發一條驗證信息到服務器,如果通過,就能成功保存。
保存成功後,在這個頁面下方的【企業可信IP】卡片裏選擇配置,將剛剛填入到 URL 的服務器 IP 添加進去。這樣之後服務器才能主動調用企業微信的 API。
6. 個人微信收發消息
在個人微信的【我的企業及企業聯繫人】分組中,找到企業。進入後可以看到應用,發送消息即可。
↓
↓