企业消息转发服务器,Python构建企业微信自动消息转发服务端

目前有在项目分组,就小组成员中,微信群消息回复较多的情况下,想根据组来转发特定消息,包含文字、图片、语言等。在此只是自己实现仅供参考,可以根据自身需求修改更多功能。

二、代码

2.1 企业微信相关信息

企业ID:corpid

301977fec79ca57c1cee8f3081df1178.png

自建应用appid

自建应用secret

23debeb7029b50ff934b4dadd619d02b.png

2.2 服务端部署 运行环境: python 版本 2.7

git clone https://github.com/redhatxl/wechatmsg.git

nohup python2.7 wechatmsg/wx_msg_server.py &

复制代码

2.3 参考RUL:

2.4 代码

# flask 框架后台

def server_run(self):

app = Flask(__name__)

@app.route('/index', methods=['GET', 'POST'])

def index():

wxcpt = WXBizMsgCrypt(self.sToken, self.sEncodingAESKey, self.sCorpID)

# 获取url验证时微信发送的相关参数

sVerifyMsgSig = request.args.get('msg_signature')

sVerifyTimeStamp = request.args.get('timestamp')

sVerifyNonce = request.args.get('nonce')

sVerifyEchoStr = request.args.get('echostr')

# 验证url

if request.method == 'GET':

ret, sEchoStr = wxcpt.VerifyURL(sVerifyMsgSig, sVerifyTimeStamp, sVerifyNonce, sVerifyEchoStr)

print type(ret)

print type(sEchoStr)

if (ret != 0):

print "ERR: VerifyURL ret:" + str(ret)

sys.exit(1)

return sEchoStr

# 接收客户端消息

if request.method == 'POST':

sReqMsgSig = sVerifyMsgSig

sReqTimeStamp = sVerifyTimeStamp

sReqNonce = sVerifyNonce

sReqData = request.data

print(sReqData)

ret, sMsg = wxcpt.DecryptMsg(sReqData, sReqMsgSig, sReqTimeStamp, sReqNonce)

print ret, sMsg

if (ret != 0):

print "ERR: DecryptMsg ret: " + str(ret)

sys.exit(1)

# 解析发送的内容并打印

xml_tree = ET.fromstring(sMsg)

print('xml_tree is ', xml_tree)

复制代码

消息内容发送

def _send_text_msg(self, content):

data = {

"touser": ('|').join(self.userid.split(',')),

"toparty": ('|').join(self.partid.split(',')),

# "toparty":int(self.partid),

"msgtype": "text",

"agentid": self.agent_id,

"text": {

"content": content

},

"safe": 0

}

try:

response = requests.post(self.send_msg_url.format(self.access_token), json.dumps(data))

self.logoper.info(response.text)

print(response.text)

result_msg = json.loads(response.content)['errmsg']

return result_msg

except Exception as e:

self.logoper.info(e)

复制代码

日志

def create_dir(self):

"""

创建目录

:return: 文件名称

"""

_LOGDIR = os.path.join(os.path.dirname(__file__), self.logdir_name)

_TIME = time.strftime('%Y-%m-%d', time.gmtime()) + '-'

_LOGNAME = _TIME + self.logfile_name

LOGFILENAME = os.path.join(_LOGDIR, _LOGNAME)

if not os.path.exists(_LOGDIR):

os.mkdir(_LOGDIR)

return LOGFILENAME

def create_logger(self, logfilename):

"""

创建logger对象

:param logfilename:

:return: logger对象

"""

logger = logging.getLogger()

logger.setLevel(logging.INFO)

handler = logging.FileHandler(logfilename)

handler.setLevel(logging.INFO)

formater = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

handler.setFormatter(formater)

logger.addHandler(handler)

return logger

复制代码

配置文件

# 定义微信公众号信息

[common]

# 企业微信企业ID

corpid = wxe23xxxxxxxxxxx

# 接收消息 服务器 配置

[recmsg]

Token = mVNAAw3xxxxxxxxxxxxxxxxx

EncodingAESKey = vwbKImxc3WPeE073xxxxxxxxxxxxxxxxxx

# 自建应用信息

[appconfig]

# 自建应用agentid

agentid = 1000002

# 自建应用secret

secret = 6HAGX7Muw36pv5anxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

# 消息接收信息

# 消息接收用户id,如果多个用户用英文','隔开

userid = xuel|yaoy

# 消息接收部门id,如果多个用英文','隔开

partid = 11

[urlconfig]

# 获取应用token的api接口

get_access_token_url = https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={}&corpsecret={}

# 发送消息api接口

send_msg_url = https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={}

# 上传媒体api接口,获取mediaid

upload_media_url = https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token={}&type=image

# 上传高清语音接口

upload_video_url = https://qyapi.weixin.qq.com/cgi-bin/media/get/jssdk?access_token={}&media_id={}

[loginfo]

#日志目录

logdir_name = logdir

#日志文件名称

logfile_name = wechat_server.log

复制代码

三、测试

在企业微信发送消息,可以修改配置文件制定转发到特定的群组,从而避免消息分流。 启用应用API,设置回调地址

7986749796b97ff7d3ba4593c2acee42.png

70082e8717c55d6eb959ced9a395597f.png

测试发送消息

92b76607316fbbac4dbcea286439bf19.png

查看接受消息

1059ca5720cf0b29fb22442c0cd09956.png

四、优化

后期可以配合 数据库 将每次获取的access_token 保存至数据库,待2小时过期后,再重新获取新的。

更多内容转发

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Python发送消息企业微信的联系人,你可以使用微信企业号的API来实现。首先,确保你已经获取到了企业微信的access_token,然后按照以下步骤进行操作: 1. 导入必要的库和模块: ``` import urllib.request import json ``` 2. 设置请求的URL和消息内容: ``` url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN' data = { "touser": "@all", "msgtype": "text", "agentid": AGENT_ID, "text": { "content": "你好,这是一条测试消息。" } } ``` 其中,`ACCESS_TOKEN`是你获取到的企业微信的access_token,`AGENT_ID`是你的企业微信应用的代理ID,`content`是要发送的消息内容。 3. 发送POST请求: ``` req = urllib.request.Request(url) req.add_header('Content-Type', 'application/json') response = urllib.request.urlopen(req, json.dumps(data).encode('utf-8')) result = json.loads(response.read()) ``` 这里使用`urllib.request`库发送POST请求,并将消息内容转换为JSON格式。 4. 处理返回结果: ``` if result['errcode'] == 0: print('消息发送成功') else: print('消息发送失败,错误代码:%d,错误信息:%s' % (result['errcode'], result['errmsg'])) ``` 根据返回结果中的`errcode`判断消息是否发送成功。 请注意,以上代码仅为示例,你需要根据实际情况进行相应的修改,如替换`ACCESS_TOKEN`和`AGENT_ID`为你自己的值,并根据需要修改消息内容。 引用提供了关于Python微信企业号开发回调模式的方法,可以作为参考。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例](https://download.csdn.net/download/weixin_38576392/12872420)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Python3调用微信企业号API发送文本消息代码示例](https://download.csdn.net/download/weixin_38640830/13763849)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [自美智能系统是基于树莓派、Python、HTML5、PHP、微信小程序打造出的一款物联网人工智能系统](https://download.csdn.net/download/m0_73728511/88281260)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值