微信公众平台开发之处理普通消息---1

注:我的培训老师:柳峰,在此感谢柳老师!他的个人博客:http://blog.csdn.net/lyq8479

用户发送的消息包括:

(参照官方微信公众开发平台:http://mp.weixin.qq.com/wiki/)

1 文本消息,包括:

ToUserName---开发者微信号

FromUserName---发送方帐号(一个OpenID)

CreateTime---消息创建时间 (整型)

MsgType---text

Content---文本消息内容

MsgId---消息id,64位整型

2 图片消息,包括:

ToUserName    开发者微信号

FromUserName    发送方帐号(一个OpenID)

CreateTime    消息创建时间 (整型)

MsgType    image

PicUrl    图片链接

MediaId    图片消息媒体id,可以调用多媒体文件下载接口拉取数据。

MsgId    消息id,64位整型

3 语音消息,包括:

ToUserName    开发者微信号

FromUserName    发送方帐号(一个OpenID)

CreateTime    消息创建时间 (整型)

MsgType    语音为voice

MediaId    语音消息媒体id,可以调用多媒体文件下载接口拉取数据。

Format    语音格式,如amr,speex等

MsgID    消息id,64位整型

4 视频消息,包括:

ToUserName    开发者微信号

FromUserName    发送方帐号(一个OpenID)

CreateTime    消息创建时间 (整型)

MsgType    视频为video

MediaId    视频消息媒体id,可以调用多媒体文件下载接口拉取数据。

ThumbMediaId    视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据。

MsgId    消息id,64位整型

5 小视频消息,包括:

ToUserName    开发者微信号

FromUserName    发送方帐号(一个OpenID)

CreateTime    消息创建时间 (整型)

MsgType    小视频为shortvideo

MediaId    视频消息媒体id,可以调用多媒体文件下载接口拉取数据。

ThumbMediaId    视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据。

MsgId    消息id,64位整型

6 地理位置消息,包括:

ToUserName    开发者微信号

FromUserName    发送方帐号(一个OpenID)

CreateTime    消息创建时间 (整型)

MsgType    location

Location_X    地理位置维度

Location_Y    地理位置经度

Scale    地图缩放大小

Label    地理位置信息

MsgId    消息id,64位整型

7 链接消息,包括:

ToUserName    接收方微信号

FromUserName    发送方微信号,若为普通用户,则是一个OpenID

CreateTime    消息创建时间

MsgType    消息类型,link

Title    消息标题

Description    消息描述

Url    消息链接

MsgId    消息id,64位整型

新建包com.cc.wechat.message,在里面写好对应的类,为了方便测试,具体定义的类与上面的内容会有所差别。

1.从上面内容看出,所有的消息都包括:ToUserName,FromUserName,CreateTime,MsgType,MsgId,所以把相同的变量封装成一个类 :

---CommonMessage:

package com.cc.wechat.message;

/**
 * 所处理的内容都相同的部分,包括
 * ToUserName 接收方微信号
 * FromUserName 发送方微信号,若为普通用户,则是一个OpenID
 * CreateTime 消息创建时间
 * MsgType 消息类型
 * MsgId 消息id 64位整型 
 * @author ICHN
 *
 */
public class CommonMessage {
    //接收方微信号名称
    private String ToUserName;
    
    //发送方微信号名称
    private String FromUserName;
    
    //消息创建时间
    private long CreateTime;
    
    //消息类型
    private String MsgType;
    
    //消息id 64位整型 
    private long MsgId;

    public String getToUserName() {
        return ToUserName;
    }

    public void setToUserName(String toUserName) {
        ToUserName = toUserName;
    }

    public String getFromUserName() {
        return FromUserName;
    }

    public void setFromUserName(String fromUserName) {
        FromUserName = fromUserName;
    }

    public long getCreateTime() {
        return CreateTime;
    }

    public void setCreateTime(long createTime) {
        CreateTime = createTime;
    }

    public String getMsgType() {
        return MsgType;
    }

    public void setMsgType(String msgType) {
        MsgType = msgType;
    }

    public long getMsgId() {
        return MsgId;
    }

    public void setMsgId(long msgId) {
        MsgId = msgId;
    }
}

2.文本消息:

---TextMessage:

package com.cc.wechat.message;

/**
 * 文本消息
 * @author ICHN
 *
 */
public class TextMeaasge extends CommonMessage {

    //Content 文本消息内容
    private String Content;

    public String getContent() {
        return Content;
    }

    public void setContent(String content) {
        Content = content;
    }
}

3.图文消息(包括Article 和 NewsMessage两部分):

注:图片和视频消息合并写在一起。

---Article:

package com.cc.wechat.message;

/**
 * 图文消息
 * @author ICHN
 *
 */
public class Article {
    //图文标题
    private String Title;
    
    //相关描述
    private String Description;
    
    //图片链接
    private String PicUrl;
    
    //图文跳转地址
    private String Url;

    public String getTitle() {
        return Title;
    }

    public void setTitle(String title) {
        Title = title;
    }

    public String getDescription() {
        //如果没有描述内容
        if(Description == null) {
            return "";
        }
        return Description;
    }

    public void setDescription(String description) {
        Description = description;
    }

    public String getPicUrl() {
        //如果没有链接
        if(null == PicUrl) {
            return "";
        }
        return PicUrl;
    }

    public void setPicUrl(String picUrl) {
        PicUrl = picUrl;
    }

    public String getUrl() {
        //如果没有链接
        if(null == Url) {
            return "";
        }
        return Url;
    }

    public void setUrl(String url) {
        Url = url;
    }
}

---NewsMessgae:

package com.cc.wechat.message;

import java.util.List;

/**
 * 图文消息
 * @author ICHN
 *
 */
public class NewsMessage extends CommonMessage {
    
    //统计图文的条数
    private int ArticleCount;
    
    //用一个List来装多条图文消息
    private List<Article> Artilces;

    public int getArticleCount() {
        return ArticleCount;
    }

    public void setArticleCount(int articleCount) {
        ArticleCount = articleCount;
    }

    public List<Article> getArtilces() {
        return Artilces;
    }

    public void setArtilces(List<Article> artilces) {
        Artilces = artilces;
    }
}

4.语音消息(包括Voice和 VoiceMessage两部分):

---Voice:

package com.cc.wechat.message;

/**
 * 语音消息
 * @author ICHN
 *
 */
public class Voice extends CommonMessage{

    //MediaId 图片消息媒体id,可以调用多媒体文件下载接口拉取数据
    private String MediaId;

    public String getMediaId() {
        return MediaId;
    }

    public void setMediaId(String mediaId) {
        MediaId = mediaId;
    }
}

---VoiceMessage:

package com.cc.wechat.message;

/**
 * 语音消息管理
 * @author ICHN
 *
 */
public class VoiceMessage extends CommonMessage {
    
    //Voice类
    private Voice voice;

    public Voice getVoice() {
        return voice;
    }

    public void setVoice(Voice voice) {
        this.voice = voice;
    }
}

5.音乐消息(包括Music和 MusicMessage两部分):

---Music:

package com.cc.wechat.message;

/**
 * 音乐信息
 * @author ICHN
 *
 */
public class Music {
    
    //音乐标题
    private String Title;
    
    //描述
    private String Description;
    
    //音乐链接
    private String MusicUrl;
    
    //wifi下优先音乐链接(高品质)
    private String HQMusicUrl;

    public String getTitle() {
        return Title;
    }

    public void setTitle(String title) {
        Title = title;
    }

    public String getDescription() {
        //如果没有描述
        if(null == Description) {
            return "";
        }
        return Description;
    }

    public void setDescription(String description) {
        Description = description;
    }

    public String getMusicUrl() {
        return MusicUrl;
    }

    public void setMusicUrl(String musicUrl) {
        MusicUrl = musicUrl;
    }

    public String getHQMusicUrl() {
        return HQMusicUrl;
    }

    public void setHQMusicUrl(String musicUrl) {
        HQMusicUrl = musicUrl;
    }
}

---MusicMessage:

package com.cc.wechat.message;

/**
 * 音乐信息管理
 * @author ICHN
 *
 */
public class MusicMessage extends CommonMessage {

    //音乐类封装
    private Music Music;

    public Music getMusic() {
        return Music;
    }

    public void setMusic(Music music) {
        Music = music;
    }
}

相关类基本建好(如果需要再另行增添)。

具体处理流程接下一篇文章: 微信公众平台开发之处理普通消息---2

时间: 2024-10-25 17:27:47

微信公众平台开发之处理普通消息---1的相关文章

微信公众平台开发之处理普通消息---2

(接上一篇文章:微信公众平台开发之处理普通消息---1) 本章节主要讲述对普通消息的处理. 当用户关注微信公众号时,取消关注时,给公众号发各种信息时,作出简单的响应(处理). 一.在com.cc.wechat.util包下新建工具类: ---MessageUtil: 对xml解析需要用到两个工具包: 1 xstream.jar 点击下载 2 dom4j.jar 点击下载 package com.cc.wechat.util; import java.io.IOException; import 

微信公众平台开发(十) 消息回复总结——用其xml模板

一.简介 微信公众平台提供了三种消息回复的格式,即文本回复.音乐回复和图文回复,在这一篇文章中,我们将对这三种消息回复的格式做一下简单讲解,然后封装成函数,以供读者使用. 二.思路分析 对于每一个POST请求,开发者在响应包中返回特定xml结构,对该消息进行响应(现支持回复文本.图文.语音.视频.音乐). 三.文本回复 3.1 文本回复xml 结构 <xml> <ToUserName><![CDATA[toUser]]></ToUserName> <F

微信公众平台开发(2)-消息封装

微信公众平台开发(2)-消息处理 消息包括文本.图片.语音.视频.音乐.图文,消息格式参考http://mp.weixin.qq.com/wiki/index.php?title=发送被动响应消息 在接入接口时指定了回调URL,在保存时微信会以GET方式调用此URL,并将signature,timestamp,nonce,echostr添加到URL上 因此在我们的微信处理的Controller中需要有执行上面URL的GET方法. 那么,发送和接收消息怎么来实现呢? 这个是通过以POST方式调用上

微信公众平台开发(26) 消息回复总结

原文: http://www.cnblogs.com/imaker/p/5491433.html 一.简介 微信公众平台提供了三种消息回复的格式,即文本回复.音乐回复和图文回复,在这一篇文章中,我们将对这三种消息回复的格式做一下简单讲解,然后封装成函数,以供读者使用. 二.思路分析 对于每一个POST请求,开发者在响应包中返回特定xml结构,对该消息进行响应(现支持回复文本.图文.语音.视频.音乐). 三.文本回复 3.1 文本回复xml 结构 <xml> <ToUserName>

第三篇 :微信公众平台开发实战之请求消息,响应消息以及事件消息类的封装

微信服务器和第三方服务器之间究竟是通过什么方式进行对话的? 下面,我们先看下图: 其实我们可以简单的理解: (1)首先,用户向微信服务器发送消息: (2)微信服务器接收到用户的消息处理之后,通过开发者配置的URL和Token 来找到第三方服务器,并以XML形式向第三方服务器发送消息. (3)第三方服务器获取这些消息之后,需要按照微信服务器传过来的XML的语言进行解析,获取到信息之后,根据用户的需求,提供服务,然后封装成XML数据,传回到微信服务器上去. (4)微信服务器解析这些XML,并把相应的

cgi程序读取post发送的特殊字符,尤其适合于微信公众平台开发中发送被动消息

[问题]用c编写cgi程序怎样取出html表单post来的数据? [分析]html表单post来的数据形如username="zhang"&&password="123456"&&useid="012" [方法1]lainco #include <stdio.h> #include <stdlib.h> #include <string.h> char *getcgidata(F

第四篇 :微信公众平台开发实战Java版之完成消息接受与相应以及消息的处理

温馨提示: 这篇文章是依赖前几篇的文章的. 第一篇:微信公众平台开发实战之了解微信公众平台基础知识以及资料准备 第二篇 :微信公众平台开发实战之开启开发者模式,接入微信公众平台开发 第三篇 :微信公众平台开发实战之请求消息,响应消息以及事件消息类的封装 首先,我们看看原来写的dopost方法: /** * 处理微信服务器发来的消息 */ public void doPost(HttpServletRequest request, HttpServletResponse response) thr

微信公众平台开发入门教程

在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/JS等基础. 我们将使用微信公众账号方倍工作室作为讲解的例子,二维码见底部. 本系列教程将引导你完成如下任务: 创建新浪云计算平台应用 启用微信公众平台开发模式 基础接口消息及事件 微信公众平台PHP SDK 微信公众平台开发模式原理 开发天气预报功能 第一章 申请服务器资源 创建新浪云计算应用 申请账号 我们使用SAE新浪云计算平台作为服务器资源,并且申请PHP环境+M

微信公众平台开发(学习)1

在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/JS等基础. 我们将使用微信公众账号方倍工作室作为讲解的例子,二维码见底部. 本系列教程将引导你完成如下任务: 创建新浪云计算平台应用 启用微信公众平台开发模式 基础接口消息及事件 微信公众平台PHP SDK 微信公众平台开发模式原理 开发天气预报功能 第一章 申请服务器资源 创建新浪云计算应用 申请账号 我们使用SAE新浪云计算平台作为服务器资源,并且申请PHP环境+M