Python开发入门与实战22-简单消息回复

22. 简单消息回复

本章节我们来实现一个微信库存查询功能,使用我们前面的BIZ业务逻辑层示例如何利用微信入口来实现文本消息类的库存查询服务。

22.1. 在responseMsg函数里增加处理微信文本推送的处理逻辑

def responseMsg(postContent):
    postStr = smart_str(postContent)
    #postStr = postContent
    if postStr:
        msg = xmlContent2Dic(postStr)
        if msg[‘MsgType‘]:
            if msg[‘MsgType‘] == ‘event‘:
                resultStr = handleEvent(msg)  #处理事件类型推送
            elif msg[‘MsgType‘] == ‘text‘:
                resultStr =handleText(msg)    #处理文本类型推送
        else:
            resultStr = ‘Input something...‘    

    return resultStr

22.2. 增加handleText函数,处理微信推送的文本信息逻辑

def handleText(msg):
    resultStr="<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content></xml>"

    if msg[‘Content‘] == ‘1‘:
        resultStr = resultStr % (msg[‘FromUserName‘],msg[‘ToUserName‘],str(int(time.time())),‘text‘,u‘请输入查询物料名称,格式“K螺母”。‘)
    elif string.upper(msg[‘Content‘][0])==‘K‘:
        itemName = msg[‘Content‘][1:len( msg[‘Content‘])]
        strs = ‘‘
        biz = InventoryBiz()
        inventorys = biz.getInventoryByItemName(itemName)
        for inventory in inventorys:
            strs = strs + inventory.Item.ItemName + u‘ 库存数量:‘ + str( inventory.Amount) + ‘\n‘
        if   strs == ‘‘:
            strs = u‘当前物料:"‘+ itemName +u‘"未查询到库存数据‘             

        resultStr = resultStr % (msg[‘FromUserName‘],msg[‘ToUserName‘],str(int(time.time())),‘text‘,strs)
    else:
        resultStr = resultStr % (msg[‘FromUserName‘],msg[‘ToUserName‘],str(int(time.time())),‘text‘,u‘感谢您关注【微人人公众号】\n目前功能如下:【1】 库存查询;‘)
    return resultStr

注意:我们仍然是通过业务逻辑层的查询函数调用来获得库存信息,然后返回给“微信”的查询用户。代码只是调用了BIZ层接口,作为“微信”接口的开发人员不需要再考虑业务逻辑层具体的的逻辑实现。这样我们也可以把“微信”看做MVC里view的一种展现模式。

代码更新到云,我们就可以在微信端进行库存查询了。如下图:

22.3. 小结

本章节我们演示了库存查询是如何快速扩展到支持微信查询的,由于业务逻辑层的代码是共用的,也就意味着真正的库存查询的业务逻辑对于微信接口的开发人员来说就是一个黑盒,开发人员只管调用biz层接口就可以完成功能从网页查询到微信查询的扩展。

进一步如果开发团队内部定义了自己的信息封装格式,微信端的库存查询与extjs网页端库存查询就可以统一调用一个服务接口。比如:前面我们发布的getInventoryByItemName服务,期返回json数据格式。这样客户端开发人员都可以不用知道服务端是如何实现的,只管调用服务即可。这样的编程模式就可以实现界面展示层与服务层开发的完全分离,进一步降低系统的耦合。统一的服务层来实现不同终端访问结果的一致性,提高系统的整体开发效率。

时间: 2024-12-18 02:39:48

Python开发入门与实战22-简单消息回复的相关文章

Python开发入门与实战1-开发环境

1.搭建Python Django开发环境 1.1.Python运行环境安装 Python官网:http://www.python.org/ Python最新源码,二进制文档,新闻资讯等可以在Python的官网查看到. Python3.0已经发布,本文我们使用Django作为对象映射层,Django暂时还不支持3.0版本,本文我们以Python 2.7 Windows 8 64位版本为例.下载安Windows X86-64 MSI Installer (2.7.7) [1]安装包,运行安装文件.

Python开发入门与实战8-基于Java的集成开发环境

