前言
之前一篇文章提到了使用wechatpy
庫來實現企業微信應用登入:Django + Taro 前後端分離專案實現企業微信登入
其實這個庫可以實現的功能非常多,基本微信開發涉及到的功能都能實現。
本文介紹一個很常用的場景:實時推送資訊到企業微信群裡。
安裝
首先安裝wechatpy庫
pip install wechatpy
如果執行的時候提示需要安裝其他庫(比如加解密相關的)那就按照提示安裝,這裡不囉嗦了哈
建立企業微信應用
首先去企業微信後臺建立一個應用,把應用編號(app_id)記錄下來
順便去後臺把企業編號(corp_id)和密匙(secret)也記錄下來
開始程式碼了
沒啥別的,開始寫程式碼
建立應用物件
直接上程式碼
from wechatpy.work import WeChatClient
from wechatpy.work.client.api import WeChatAgent
client = WeChatClient('corp_id', 'secret')
agent: WeChatAgent = client.agent.get('app_id')
這裡面要填的幾個ID都是上面提到的
有了這個 agent
物件就可以操作這個企業微信應用了~
建立聊天物件
要發資訊,首先得有個聊天物件,這不,我們來建立一個
from wechatpy.work.client.api import WeChatAppChat
chat = WeChatAppChat(client=client)
新建群
前面說到要發資訊到群裡,那還得建一個群
CHAT_ID = 'test'
result = chat.create(chat_id=CHAT_ID, name='群里名稱', owner='群主ID',
user_list=['群主ID', '群員ID1', '群員ID2', '群員ID3'])
就是這樣,簡單易懂,建群的同時在 user_list
引數指定要邀請的群員ID
(這些群主ID、群員ID請自行在企業微信後臺查詢,就是成員的ID)
封裝一下常用操作
傳送文字資訊
def send_text(content):
print(chat.send_text(CHAT_ID, content))
就是簡單的傳送文字資訊,效果如下:
傳送文字卡片
def send_text_card(title, description, url, btn_text):
print(chat.send(CHAT_ID, 'textcard',
title=title,
description=description,
url=url,
btntxt=btn_text))
這裡我使用了官方的例子
send_text_card('中秋節禮品領取',
'<div class=\"gray\">2016年9月26日</div> <div class=\"normal\"> 恭喜你抽中iPhone 7一臺,領獎碼:520258</div><div class=\"highlight\">請於2016年10月10日前聯絡行 政同事領取</div>',
'https://work.weixin.qq.com/', '謹防上當')
效果如下:
傳送圖片
def send_image(image_file):
media = WeChatMedia(client)
with open(image_file, 'rb') as f:
result = media.upload('image', f)
print(result)
if 'media_id' in result:
print(chat.send(CHAT_ID, 'image', media_id=result['media_id']))
很簡單,引數傳入圖片路徑就行
效果如下
傳送Markdown格式內容
這個我測試了發現支援的markdown格式很有限,不要抱太大期望
def send_markdown(md_file):
with open(md_file, 'r', encoding='utf-8') as f:
print(chat.send(CHAT_ID, 'markdown', content=f.read()))
隨便找了一段來發,效果如下
可以看到連markdown的表格都不支援……
群聊重新命名
沒啥好說的
def rename_chat(new_name):
print(chat.update(CHAT_ID, name=new_name))
send_text(f'群聊名稱已修改為:{new_name}')
邀請使用者
def invite(user_id):
print(chat.update(CHAT_ID, add_user_list=[user_id]))
send_text(f'邀請使用者:{user_id}')
OK
OK,寫完了,就是這樣,很簡單
使用到企業微信推送的場景還是比較多的,比如在Sentry監控里加入一個webhook,監控到專案報錯就把報錯資訊推送到群裡,方便隨時掌握專案報錯資訊~
我們目前的應用場景還有一個是推送一些報表到群裡,可以看到這些表格都是圖片格式(沒辦法,誰叫企業微信不支援完整的markdown格式……)
效果如下
對了,關於用Python生成表格圖片的,我下次再寫(水)一篇,溜了~