美文网首页
接收微信消息和发送消息

接收微信消息和发送消息

作者: 老胡聊聊天 | 来源:发表于2018-10-22 22:02 被阅读37次

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

    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 = """
            <xml>
                <ToUserName><![CDATA[%s]]></ToUserName>
                <FromUserName><![CDATA[%s]]></FromUserName>
                <CreateTime>%s</CreateTime>
                <MsgType><![CDATA[text]]></MsgType>
                <Content><![CDATA[%s]]></Content>
            </xml>
        """%(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)
    

    相关文章

      网友评论

          本文标题:接收微信消息和发送消息

          本文链接:https://www.haomeiwen.com/subject/fzynzftx.html