企业微信的使用方法

前言

目前能够方便提供推送的工具不多,而企业微信在这块做的非常好,我们来看下怎么利用企业微信来实现一些消息推送的功能

步骤

注册企业微信

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
选择企业,如果使用的人有多个人的话,只需要一个人注册即可,后面的应用是可以创建多个的
在这里插入图片描述

创建应用

一个应用可以管理一个环境
登陆企业微信
https://work.weixin.qq.com/

在这里插入图片描述

填写基本的信息
在这里插入图片描述

创建成功以后就会出现下面的信息了
在这里插入图片描述

这里我们先记住第一个信息
AgentId:1000002
secret需要点击后获取,也获取一下
Secret需要通过手机端获取,获取到了以后记录下来即可

打通消息

企业微信发消息有两种方式:

  • 第一种是主动发送消息,这个不需要设置一个服务器,直接通过api发送消息即可
  • 第二种是回复消息,这里是客户发送消息给应用,应用会判断消息以后返回消息

主动发送消息

提前获取需要的信息
在这里插入图片描述
获取corpid(上面图中的企业ID即是)
获取corpsecret(上面的步骤里面获取过)

获取账号名称,后面的touser会用到

主动发送消息的比较简单,我们看下python代码的实现

#! /usr/bin/python
#-*- coding:utf-8 -*-
import requests
import json

corpid="xxxxxxxxxxxxx"
corpsecret="xxxxxxxxxxxxxxxxxxxxx"
# 获取token
def get_token():
    global corpid
    global corpsecret
    res=requests.get('https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s' %(corpid,corpsecret))
    print(res.json())
    access_token=res.json()["access_token"]
    return access_token


my_token=get_token()
# 定义发送的数据给谁,数据的类型
data={"touser": "MoZha","msgtype": "markdown","agentid": "1000002","markdown": {"content": ""},"safe": 0,"enable_id_trans": 0,"enable_duplicate_check": 0}

message="""
    测试发送数据
"""

# 发送数据的模块
def send_messages(data,message):

    global my_token
    data["markdown"]["content"]=message
    data = json.dumps(data)
    json_str=json.loads(data)
    print(type(data))
    print(data)
    URL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % my_token
    r=requests.post(url=URL,data=data)
    print(r.json())

send_messages(data,message)

使用python执行上面的脚本,数据就发送给了指定的用户了

上面的比较简单,就是一个主动发送
我们再看下怎么通过API获取客户端发送过来的信息

通过API获取客户端的发来的信息

通过客户端的获取消息的难点在于需要处理中间的消息加解密的问题,这个地方我们通过官方提供的加解密的会方便很多,也是官方推荐的方式


设置API接收
在这里插入图片描述
这里需要准备一个地址,这个需要公网的地址,进行设置的时候就需要校验,所以我们需要准备一个restful的服务,这个用flask实现比较简单

假设我的地址是(下面应该为公网IP地址)
http://127.0.0.1:5000/testapi

官方的python加解密的库地址

https://github.com/sbzhu/weworkapi_python/tree/master/callback

把上面的内容拷贝到跟下面的代码一个目录里面

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from flask import Flask,request
import ConfigParser as cp
from WXBizMsgCrypt import WXBizMsgCrypt
import xml.etree.cElementTree as ET
import sys

app = Flask(__name__)

@app.route('/testapi',methods=['GET', 'POST'])
def hello_world():
    sToken ="xxxxxxxxxxxxx"
    sEncodingAESKey="xxxxxxxxxxxxxxx"
    sCorpID ="xxxxxxxxxxxxxxxxxxxx"
    wxcpt=WXBizMsgCrypt(sToken,sEncodingAESKey,sCorpID)
    if request.method == 'GET':
        sVerifyMsgSig = request.args.get("msg_signature")
        sVerifyTimeStamp=request.args.get("timestamp")
        sVerifyNonce=request.args.get("nonce")
        sVerifyEchoStr=request.args.get("echostr")
        print("start sEchoStr")
        ret,sEchoStr=wxcpt.VerifyURL(sVerifyMsgSig, sVerifyTimeStamp,sVerifyNonce,sVerifyEchoStr)
        if(ret!=0):
            print  "ERR: VerifyURL ret: " + str(ret)
        return sEchoStr
    if request.method == 'POST':
        sReqMsgSig=request.args.get("msg_signature")
        sReqTimeStamp=request.args.get("timestamp")
        sReqNonce=request.args.get("nonce")
        sReqData = request.stream.read()
        ret,sMsg=wxcpt.DecryptMsg( sReqData, sReqMsgSig, sReqTimeStamp, sReqNonce)
        xml_tree = ET.fromstring(sMsg)
        content = xml_tree.find("Content").text
        if content == "ceph":
            print("OKOK")

        return "ok"


if __name__ == "__main__":
    app.run(host='0.0.0.0',port=5000,debug=True)

下面三个信息:
sToken =“xxxxxxxxxxxxx”,设置页面随机生成
sEncodingAESKey=“xxxxxxxxxxxxxxx” 设置页面随机生成
sCorpID =“xxxxxxxxxxxxxxxxxxxx” 自己的企业ID

然后点设置,设置成功就是没问题,如果失败需要检查上面的设置restful服务是否正常

上面的方法是获取消息后,直接返回的OK,我们可以在print的地方自己去调用模块,去返回自己想返回的数据,可以自己加入即可

部门发送

如果想发送给整个部门,需要添加应用的可见范围为某个部门,然后在发送里面添加下面的部门id
“toparty”: “2”

总结

上面就是把企业微信的消息发送通过后台实现了一遍,基于上面的可以做一些消息的发送了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

武汉磨磨

打赏是写出更好教程的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值