在個人微信上與自搭服務端交互

背景

我有時候想搗鼓個工具用。起初是爲了讓我及時掌握一些信息,想做一個消息推送功能。但是由於功能簡單,不想單獨開發個手機 APP。於是就想着能否直接把消息推送到個人微信上。

面臨的問題

以前有 web 版的個人微信,有些人就基於 web 版的個人微信接口做了一個開發套件。但是現在 web 版只有少數一些微信號能夠登錄,我就登錄不了。

另一種方式是申請公衆號,使用公衆號的消息推送。但是公衆號主要是對關注者的,只用來給我自己推送消息不太合適。而如果在公衆號上增加一些其他功能,等於是把功能開放給所有關注的人了,沒什麼必要。

後來我才知道公衆號的消息推送有次數限制,不過對於個人使用已經足夠了。

最終採取的方案是通過企業微信把消息推送到個人微信。

實現後的消息流向

個人微信 -> 企業微信 -> 個人服務器
個人微信 <- 企業微信 <- 個人服務器

實現步驟

  1. 在企業微信手機端上創建企業(不會覈實真實企業)
  2. 在企業微信web端管理頁面通過個人微信掃碼綁定企業的微信插件
  3. 在web端管理頁面上創建應用
  4. 在個人服務器上啓動服務
  5. web端管理頁面設置應用接收信息的 API 地址
  6. 在個人微信上收發消息

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. 個人微信收發消息

在個人微信的【我的企業及企業聯繫人】分組中,找到企業。進入後可以看到應用,發送消息即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章