`
devroller2
  • 浏览: 34555 次
  • 性别: 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框架源码供学习吗?

相关推荐

    sophia

    标题"Sophia"很可能指的是Sophia字体,一种可能被用于设计、出版或网页制作的图形艺术字体。在IT行业中,字体扮演着至关重要的角色,它不仅影响文本的可读性,还对整体视觉效果和品牌识别产生重大影响。Sophia字体...

    Laravel开发-sophia

    “Laravel开发-sophia” 指的是使用 Laravel 框架进行的项目开发,其中sophia可能是一个特定的模块或工具,专门针对人工神经网络的实现。在PHP世界中,Laravel是广受欢迎的开源Web应用框架,以其优雅的语法和强大的...

    cpp-sophia一个现代可嵌入的键值数据库

    它被设计为轻量级的解决方案,适用于那些需要快速数据存储和检索的应用场景,尤其适合在资源受限的环境中运行。Sophia的特性使其在NoSQL数据库领域中脱颖而出,下面将详细探讨其关键知识点。 1. **键值存储模型** ...

    sophy:快速将Python绑定到Sophia数据库

    ,针对快速Python绑定,v2.2。 关于so​​phy 用Cython编写,以提高速度和降低开销 干净,令人难忘的API 对Sophia功能的广泛支持 Python 2和Python 3支持 除Cython外,没有第三方依赖 关于索菲亚 订购的键/值存储 ...

    Node.js-Sophia哲学知识共享社区服务端

    Node.js作为一款流行的JavaScript运行环境,允许开发者在服务器端使用JavaScript进行开发,具有高效、轻量级、非阻塞I/O等优点,使得Sophia社区能够快速响应用户需求。 **Node.js核心特性** 1. **事件驱动**:Node...

    Sophia-Xin-Shuo_python_源码

    Python是一种高级、通用的编程语言,因其语法简洁明了,适合初学者入门。在游戏开发中,Python通常用于后端逻辑处理、数据管理以及与前端界面的交互。 至于【压缩包子文件的文件名称列表】中的"Sophia-Xin-Shuo....

    sophia.ios:ios的sophia数据库

    Sophia是一个ACID(原子性、一致性、隔离性、持久性)兼容的数据库引擎,其设计目标是提供快速、低内存占用和高并发性能。它采用LSM-Tree(Log-Structured Merge Tree)的数据结构,这种数据结构特别适合于写密集型...

    sophia-0.0.2:sophia-0.0.2

    10. **使用场景**:Sophia常用于实时数据分析、物联网(IoT)应用、缓存系统以及需要快速响应时间的服务。 虽然具体的描述信息不足,但基于上述通用的数据库系统知识,我们可以推断Sophia数据库系统的一些基本特性和...

    Windows-10-Sophia脚本:用于微调Windows 10的功能强大的PowerShell模块

    Windows 10 Sophia脚本是一个专门设计用于优化和微调Windows 10系统的PowerShell模块。这个工具集合了一系列命令,帮助用户对操作系统进行定制,去除不必要的应用、服务和设置,从而提升性能,增强隐私,并减少潜在...

    sophia:用Perl编写的IRC机器人

    注意:虽然不是必需的, cpanm强烈建议使用cpanm以简单的方式构建sophia的Perl依赖项。 除非您不介意在系统目录中安装所有sophia的Perl依赖项,否则还建议使用local :: lib。 换句话说,以根用户身份运行(sudo)。 ...

    sophia-java:Sophia DB 的 Jni 绑定和 Scala 使用

    Sophia Java/Scala 绑定 这仍在进行中 如果您正在查看此页面,您可能有兴趣在 JVM 环境中查看 Sophia Db,所提供的界面对于大部分功能来说仍然非常粗糙,但是,请不要害怕! 一旦你发现一些很难做的事情,就给我一个...

    NICE-SOPHIA POLYTECH PN junction课件

    ### NICE-SOPHIA POLYTECH PN 结理论详解 #### 教授:Philippe LORENZINI #### Polytech-Nice Sophia 本篇课件是关于法国尼斯综合理工大学(Polytech-Nice Sophia)模拟电路课程中的PN结部分。下面将详细介绍PN结...

    Sophia Browser:一个简单的波斯网络浏览器。-开源

    Sophia是一个免费,轻便和简单的Web浏览器。 它使用基于IE的Lua语言进行编程。 最新版本是:版本2内部版本1-这是高级版本-许多错误已修复-非常快速浏览-新的用户界面和图标-非常轻巧-快速状态-优化-没有一些工具...

    python-sophia:Sophia数据库库的Python绑定

    该软件包为 (类似轻量级数据库)提供了Python绑定。 数据库上可用的操作包括插入键值对,删除键值或获取给定键值的值。 还可以按升序或降序遍历数据库的记录。 安装 首先使用(从/ tmp或类似的源软件包目录运行)...

    定制编译器-Sophia

    示例和测试用例则有助于快速上手并验证自定义功能的正确性。 学习和使用Sophia编译器,开发者需要具备扎实的编译原理基础、Java编程经验,以及一定的抽象思维能力。通过深入理解编译器的工作流程,开发者可以更好地...

    Sophia Mining-开源

    开源许可证使得任何人都能自由地使用、修改和分发软件,从而促进了技术的快速迭代和广泛应用。 此外,Sophia Mining 的开放源代码也意味着它的安全性得到了广泛的关注。社区成员可以审查代码,查找并修复潜在的安全...

    rust-sophia:Sophia的Rust绑定[http

    《深入理解Rust绑定Sophia:打造高效嵌入式数据库系统》 在现代软件开发中,选择合适的数据库系统是至关重要的。Sophia是一款高效的、面向嵌入式应用的数据库管理系统,而Rust作为一种系统级编程语言,以其强大的...

    sophia2:辅助事务

    在辅助事务中,这些机制可能更为精细,能够快速定位和修复因故障引起的不一致状态。 五、应用场景 辅助事务特别适合于需要高并发处理和实时更新的场景,如物联网(IoT)、大数据分析、金融交易系统等。在这些领域,...

    Sophia:Emily 编程语言的包管理器 (emilylang.org)

    这使得开发者可以快速找到并引入所需的功能模块,无需从零开始编写代码。 2. **安装与依赖管理**:一旦找到合适的包,Sophia 可以轻松安装到本地项目环境中,同时处理好所有依赖关系。这样就避免了手动解决依赖冲突...

    ecommerce-sophia:正面

    ecommerce-sophia:正面

Global site tag (gtag.js) - Google Analytics