zoukankan      html  css  js  c++  java
  • 0034 微信公众平台开发(03 回复文本和图文消息)

      微信收到消息和事件后,可以自动回复。回复类型大致包括文本回复、图片回复、语音回复、视频回复、音乐回复、图文回复。

      文本回复和图文回复,直接就可以回复,而其它回复是媒体回复,需要先上传媒体文件,获取媒体文件的media_id,然后,再调用media_id做出回复。

      故本文先学习文本回复和图文回复。

      在Applications/Wechat/views下创建一个文件,名为:Replies.py,专门用于处理回复信息。

    1 文本回复

      文本回复,是用文本方式来响应用户消息。文本回复最好的方式是,通过解析用户发出的文本内容,来回复用户需求。

    from wechatpy.replies import TextReply
    
    
    def replyText(txt, msg):
        """
        【功能描述】解析用户的文本消息,并根据文本回复
        此处可以用正则表达式检索用户发送的文本信息,并根据检索的信息做相应的回复。
        相当于一个简单的智能回复机器人。
        """
        if txt == '你好':
            content = '你更好哦!'
        else:
            content = '我不懂你在说什么'
        reply = TextReply(content=content, message=msg).render()
        return reply
    

      然后,在Applications/Wechat/views/WechatInterface.py中,挂在用户文本消息下面。

    if msg.type == "text":
        return HttpResponse(Replies.replyText(msg.content,msg))
    

      运行工程,在公众号里测试效果如下:

     2 图文回复

      图文回复就是有图片,有文字的回复。在进行图文回复前,要做三件事:

      第一:准备一张图片,放在工程根目录下的media目录里,命名为001.png

      第二:配置媒体文本路径

      在工程settings.py做如下配置:

    MEDIA_URL = '/media/'
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
    

      在工程url做以下配置

    from django.views.static import serve
    
    
    urlpatterns = [
        # ...放最后一排   
        re_path(r'(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT}),
    ]
    

      第三:在浏览器中访问这张图片

       图片配置好以后,就开始写程序了。

      参见《微信图文消息

      微信图文消息相对较复杂,wechatpy提供了图文回复的样式,非常简单适用。

    from wechatpy.replies import ArticlesReply
    
    
    def replyArticle(msg):
        reply = ArticlesReply(message=msg, articles=[
            {
                'title': '大学英语四六级查询
    点击图片进入', # 此处可用
    换行。
                'description': '点击图片进入',
                'url': 'http://49.235.156.156/Organizations/UserHome/',
                'image': 'http://49.235.156.156/001.png',
            },
            {
                'title': '请点击加入您的组织,
            您将会享受到更多优质服务!',
                'description': '',
                'url': '',
                'image': 'http://49.235.156.156/001.png',
            },
        ])
        # 继续添加
        reply.add_article({
            'title': '标题3',
            'description': '描述3',
            'url': '',
        })
        # 转换成 XML
        xml = reply.render()
        return xml
    

      把这个函数挂在Applications/Wechat/views/WechatInterface.py中,用户关注公众号事件中。

    if msg.event == 'subscribe':
            # 在用户关注公众号的时候,获取用户的openid,保存在数据库中,而当用户在注册的时候,
            # 从注册页面再获取一次openid,同时把用户的手机号和openid,并根据该openid更新该用户的手机号。
            print(msg.source)
            return HttpResponse(Replies.replyArticle(msg))
    

      运行工程,先取消公众号,再关注公众号。

      

  • 相关阅读:
    轻量级数据库sqlite的使用
    Integer引发的思考
    css限制显示行数
    数据库 chapter 17 数据仓库与联机分析处理技术
    数据库 chapter 15 对象关系数据库系统
    数据库 chapter 16 XML数据库
    数据库 chapter 14 分布式数据库系统
    数据库 chapter 11 并发控制
    数据库 chapter 12 数据库管理系统
    数据库 chapter 13 数据库技术新发展
  • 原文地址:https://www.cnblogs.com/dorian/p/12393264.html
Copyright © 2011-2022 走看看