什么是sophia?
Sophia是一个为方便开发基于微信公众平台应用程序的框架,类似于开发web应用的struts。 Sophia将微信用户回复的内容解析成各种指令以便app能识别和响应用户的请求,实现公众帐号的智能回复。
假设
我们假设你会开通微信公众平台的订阅号,并且知道如何设置高级模式-开发者模式。
用Sophia开发Hello world
如何快速理解和使用Sophia框架,我们可以从实现一个简单并且著名的hello world例子开始。具体是当微信用户向你的公众帐号回复‘HW’或者点击菜单“HW”时,你的公众帐号要向微信用户回复‘hello world’。
将Sophia嵌入你的web应用中
把Sophia.jar加到web-inf/lib中,在web.xml中加入如下配置(一个webapp可以服务多个公众帐号):
<servlet> <servlet-name>SophiaServlet</servlet-name> <servlet-class>com.sophia.weixin.SophiaServlet</servlet-class> <load-on-startup>5</load-on-startup> </servlet> <servlet-mapping> <servlet-name>SophiaServlet</servlet-name> <url-pattern>/weixin/*</url-pattern> </servlet-mapping>
实现命令类
实现业务逻辑,当微信用户对公众帐号输入:HW是,公众帐号推送:Hellow world!给微信用户。
public class HelloWorldCommand extends AbstractTextCommand { @Override public ResponseMessage doExecute(TextRequestMessage request,String[] params) { return buildTextResponseMessage("Hello world!", request); } @Override public String getAliasName() { return "HW";//别名,可以是中文或者其他字母 } @Override public String getCommandCode() { return "HW";//命令代码 } @Override public String getHelpInfo() { return "回复:HW,推送:hello world"; } @Override public CmdMode commandMode() { return CmdMode.COMMON; } }
实现消息处理器和命令解析器
一般情况一个公众帐号对应一个消息处理器,命令解析器实现一个匿名类就可以了。如果你有多个命令,在extendCommands方法中继续new对象就可。
public class HelloWorldMessageProcessor extends AbstractMessageProcessor { private CommandParsed commandParsed = new AbstractCommandParsed() { public List<TextCommand> extendCommands() { List<TextCommand> list = new ArrayList<TextCommand>(); list.add(new HelloWorldCommand()); return list; } }; @Override public CommandParsed getCommandParsed() { return commandParsed; } }
配置处理器和微信
如果一个webapp服务多个公众号,可以配置多个:
#sophia-framework.properties weixin.process.apphandle.helloworld=com.sophia.weixin.process.HelloWorldMessageProcessor weixin.token.helloworld=1234556666
假设你的域名是:www.sophia.com,在微信公众平台做如下配置:
其他事项
1、会话管理,目前Sophia使用内存来管理会话。如果你的公众号用户比较多,建议用数据库来管理。只要实现SessionStored接口,并在配置文件中修改为
weixin.session.stored=com.*.weixin.core.SessionStoredDB
2、命令解析,如果你觉得Sophia的解析算法不合理,可以重写AbstractCommandParsed接口的getCodeOrAliasOfCommand方法。
3、命令处理接口实现,如果是查询并要支持分页的,需要在public CmdMode commandMode()中返回CmdMode.QUERY
相关推荐
sophia
Laravel开发-sophia 一个简单的用于人工神经网络的PHP库
sophia - 一个现代、可嵌入的键-值数据库
,针对快速Python绑定,v2.2。 关于sophy 用Cython编写,以提高速度和降低开销 干净,令人难忘的API 对Sophia功能的广泛支持 Python 2和Python 3支持 除Cython外,没有第三方依赖 关于索菲亚 订购的键/值存储 ...
法国尼斯综合理工大学,模拟电路课件,pn结部分,NICE-SOPHIA POLYTECH PN junction课件
Sophia:哲学知识共享社区(服务端)
注意:虽然不是必需的, cpanm强烈建议使用cpanm以简单的方式构建sophia的Perl依赖项。 除非您不介意在系统目录中安装所有sophia的Perl依赖项,否则还建议使用local :: lib。 换句话说,以根用户身份运行(sudo)。 ...
sophia-0.0.2 sophia-0.0.2
Sophia是一个免费,轻便和简单的Web浏览器。 它使用基于IE的Lua语言进行编程。 最新版本是:版本2内部版本1-这是高级版本-许多错误已修复-非常快速浏览-新的用户界面和图标-非常轻巧-快速状态-优化-没有一些工具...
Sophia Java/Scala 绑定 这仍在进行中 如果您正在查看此页面,您可能有兴趣在 JVM 环境中查看 Sophia Db,所提供的界面对于大部分功能来说仍然非常粗糙,但是,请不要害怕! 一旦你发现一些很难做的事情,就给我一个...
Windows-10-Sophia脚本:用于微调Windows 10的功能强大的PowerShell模块
定制编译器-Sophia
索菲亚 ios 叉 sophia - 是一个现代的可嵌入键值数据库,专为高负载而设计。
sophia2 辅助事务
ecommerce-sophia:正面
conectect-maven-plugin是社区开发的maven插件,用于从sophia源代码生成用于智能合约的Java类。 生成的类利用和提供的方法来部署合同并调用相应的入口点函数。 局限性 不支持数据类型元组> 10 最新发布 文献资料 该...
自己闲得无聊设计的一款小游戏,用的jupyter编写的,试试看吧,玩玩看吧,好不好玩告诉我
该入门工具随附主要的Gatsby配置文件,您可能需要使用React的快速应用生成器快速启动并运行。 还有其他更具体的想法吗? 您可能需要查看我们充满活力的集合。 :rocket: 快速开始 创建一个Gatsby网站。 使用...
Sophia Mining 是一个通过应用数据挖掘和分析算法进行数据挖掘的系统。
sophia087.github.io