`
devroller2
  • 浏览: 33684 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Sophia快速入门

阅读更多

什么是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

 

 

 

 

  • 大小: 32.1 KB
分享到:
评论
1 楼 492920874 2014-03-06  
请问可以提供Sophia框架源码供学习吗?

相关推荐

Global site tag (gtag.js) - Google Analytics