微信公众平台应用开发框架sophia设计不足

设计一个小框架考虑的东西真不少,每一样都不容易:
1、既要解决当前技术的不足;
2、又要方便他人使用(主要的目的);
3、同时又要设计得优雅,容易扩展;

sophia一开始设计用来支持智能回复(文本可以带参数的回复),后来又支持菜单,并统一了菜单和文本命令的处理逻辑,
再后来看到微信客户端的交互元素太少,又支持html页面操作和微信客户端的会话(即页面操作可以知道是哪个微信号操作的)

对于如何维系两个不同类型消息(命令)之间的关系?对sophia来说有点吃力。即,前面是一个文本(命令),后面是一个其他类型的消息。

比如,某街道办让我们开发一个居民登记公众平台,主要流程如下:
1、订阅者输入:登记
2、公众平台提示:请输入姓名:
3、订阅者输入:张三
4、公众平台提示:输入身份证号码:
5、订阅者输入:xxxxxxxxxxxxxxxxxx
6、公众平台提示:请上传免冠相片:
7、订阅者上传相片。
8、公众平台提示:登记成功!

订阅者经过多次文本输入和图片上传后,公众号如何保证前面的文本信息和最后的图片是同一个人的?

如果看了sophia的源代码和设计后(参阅我前面的文章)会发现sophia无法做到?因为我一开始就把sophia设计为处理文本消息的框架。

现在,如果要解决这个问题,那么:
1、首先把所有的消息(文本、视频、语音、图片、地理位置等,或者说每种交互)都认为是一种命令,让框架都有机会处理;
2、其次要修改会话管理逻辑;

插播:
消息的多样性:指同一种类型的消息,可以根据内容来解析出不同的命令,比如文本消息具有这个特性。
像图片无法解析出不同的内容,所以没有多样性(用图像识别、语音识别技术除外)。这个概念会影响我们的设计。

1、由于文本消息具有多样性,其对应的命令类就可以有不同的子类型。而非文本消息,只能有一个命令类,合适吗?
2、如果把非文本消息作为文本消息的特殊类型,又如何?

初步考虑扩展将文本命令类增加一个标记(支持后继是非文本消息继续处理),如果公众平台收到非文本命令时候要检查一下session中是否存在文本命令对象是否支持后继非文本消息处理,然后调用此对象继续处理。

时间: 2024-07-30 03:24:25

微信公众平台应用开发框架sophia设计不足的相关文章

微信公众平台开发教程(九)微信公众平台通用开发框架

微信公众平台开发教程(九)微信公众平台通用开发框架 一.思考 开发了几个微信项目,一直在思考:如何将微信相关的处理与业务系统联系在一起?如何做到彼此分离,且易于扩展?能否开发一套独立的微信服务框架,支持各种业务应用? 二.现有常用的服务框架 支持多种业务应用,我们通过分层的方式来实现.将复杂的系统进行分层,将一些功能或者特有的逻辑进行封装,封装为不同的基础服务或中间件.业务层无需关心底层具体实现,只需进行简单调用.组装,即可支撑强大的业务应用.这样保证了层级独立,也使得系统易于维护和扩展.在一个

微信公众平台开发入门教程(图文)

关键字:微信公众平台开发入门 作者:C++研究室 背景知识:微信公众平台的开发需要有一定的PHP基础知识,PHP是一种HTML内嵌式的语言,广泛用于网站开发.微信服务器和开发者的服务器间有两种数据传输方式,分别是XML和JSON.其中XML主要用在接受发送普通消息和事件推送中,而用户管理.创建自定义菜单和高级群发等则需要用到JOSN格式数据. 在这篇微信公众平台开发教程中,你可以跟着教程一起在整体上感性了解微信公众平台的开发框架,可以帮助你更好的去入手. 我们将使用微信公众账号西安校园创客空间作

微信公众平台开发教程目录

1.微信公众平台开发教程(一) 微信公众账号注册流程 2.微信公众平台开发教程(二) 基本原理及消息接口 3.微信公众账号开发教程(三) 基础框架搭建 4.微信公众平台开发教程(四) 实例入门:机器人(附源码) 5.微信公众平台开发教程(五)自定义菜单 6.微信公众平台开发教程(六)获取个性二维码 7.微信公众平台开发教程(七)安全策略 8.微信公众平台开发教程(八)Session处理 9.微信公众平台开发教程(九)微信公众平台通用开发框架 10.微信公众平台开发教程(十) 订阅号与服务号的区别

微信公众平台开发概述

微信公众平台基本知识介绍 开发步骤 Senparc.Weixin SDK 介绍 微信菜单介绍 微信JS SDK介绍 微信支付介绍 Code First设计微信公众平台后台实体 BootStrap设计响应式布局介绍 一.微信公众平台基本知识介绍 1.1请求流程 微信公众平台是基于HTTP请求和响应 1.2 通讯格式 1.2.1消息 XML <xml>     <ToUserName><![CDATA[gh_a96a4a619366]]></ToUserName>

开源免费的微信公众平台开发框架

CakeWX,开源免费好用的微信公众平台开发框架功能特色:1. 基于CakePHP,开源免费.2. 小巧精致,可下载源码,搭建属于自己的微信平台.3. 简单好用的关键字,自动回复,图文,活动,自定义菜单等基础功能.4. 根据需求进行二次开发,或者提交给社区.下载地址:http://cakewx.com在线演示:http://www.zaiwx.com (注册账号即可测试)安装环境:CakeWX 是基于PHP和MySQL技术开发,可同时使用于Windows.Linux平台,环境需求如下:1.Win

微信公众平台开发框架推荐

非常强大的微信公众平台开发框架推荐中有官方和第三方开发者提供的丰富的插件,是免费并且成熟的框架,更多的信息可以点击这里: 微擎:http://www.we7.cc/ 微笑:http://www.sylai.com/ weiphp:http://www.weiphp.cn/

用gson和httpclient调用微信公众平台API

吐槽:微信api很无语,部分用xml,部分用json. 最近在找如何调用微信公众平台关于json相关的api比较方便,最后发现httpcliect和gson不错.如果你有更好的方式,请告诉我. 以下代码先了解如何使用gson和httpclient,有功夫再整到我的sophia里 import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.

(转)10款微信公众平台相关的开源软件

1.微信公共帐号机器人 WeBot WeBot ( Weixin Robot) 的设计目标就是让你傻瓜化的接入微信公众平台.是 微信公众平台提供的开放信息接口的自动回复系统,基于node.js 实现. 功能: 清晰独立的 router ,轻松实现文本匹配流程控制 基于正则表达式的对话设定,配置简单,可以给一句话随机回复不同内容 支持等待后续操作模式,如可以提示用户"需要我执行xxx操作吗?" 授权协议: 未知开发语言: JavaScript 源码地址:https://github.co

微信公众平台开发之会员卡

微信公众平台开发之会员卡是商家获取用户信息和实现线上线下交易的重要途径之一.通过在微信上发布会员卡,然后让用户填写自己的个人信息之后就可以领取到线上的会员卡,这个会员卡在线下也是可以使用的.可以在会员卡上发布一些最新通知,礼品券,优惠券,会员特权等等,用户达到一定的积分或者在线下消费一定的金额才可以领取这些优惠,这样可以吸引用户去获取积分实现每日签到的功能,这样用户就能看到我们推送的消息.下面就由微时代来简单介绍一下会员卡吧: 1.在微时代后台设置会员卡的回复信息,当用户回复关键词"会员卡&qu