目錄
- 一、企業微信注冊
-
- 注冊企業微信
- 二、代碼實作
- 總結
本系列文章為參與【Python】CSDN21天學習挑戰賽,成為更好的自己,根據自身的學習進度并記錄自己的學習過程。我也是Python純小白,和大家一起學習,保持熱愛學習的好習慣😁
活動位址:CSDN21天學習挑戰賽
一、企業微信注冊
企業微信注冊
企業微信和公衆号的差別點
企業微信 | 微信公衆号 | |
---|---|---|
功能 | 為企業或組織提供移動辦公平台,幫助企業完善内部管理 | 吸粉引流 |
閱聽人 | 企業、政府、事業機關或其他組織 | 個體工商戶、企業、自媒體、其他組織和政府等 |
消息提示 | 獨立應用,消息顯示在企業微信APP | 微信APP中的訂閱号目錄中 |
消息限制 | 無限制 | 每天可以發送1條群發消息 |
賬号類型 | 企業微信 | 服務号、訂閱号、小程式(包括企業微信) |
注冊企業微信
可以用微信或者企業微信掃碼登入
登入成功後找到應用管理
找到建立應用
logo是必上傳
,logo資源
建立成功後,我們需要拿到三個資訊,
AgentId
和
Secret
,稍後需要用到
還有一個資訊我們需要拿到,點選
我的企業
拿到我們的企業ID,現在我們需要的資訊都全部準備好了
二、代碼實作
發送企業微信消息和發送微信公衆号消息非常相似,想了解可以看看這篇文章
發送微信公衆号消息
發送企業微信消息項目結構
發送微信公衆号消息項目結構
建立
access_token.py
檔案
該檔案主要負責擷取access_token驗證令牌
CORPID需要填寫自己的 企業ID
CORPSECRET需要填寫自己的Secret
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
@Time :2022/8/20 9:00
@Auth :小呆瓜
@File :access_token.py
@IDE :PyCharm
@Description:擷取access_token
"""
import requests
class AccessToken(object):
# 企業ID
CORPID = ""
# 應用密鑰(Secret)
CORPSECRET = ""
def __init__(self, corp_id=CORPID, corp_secret=CORPSECRET) -> None:
"""
構造函數
:param corp_id: 企業ID
:param corp_secret: 應用密鑰
"""
self.corp_id = corp_id
self.corp_secret = corp_secret
def get_access_token(self) -> str:
"""
擷取access_token憑證
:return:str
"""
url = f"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={self.corp_id}&corpsecret={self.corp_secret}"
resp = requests.get(url)
result = resp.json()
if result["errcode"] == 0:
return result["access_token"]
else:
print(result)
建立
send_message.py
檔案
AGENT_ID需要填寫自己的AgentId
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
@Time :2022/8/20 9:00
@Auth :小呆瓜
@File :send_message.py
@IDE :PyCharm
@Description:發送企業微信消息
"""
import json
import requests
from access_token import AccessToken
class SendMessage(object):
# 應用ID(AgentId)
AGENT_ID =
def __init__(self, agent_id=AGENT_ID) -> None:
"""
構造函數
:param agent_id: 應用ID
"""
self.access_token = AccessToken().get_access_token()
self.agent_id = agent_id
def get_send_data(self, msgtype: str, content: str) -> object:
"""
擷取發送消息data
:param msgtype: 消息類型
:param content: 消息内容
:return:
"""
return {
# @all向該企業應用的全部成員發送;指定接收消息的成員,成員ID清單(多個接收者用‘|’分隔,最多支援1000個)
"touser": "@all",
"msgtype": msgtype,
"agentid": self.agent_id,
f"{msgtype}": {
"content": content
}
}
def send_message(self, msgtype: str, content: str) -> None:
"""
發送消息
:param msgtype: 消息類型
:param content: 消息内容
:return: None
"""
url = f"https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={self.access_token}"
json_data = json.dumps(self.get_send_data(msgtype, content))
resp = requests.post(url, data=json_data)
result = resp.json()
if result["errcode"] == 0:
print("消息發送成功")
else:
print(result)
擴充:目前發送markdown消息所支援的文法
标題 (支援1至6級标題,注意#與文字中間要有空格)
# 我是标題一 ## 我是标題二 ### 我是标題三 #### 我是标題四 ##### 我是标題五 ###### 我是标題六
加粗
連結
行内代碼段(暫不支援跨行)
引用
> 引用 > 今天天氣真不錯
字型顔色(隻支援3種内置顔色)
<font color="info">綠色</font> <font color="comment">灰色</font> <font color="warning">橙紅色</font>
最後,建立
main.py
檔案
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
@Time :2022/8/20 9:00
@Auth :小呆瓜
@File :main.py
@IDE :PyCharm
@Description:發送企業微信消息主檔案
"""
from send_message import SendMessage
class Main(object):
def __init__(self) -> None:
"""
構造函數
"""
pass
def main(self) -> None:
sm = SendMessage()
# 具體類型可以查閱官方網站:https://developer.work.weixin.qq.com/document/path/90236
# 代碼支援類型:文本消息(text),文本卡片消息(textcard),圖文消息(news),markdown消息(markdown)
msgtype = "news"
# 目前發送markdown消息所支援的文法
content = None
if msgtype in ('text', 'markdown'):
content = "" \
"# 我是标題一" \
"\n## 我是标題二" \
"\n..." \
"\n###### 我是标題六" \
"" \
"\n\n**我加粗了**" \
"" \
"\n\n[我是一個連結](https://blog.csdn.net/sxdgy_)" \
"" \
"\n\n`我是一個代碼塊`" \
"" \
"\n> 引用" \
"\n> 今天天氣真不錯" \
"" \
"\n\n隻支援三種字型顔色" \
"\n<font color='info'>綠色</font>" \
"\n<font color='comment'>灰色</font>" \
"\n<font color='warning'>橙紅色</font>"
elif msgtype == 'textcard':
content = {
"title": "領獎通知",
"description": "<div class=\"gray\">2022年8月20日</div> <div class=\"normal\">恭喜你抽中iPhone 14一台,領獎碼:0907</div><div class=\"highlight\">請于2022年9月15日前聯系行政同僚領取</div>",
"url": "https://blog.csdn.net/sxdgy_",
"btntxt": "詳情"
}
elif msgtype == 'news':
# 支援1到8條圖文
content = [
{
"title": "您有一隻小貓咪待領養",
"description": "不考慮考慮收留我嘛",
"url": "https://blog.csdn.net/sxdgy_",
"picurl": "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fc-ssl.duitang.com%2Fuploads%2Fitem%2F202003%2F06%2F20200306224349_okpsu.jpg&refer=http%3A%2F%2Fc-ssl.duitang.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1663512314&t=c8478cc6667e1b3cadd16920d5865ae2",
},
{
"title": "您有一隻小狗待領養",
"description": "不考慮考慮收留我嘛",
"url": "https://blog.csdn.net/sxdgy_",
"picurl": "https://img1.baidu.com/it/u=2436114901,3494491281&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500",
},
{
"title": "您有一隻小熊待領養",
"description": "不考慮考慮收留我嘛",
"url": "https://blog.csdn.net/sxdgy_",
"picurl": "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg.alicdn.com%2Fimgextra%2Fi3%2F64428309%2FTB2O7ZWaxTI8KJjSspiXXbM4FXa_%21%2164428309-0-weitao.jpg&refer=http%3A%2F%2Fimg.alicdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1663544691&t=1778b648d01022f2cc1917532c5be6f3",
}
]
else:
print('消息類型錯誤')
sm.send_message(msgtype=msgtype, content=content)
if __name__ == '__main__':
main = Main()
main.main()
運作
main.py
控制台列印成功,就接收到消息了
文本消息(text)
markdown消息
文本卡片消息(textcard)
圖文消息(news)
我隻寫了幾種基本的:文本消息(text),文本卡片消息(textcard),圖文消息(news),markdown消息(markdown),還有其他類型消息,想了解可以前往官方文檔-發送應用消息
總結
微信公衆号和企業微信對接起來非常相似,是以會了一個再對接另外一個就非常簡單了,當然,這還并沒有對接我們自己的伺服器,隻是調用平台的接口而已,對接自己的伺服器稍微有點複雜,但一步一步來,總是沒問題的。
簡單發送企業微信消息功能就到這裡了,活動即将結束了,最後一篇文章會展示下21天的學習成果,實作一個小項目,每天定時發送天氣預報到郵箱/微信公衆号/企業微信,感謝大家支援!