基於企業微信的群機器人制作
隨着企業微信的普及,越來越多的公司、單位用上了企業微信,自從用了企業微信確實辦(jia)公(ban)效(shi)率(jian)高(chang)。不得不說企業微信是一個好產品,比如今天要談的群機器人就可以幫我們完成一些重復繁瑣的提醒工作。話不多說先來看一個使用場景吧!
應用場景:定時提醒打卡
大家都知道學習強國是一個很棒的學習平台,上面的學習資源應有盡有,而且全部免費。我們每個人都應該好好學習,但有的時候忙起來難免會忘記打開APP。作為小組長自然應該不斷地提醒組員,但提醒多了自己也覺得枯燥、惹人煩。這就非常適合用群機器人來做這個事啦。
步驟1:群機器人配置
1.添加群機器人

2.群機器人工作原理
群機器人可以簡單的理解為一個“智能鬧鍾”,你可以定時定點地觸發它,從而讓它為你完成一些重復的群提醒工作。如何觸發群機器人為你工作呢?我們要先了解以下幾個概念。
(1)Webhook地址
Webhook地址可以理解為是每一個群機器人的"網址"或"電話號碼",每個機器人的Webhook地址都是唯一的,有了Webhook地址,才能找到群機器人,並觸發群機器人為你工作;成功添加群機器人后,將鼠標移動到群機器人上,在彈出對話框中可以看到Webhook地址信息。

(2)消息類型和數據格式
知道了群機器人的“通訊地址”,要想觸發群機器人,還需要給機器人發送提醒的消息。根據官方文檔說明發送的消息數據是json格式。
{
"msgtype": "text",
"text": {
"content": "同志們,今天你學習強國了嗎?",
"mentioned_list":["wangqing","@all"],
"mentioned_mobile_list":["13800001111","@all"]
}
}
參數說明:
| 參數 | 是否必填 | 說明 |
|---|---|---|
| msgtype | 是 | 消息類型,此時固定為text |
| content | 是 | 文本內容,最長不超過2048個字節,必須是utf8編碼 |
| mentioned_list | 否 | userid的列表,提醒群中的指定成員(@某個成員),@all表示提醒所有人 |
| mentioned_mobile_list | 否 | 手機號列表,提醒手機號對應的群成員(@某個成員),@all表示提醒所有人 |
步驟2:用Python觸發群機器人
利用Python語言的requests庫,就可以輕松構造觸發機器人發消息的網絡請求。核心代碼如下:
import requests
url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=" #這里就是群機器人的Webhook地址
headers = {"Content-Type":"application/json"} #http數據頭,類型為json
data = {
"msgtype": "text",
"text": {
"content": "學習強國打卡啦", #讓群機器人發送的消息內容。
"mentioned_list":["@all",], # @全體成員
}
}
r = requests.post(url,headers=headers,json=data) # 利用requests庫發送post請求
運行Python腳本效果如下:

如果不會寫代碼,關注文末公眾號字節雜談二維碼,回復"群機器人",即可下載代碼,更換Webhook地址,按照步驟三上傳騰訊雲部署就可以愉快的使用啦。
步驟3:將觸發程序部署到騰訊雲函數
如果每次都是自己手動運行代碼觸發提醒也是比較累的,如何實現定時定點運行腳本,觸發群機器人呢?其實方法有很多,比如利用python加一個定時任務等,但是這樣你自己的電腦要24小時運行着,顯然不是最優方案。個人嘗試下來,比較方便的做法是把腳本部署到騰訊雲的雲函數服務中,從此群提醒自動化。(注意:雲函數的免費額度基本夠用)
1.注冊騰訊雲賬號,登錄后添加雲函數
(1)百度搜索“騰訊雲”——點擊進入官網——注冊——登錄——點擊右上角控制台,即可

(2)添加雲函數服務

2.封裝成main_handler函數
由於騰訊雲函數默認調用的函數名為``,我們需要將之前的核心python代碼封裝成該函數名的函數,保持文件名:index.py
import requests
def main_handler(event, context):
url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=" #這需要替換成你自己的Webhook地址
headers = {"Content-Type":"application/json"} #http數據頭,類型為json
data = {
"msgtype": "text",
"text": {
"content": "今天你學習強國了嗎?", #讓群機器人發送的消息內容。
"mentioned_list":["@all",], # @全體成員
}
}
r = requests.post(url,headers=headers,json=data) # 利用requests庫發送post請求
3.上傳python文件


4.設置觸發時間
單擊函數名,可以修改雲函數的相關配置,

選擇觸發管理—創建觸發器。

可以設置自定義觸發周期

簡單解釋上圖中Cron表達式0 0 9,12,16 * * * *:
- 共有7位組成,用空格間隔,
*表示所有值。在“日”字段中,* 表示每天。

寫在最后
群機器人的群發內容,可以自己建立一個List或數據庫表,隨機讀取更有意思;- 騰訊雲雲函數的每月免費額度完全夠用,每月免費調用100萬次哦;
- 如果不會寫代碼,關注下方公眾號字節雜談二維碼,回復"群機器人",即可下載代碼,更換
Webhook地址即可上傳騰訊雲部署啦。

