如需測試,需要去微信企業號官網申請試用賬號。其中發送文本消息和圖文消息都是沒有問題。
我們知道,企業號主要是面向企業需求而生的,因此內部消息的交流顯得非常重要,而且發送、回覆消息數量應該很可觀,對於大企業尤其如此,因此可以結合企業號實現內部消息的交流。企業號具有關注安全、消息無限制等特點,很適合企業內部的環境。
目標:企業號實現文本、圖文消息等消息的發送操作。
注意事項:1、參考官方文檔,確保有相應的權限進行操作
2、注意所有文字長度是字節,不是字數
3、截至寫稿爲止,疼訊可發送消息的實際數量是企業號用戶數*30,自己可以看文檔:http://qydev.weixin.qq.com/wiki/index.php?title=%E5%8F%91%E6%B6%88%E6%81%AF
注2:圖文可以用自己網站來代替疼訊保存,而其他媒體信息需要上傳到疼訊服務器,其限制如下:
臨時素材文件:(media_id)會在上傳到微信服務器3天后自動刪除。
永久素材文件:(media_id)會一直保存在微信服務器上,但是對企業能夠保存的永久素材數量有所限制: 整個企業圖文消息素材和圖片素材數目的上限爲5000,其他類型爲1000.
本人根據實際業務具體需求,採用自己服務器來保存圖文消息,下面類只需要傳給疼訊一個URL鏈接即可。
你肯定會問我,那視頻怎麼辦?
這種有兩種方法解決:
1、上傳到疼訊視頻,然後把視頻有個通用訪問鏈接保存到數據庫裏面,然後通過servlet之類的技術拼合然後輸出成HTML完整頁面,把這個servlet訪問鏈接給用戶即可。
2、自己服務器保存視頻,然後做個通用視頻播放模板JSP(HTML5播放視頻的網頁一堆堆),把訪問視頻JSP的鏈接給用戶即可。
package com.nsjs;
import com.fastwixinextend.QYAPIConfigExt;
import com.github.sd4324530.fastweixin.QYFastweixinTest;
import com.github.sd4324530.fastweixin.company.api.QYMessageAPI;
import com.github.sd4324530.fastweixin.company.api.config.QYAPIConfig;
import com.github.sd4324530.fastweixin.company.api.response.GetQYSendMessageResponse;
import com.github.sd4324530.fastweixin.company.message.QYArticle;
import com.github.sd4324530.fastweixin.company.message.QYNewsMsg;
import com.github.sd4324530.fastweixin.company.message.QYTextMsg;
import com.github.sd4324530.fastweixin.util.CollectionUtil;
import com.github.sd4324530.fastweixin.util.JSONUtil;
import java.util.ArrayList;
import java.util.List;
public class SendMessage {
public SendMessage() {
super();
}
public QYAPIConfigExt config = null;
public QYAPIConfigExt initConfig() {
if (config == null) {
config
= new QYAPIConfigExt(MainServernSupport.getCropId(), MainServernSupport.getAPPSecret(),
"luozhuang",
System.currentTimeMillis());
}
return config;
}
public QYAPIConfigExt initConfig(String CropId, String APPSecret,
String AccessToken,
long AccessTokenTime) {
QYAPIConfigExt config;
config
= new QYAPIConfigExt(CropId, APPSecret, AccessToken, AccessTokenTime);
return config;
}
/**
* @param Text 要發送文本內容
* @param WeixinIDList 成員IDlist
* 成員ID列表(消息接收者,多個接收者用‘|’分隔,最多支持1000個)。特殊情況:指定爲@all,則向關注該企業應用的全部成員發送
* @param AgentID 應用ID號
* @return
*/
public String sendMessage(String Text, String User,
String AgentID) {
QYTextMsg qyTextMsg = new QYTextMsg();
qyTextMsg.setText(new QYTextMsg.Text(Text));
qyTextMsg.setToUser(User);
qyTextMsg.setAgentId(AgentID);
QYMessageAPI messageAPI = new QYMessageAPI(initConfig());
GetQYSendMessageResponse response = messageAPI.send(qyTextMsg);
return response.getErrmsg();
}
/**
* @param Text 要發送文本內容
* @param User 成員IDlist
* 成員ID列表(消息接收者,多個接收者用‘|’分隔,最多支持1000個)。特殊情況:指定爲@all,則向關注該企業應用的全部成員發送
* @param ZZBM
* @param AgentID 應用ID號
* @return
*/
public String sendMessage(String Text, String User, String ZZBM,
String AgentID) {
QYTextMsg qyTextMsg = new QYTextMsg();
qyTextMsg.setText(new QYTextMsg.Text(Text));
qyTextMsg.setToUser(User);
qyTextMsg.setToParty(ZZBM);
qyTextMsg.setAgentId(AgentID);
QYMessageAPI messageAPI = new QYMessageAPI(initConfig());
GetQYSendMessageResponse response = messageAPI.send(qyTextMsg);
return response.getErrmsg();
}
/**
* User 和ZZBM必須選一個,需要注意的是ZZBM包括下屬所有子部門,所以建議不是羣發時候,不要使用ZZBM,只指定User
*
* @param User
* 成員ID列表(消息接收者,多個接收者用‘|’分隔,最多支持1000個)。特殊情況:指定爲@all,則向關注該企業應用的全部成員發送
* @param ZZBM 部門ID列表,多個接收者用‘|’分隔,最多支持100個。當touser爲@all時忽略本參數
* @param agentid 應用ID號
* @param title 標題
* @param description 描述
* @param url 點擊後跳轉的鏈接。
* @param picurl 圖文消息的圖片鏈接,支持JPG、PNG格式,較好的效果爲大圖640*320,小圖80*80。如不填,在客戶端不顯示圖片
* @return
*/
public String sendNewsMessage(String User, String ZZBM, String agentid, String[] title,
String[] description, String[] url,
String[] picurl) {
QYNewsMsg msg = new QYNewsMsg();
msg.setToUser(User);
msg.setToParty(ZZBM);
msg.setMsgType("news");
msg.setAgentId(agentid);
List<QYArticle> articleist = new ArrayList<QYArticle>();
for (int i = 0; i < title.length; i++) {
QYArticle article
= new QYArticle(title[i], description[i], picurl[i], url[i]);
articleist.add(article);
}
msg.setArticles(articleist);
QYMessageAPI messageAPI = new QYMessageAPI(initConfig());
GetQYSendMessageResponse response = messageAPI.send(msg);
System.out.println(JSONUtil.toJson(msg));
return response.getErrmsg();
}
/**
* User 和ZZBM必須選一個,需要注意的是ZZBM包括下屬所有子部門,所以建議不是羣發時候,不要使用ZZBM,只指定User
*
* @param User
* 成員ID列表(消息接收者,多個接收者用‘|’分隔,最多支持1000個)。特殊情況:指定爲@all,則向關注該企業應用的全部成員發送
* @param agentid 應用ID號
* @param title 標題
* @param description 描述
* @param url 點擊後跳轉的鏈接。
* @param picurl 圖文消息的圖片鏈接,支持JPG、PNG格式,較好的效果爲大圖640*320,小圖80*80。如不填,在客戶端不顯示圖片
* @return
*/
public String sendNewsMessage(String User, String agentid, String[] title,
String[] description, String[] url,
String[] picurl) {
QYNewsMsg msg = new QYNewsMsg();
msg.setToUser(User);
msg.setMsgType("news");
msg.setAgentId(agentid);
List<QYArticle> articleist = new ArrayList<QYArticle>();
for (int i = 0; i < title.length; i++) {
QYArticle article
= new QYArticle(title[i], description[i], picurl[i], url[i]);
articleist.add(article);
}
msg.setArticles(articleist);
QYMessageAPI messageAPI = new QYMessageAPI(initConfig());
GetQYSendMessageResponse response = messageAPI.send(msg);
System.out.println(JSONUtil.toJson(msg));
return response.getErrmsg();
}
public static void main(String[] arg) {
SendMessage message = new SendMessage();
message.sendNewsMessage("大師羅莊", "1", MainServernSupport.getAgentID(), new String[]{"大師羅莊博客"}, new String[]{"大師羅莊博客"}, new String[]{"http://blog.csdn.net/luozhuang"}, new String[]{"http://avatar.csdn.net/B/F/A/1_luozhuang.jpg"});
}
}