接收微信消息和发送消息

上一篇说到怎么接收微信消息,有接收就要有发送,这篇是消息的回复,包括同步回复和异步回复。

1、同步回复:

接收微信消息和发送消息_第1张图片
image.png
@app.route('/msg',methods=['GET','POST'])
def msg():
    #先校验是否是合法的微信消息,具体方法上一篇有,这里省略了
    if not validateWechat():
        err = "error: not security wechat message"
        fprint(err)
        return err

    #获取发消息的openid
    openid = request.args.get('openid') or ''

    #准备回复的报文
    return_message = """
        
            
            
            %s
            
            
        
    """%(openid,APP_WECHATNUMBER,123456,'你好啊')
    
    #返回
    return return_message

API详见:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140543

2、异步回复

实际上微信并不支持所谓的异步回复,异步就是在同步的时候不返回任何信息(返回一个""或者"success"),然后在需要回复的时候,给用户发送一个客服消息。
API详见:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140547

代码如下:
这里用json.dumps().encode('utf-8').decode("unicode_escape")处理了一个中文的问题,如果不处理,发到微信是unicode编码,不过感觉处理的不太好,后续看看有没有更好的办法。

    ACCESS_TOKEN = getAccessToken()
    url = 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=%s'%ACCESS_TOKEN
    content = "Hello World1恩,我对你哎哎哎哎哎哎不玩"
    postmessage = {
        "touser": WARNING_OPENID,
        "msgtype": "text",
        "text":
            {
                "content": content
            }
    }
    poststr = json.dumps(postmessage,ensure_ascii=False).encode('utf-8').decode("unicode_escape")
    requests.post(url,data=poststr)

你可能感兴趣的:(接收微信消息和发送消息)