Skip to content

Wechat-Group/weixin-robot-java

This branch is up to date with linux-china/weixin-robot-java:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

985b1f6 · Jul 21, 2013

History

50 Commits
Jul 20, 2013
Jul 21, 2013
Apr 5, 2013
Apr 5, 2013

Repository files navigation

Weixin robot Java

微信公共平台自动回复机器人的Java SDK,你可以使用SDK简单快速构建微信机器人。 微信Robot Java借鉴了url rewrite的思想,url rewrite是根据url进行路由,而微信Robot则是根据消息类型和内容进行路由。 整理的流程如下:

  • WexinRobotServlet负责认证和微信消息接收
  • 接收后进行XML解析,构建出 WeixinMessage对象,并注入到request的attribute中,名字为wxMsg
  • 根据配置的路由参数,对微信消息进行匹配
  • 根据匹配的结果进行URL路由转发
  • 最后由处理的组件完成xml格式反馈的输出

如何使用

首先我们要在pom.xml中添加:

 <dependency>
    <groupId>org.mvnsearch.wx</groupId>
    <artifactId>wx-robot-sdk</artifactId>
    <version>1.0.0</version>
 </dependency>

接下来就是修改web.xml添加Servlet负责接收微信公共平台发过来的消息:

    <servlet>
        <servlet-name>WexinRobotServlet</servlet-name>
        <servlet-class>org.mvnsearch.wx.servlet.WexinRobotServlet</servlet-class>
        <init-param>
            <param-name>token</param-name>
            <param-value>yourTokenHere</param-value>
        </init-param>
        <init-param>
            <param-name>confFile</param-name>
            <param-value>/WEB-INF/weixin-router.xml</param-value>
        </init-param>
    </servlet>

    <!-- weixing -->
    <servlet-mapping>
        <servlet-name>WexinRobotServlet</servlet-name>
        <url-pattern>/servlet/weixinrobot</url-pattern>
    </servlet-mapping>

其中token是指你在微信公共平台上的token,这里和其一致。接下来我们还需要设置servlet mapping,添加url-pattern, 然后将最终的url,如上述配置的 http://www.foobar.com/servlet/weixinrobot 作为微信公共平台接口配置中的URL。 接下来是在WEB-INF目录下创建一个weixin-router.xml的文件,完成信息的路由。

接收到的消息如何路由到指定的组件处理,如Struts的Controller等,这里我们需要创建一个router文件,这里还是根据 消息的类型和内容进行转发,内容如下:

<?xml version="1.0" encoding="utf-8"?>

<weixinrobot>

    <rule>
        <type>text</type>
        <content>[\d]{11}</content>
        <forward>/weixin2.wx</forward>
    </rule>

    <rule>
        <type>text</type>
        <forward>/weixin.wx</forward>
    </rule>

</weixinrobot>

上述的例子就是如果内容是手机号,交与/weixin2.wx这个URL处理。当然我们设置了一个默认的选项,如果text类型的消息没有任何 匹配,则由/weixin.wx处理。

收到微信消息后,要给出消息反馈。微信公共平台的消息反馈是一个xml格式的数据,在Java的系统中,我们使用jspx输出接口,样例如下:

 <?xml version="1.0" encoding="UTF-8"?>
 <xml>
     <ToUserName>${wxMsg.sender}</ToUserName>
     <FromUserName>${wxMsg.receiver}</FromUserName>
     <CreateTime>${wxMsg.createdTime}</CreateTime>
     <MsgType>text</MsgType>
     <Content>${content}</Content>
     <FuncFlag>0</FuncFlag>
 </xml>

编码

  • 在代码中获取解析好的微信消息 WeixinMessage wxMsg = (WeixinMessage)request.getAttribute("wxMsg");

FAQ

  • 如何调试: 由于微信服务器只能通知互联网IP和80端口,开发时你可以在你家中的ADSL拨号路由器上设置一下80转发, 然后微信服务器的消息通知就可以路由到你的笔记本上,方便你测试和开发。查看你的互联网Ip请访问 http://ip.mvnsearch.org
  • 参考样例清访问robot-demo Maven module

About

微信公共平台机器人Java SDK

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%