8. 基于Java的Python的集成开发环境 目前为止我们所有的代码和例子都是通过Notepad文本编辑器来实现的,实际项目开发中这种编码模式效率较低(大虾除外),使用IDE集成开发环境常常大幅度的提高编码效率.本章我们将简要介绍两个主流的集成开发环境. 8.1. 下载安装Java运行环境 http://www.java.com/zh_CN/download/manual.jsp 根据操作系统版本下载安装Java运行时环境,如下图: 8.2.Eclipse IDE http://www.ecl

Python开发入门与实战2-第一个Django项目

2.第一个Django项目 上一章节我们完成了python,django和数据库等运行环境的安装,现在我们来创建第一个django project吧,迈出使用django开发应用的第一步. 2.1.创建第一个Django项目 我们创建一个我们存放Django的工作目录,示例:C:\My Files\Python Projects 在命令提示符窗口进入到刚才创建的目录,运行运行命令: django-admin.py startproject mysite 这样会在你的当前目录下创建一个目录mysi

Python开发入门与实战19-Windows Azure部署2

19. 微软云部署2 上一章节我们介绍了如何实现在微软云通过虚拟机部署我们的在python django应用,本章我们来介绍如何Windows Azure上部署通过部署网站的方式来部署我们的应用,这种部署方式更方便,与vs 2013的集成度更高. 19.1. 创建Web 应用 我们登陆Windows Azure中国账户后进入到管理门户,选择“web 应用”,点击新建按钮,如下图: 创建完成后,我们选择myazure进度到应用的管理界面,如下图: 点击“浏览”按钮,浏览该网站,如果网站创建成功浏览

Python开发入门与实战12-业务逻辑层

12. Biz业务层 前面的章节我们把大量的业务函数都放在了views.py里,按照目前这一的写法,当我们编写的系统复杂较高时,我们的views.py将会越来越复杂,大量的业务函数包含其中使其成为一个包罗万象的文件.本章我们将阐述增加一个业务逻辑层来解决view层的复杂度,相当于在model层和view层中增加一个业务逻辑业务层Biz层,接下来我们根据这个思路来重构我们前面章节的代码. 12.1. 增加inventoryBiz类文件 在inventory app添加一个新的inventoryBi

Python开发入门与实战6-表单

6. 表单 从简朴的单个搜索框,到常见的Blog评论提交表单,再到复杂的自定义数据输入接口,HTML表单一直是交互性网站的重要交互手段.本章介绍如何用Django如何对用户通过表单提交的数据进行访问.有效性检查以及其它处理等. 首先,我们先简要介绍一下HttpRequest对象和Form对象. 6.1. 提交的数据信息 除了基本的元数据,HttpRequest对象有两个属性包含了用户所提交的信息: request.GET 和 request.POST.二者都是类字典对象,我们可以通过它们来访问G

Python开发入门与实战7-Django Form

7. Django Form 7.1. Form表单 Django带有一个form库,称为django.forms,这个库可以处理上一章提到的包括HTML表单的自动生成以及数据验证. 我们在inventory目录下增加forms.py文件,与models.py文件类似,专门用来存储form类. class ItemForm(forms.Form): ItemCode = forms.CharField() ItemName = forms.CharField() Remark = froms.C

Python开发入门与实战3-Django动态页面

3.Django动态页面 上一章节我们实现的helloworld视图是用来演示Django网页是创建的,它不是一个动态网页,每次运行/helloworld/,我们都将看到相同的内容,它类似一个静态HTML文件. 接下来我们将实现另一个视图,加入动态内容,例如当前日期和时间显示在网页上.通过简单的下一步,来演示Django的这个技术. 3.1.一个简单的动态页面例子 这个视图做两件事情: 获取服务器当前日期和时间,并返回包含这些值的HttpResponse .为了让Django视图显示当前日期和时

Python开发入门与实战16-APACHE部署

16. Windows平台apache部署 本章节我们简要的描述一下如何在windows平台部署apache的django站点. Python Django 项目部署发布到windows apache运行环境: 操作系统:windows 8.1 x64 Python版本:2.7 x86 Django版本:1.4 Apache版本:2.2.4 x86 16.1. 安装Apache环境 Appache下载地址:http://www.apachehaus.com/cgi-bin/download.pl