[本文所描述的内容具有一定的时效性,请以实际开发所处环境为准]
今天我们介绍我们日常使用最频繁的发送消息功能,在企业号中,由于移除了诸多的限制,消息的发送量几乎没有限制。但是,在此,特别提醒大家,千万不要写个循环发消息测试,这么做很有可能让微信后台认为你的服务器收到攻击,而主动的拒绝你再调用微信功能接口。
-------------------------------------------------------------------------------------------------------------------------------------
正文开始:
1.首先我们来看看官方文档对发送接口的说明:
2.有了接口之后,我们来看看如何封装JSON数据,在此,我们就不再截官方文档的图,就以text消息为例说明最基本的文本类型消息来说明数据封装函数的写法。具体如下:
/**
* text消息
* @param touser UserID列表(消息接收者,多个接收者用‘|’分隔)。特殊情况:指定为@all,则向关注该企业应用的全部成员发送————"touser": "UserID1|UserID2|UserID3"
* @param toparty PartyID列表,多个接受者用‘|’分隔。当touser为@all时忽略本参数————"toparty": " PartyID1 | PartyID2 "
* @param totag TagID列表,多个接受者用‘|’分隔。当touser为@all时忽略本参数————"totag": " TagID1 | TagID2 "
* @param msgtype 消息类型,此时固定为:text
* @param agentid 企业应用的id,整型。可在应用的设置页面查看
* @param content 消息内容
* @param safe 表示是否是保密消息,0表示否,1表示是,默认0
* */
public static String STextMsg(String touser,String toparty,String totag,String agentid,String content){
String PostData = "{\"touser\": %s,\"toparty\": %s,\"totag\": %s,\"msgtype\": \"text\",\"agentid\": %s,\"text\": {\"content\": \"%s\"},\"safe\":\"0\"}";
return String.format(PostData, touser,toparty,totag,agentid,content);
}
3.上述的这种普通消息的发送方式大家可以参照微信企业号开发(4)--管理通讯录(部门)的实现。原理基本一致。
4.在这里我们来说另一个常用的消息形式:图文消息。
a.首先要给大家看看官方文档的截图内容。
b.在上面的JSON格式的数据示例中,我们发现存在JSON嵌套。这里,我们推荐给大家的做法是,将消息声明为JAVA对象。这样做的好处是,在使用时减少多层嵌套容易出现的格式组装错误等。大家可以参考下面的代码实现。
我们给出图文消息的示例代码,如下:
Article.java
public class Article {
private String Title;
private String Description;
private String picurl;
private String url;
}//省略set/get函数
public String dfNews(String title,String desc,String picurl,String url){
Article article = new Article();
article.setTitle(title);
article.setDescription(desc);
article.setPicurl(picurl);
article.setUrl(url);
list.add(article);//博主外部定义的一个list,读者可以自定义个list存放article对象
String articlesList = JSONArray.fromObject(list).toString();
return articlesList;
}
public static String SNewsMsg(String touser,String toparty,String totag,String agentid , String articlesList){
String postData = "{\"touser\": %s,\"toparty\": %s,\"totag\": %s,\"msgtype\": \"news\",\"agentid\": %s,\"news\": {\"articles\":%s}}";
return String.format(postData, touser,toparty,totag,agentid,articlesList);
}
d.最后,我们还是需要使用前文中的发送函数HttpRequest.java方法,将封装好的数据发送到微信后台,之后,我们就可以在移动端看到我们所发出的图文消息内容了。
----------------------------------------------------------------------------------------------------------------------------------------------------
至此,微信企业号开发(6)--发送消息结束
参考资料:
[1]微信公众平台开发者文档:http://mp.weixin.qq.com/wiki/home/index.html
[2]企业号开发者接口文档:http://qydev.weixin.qq.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5