微信公众号 Flask 配置自动回复

#!/usr/bin/python2.7
# -*- coding: utf-8 -*-
# @Time    : 2020-06-17 14:50
# @Author  : AcmeMax
# @File    : wx_auto_response.py
# @Software: PyCharm
from flask import request, make_response
from . import api
from app import util
import xml.etree.cElementTree as ET
import time, hashlib


@api.route('/wx', methods=['GET', 'POST'])
def auto_response():
    if request.method == 'GET':
        token = 'weixin'
        query = request.args
        signature = query.get('signature', '')
        timestamp = query.get('timestamp', '')
        nonce = query.get('nonce', '')
        echostr = query.get('echostr', '')
        s = [timestamp, nonce, token]
        s.sort()
        s = ''.join(s)
        if hashlib.sha1(s).hexdigest() == signature:
            return make_response(echostr)
    else:  # 即如果为POST请求执行下面的代码
        print(1)
        xmlData = ET.fromstring(request.stream.read())
        msg_type = xmlData.find('MsgType').text
        if msg_type == 'text':
            if xmlData.find('Content').text == '2':
                ToUserName = xmlData.find('ToUserName').text
                FromUserName = xmlData.find('FromUserName').text
                # Content = xmlData.find('Content').text
                Content = '假装有标题'
                Description = '测试测试测试'
                PicUrl = 'https://goss3.cfp.cn/creative/vcg/800/new/VCG41N902117202.jpg?x-oss-process=image/format,jpg/interlace,1'
                url = 'https://xxxxx.cn/'
                reply = '''
                <xml>
                <ToUserName><![CDATA[%s]]></ToUserName>
                <FromUserName><![CDATA[%s]]></FromUserName>
                <CreateTime>%s</CreateTime>
                <MsgType><![CDATA[news]]></MsgType>
                <ArticleCount>1</ArticleCount>
                <Articles>
                    <item>
                        <Title><![CDATA[%s]]></Title>
                        <Description><![CDATA[%s]]></Description>
                        <PicUrl><![CDATA[%s]]></PicUrl>
                        <Url><![CDATA[%s]]></Url>
                    </item>
                </Articles>
                </xml>
                '''
                response = make_response(reply % (FromUserName, ToUserName, str(int(time.time())), Content, Description, PicUrl, url))
                response.content_type = 'application/xml'
                return response
            else:
                ToUserName = xmlData.find('ToUserName').text
                FromUserName = xmlData.find('FromUserName').text
                # Content = xmlData.find('Content').text
                Content = '<a src="http://www.baidu.com">这是在测试</a>'
                reply = '''
                <xml>
                <ToUserName><![CDATA[%s]]></ToUserName>
                <FromUserName><![CDATA[%s]]></FromUserName>
                <CreateTime>%s</CreateTime>
                <MsgType><![CDATA[text]]></MsgType>
                <Content><![CDATA[%s]]></Content>
                </xml>
                '''
                response = make_response(reply % (FromUserName, ToUserName, str(int(time.time())), Content))
                response.content_type = 'application/xml'
                return response


 

效果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值