Python接入企業微信 - 推送信息到內部群里


前言

之前一篇文章提到了使用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生成表格圖片的,我下次再寫(水)一篇,溜了~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM