热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java推送框架_微信公众号开发基于WxJava(微信开发JavaSDK)框架的,客服消息推送实现...

主动发送客服消息,示例:客服消息、图文消息图文消息1WxMpKefuMessage.WxArticlearticle1newWxMpKefuMessag

主动发送客服消息,示例:

// 客服消息、图文消息

// 图文消息1

WxMpKefuMessage.WxArticle article1 = new WxMpKefuMessage.WxArticle();

article1.setUrl("http://xial9527.w3.luyouxia.net/wx/jsp/login.html");

article1.setPicUrl("http://test.iwocloud.com/wx/images/index_bg.png");

article1.setDescription("今天天气很好,适合出去玩");

article1.setTitle("测试测试测试一下啦啦啦");

// 图文消息2

WxMpKefuMessage.WxArticle article2 = new WxMpKefuMessage.WxArticle();

article2.setUrl("http://xial9527.w3.luyouxia.net/wx/index?code=1YF00137");

article2.setPicUrl("http://test.iwocloud.com/wx/images/index_bg.png");

article2.setDescription("晚上去吃火锅吧,逛超市");

article2.setTitle("今日安排");

// 封装 xml

WxMpKefuMessage wxMpKefuMessage = WxMpKefuMessage.NEWS()

.toUser("otAIM6PimOuARRXXTWcloLL-XLU0")

.addArticle(article1)

//.addArticle(article2)

.build();

// 发送给指定openid

wxMpService.getKefuService().sendKefuMessage(wxMpKefuMessage);

MP_主动发送消息(客服消息)

更多用例,请参考me.chanjar.weixin.mp.api.impl.WxMpKefuServiceImplTest,用例连接:https://github.com/Wechat-Group/WxJava/blob/master/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpKefuServiceImplTest.java

WxMpKefuMessage message = ...;

// 设置消息的内容等信息

wxMpService.getKefuService().sendKefuMessage(message);

WxXmlOutTextMessage

不同类型的客服消息有不同的构造方法:

文本消息

WxMpKefuMessage

.TEXT()

.toUser("OPENID")

.content("sfsfdsdf")

.build();

图片消息

WxMpKefuMessage

.IMAGE()

.toUser("OPENID")

.mediaId("MEDIA_ID")

.build();

语音消息

WxMpKefuMessage.VOICE()

.toUser("OPENID")

.mediaId("MEDIA_ID")

.build();

视频消息

WxMpKefuMessage.VIDEO()

.toUser("OPENID")

.title("TITLE")

.mediaId("MEDIA_ID")

.thumbMediaId("MEDIA_ID")

.description("DESCRIPTION")

.build();

音乐消息

WxMpKefuMessage.MUSIC()

.toUser("OPENID")

.title("TITLE")

.thumbMediaId("MEDIA_ID")

.description("DESCRIPTION")

.musicUrl("MUSIC_URL")

.hqMusicUrl("HQ_MUSIC_URL")

.build();

图文消息

WxMpKefuMessage.WxArticle article1 = new WxMpKefuMessage.WxArticle();

article1.setUrl("URL");

article1.setPicUrl("PIC_URL");

article1.setDescription("Is Really A Happy Day");

article1.setTitle("Happy Day");

WxMpKefuMessage.WxArticle article2 = new WxMpKefuMessage.WxArticle();

article2.setUrl("URL");

article2.setPicUrl("PIC_URL");

article2.setDescription("Is Really A Happy Day");

article2.setTitle("Happy Day");

WxMpKefuMessage.NEWS()

.toUser("OPENID")

.addArticle(article1)

.addArticle(article2)

.build();

参考文档地址:

微信官方文档(客服消息):https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Service_Center_messages.html

WxJava (微信开发 Java SDK)框架文档:

https://github.com/Wechat-Group/WxJava/wiki/MP_%E4%B8%BB%E5%8A%A8%E5%8F%91%E9%80%81%E6%B6%88%E6%81%AF%EF%BC%88%E5%AE%A2%E6%9C%8D%E6%B6%88%E6%81%AF%EF%BC%89

完!!!

示例:

/**

* 图文消息推送(客服消息推送)

*

* @param req

* @param resp

* @return

* @throws Exception

*/

@RequestMapping(value = "/notifyPreferential.api")

@ResponseBody

public MapnotifyPreferential(HttpServletRequest req, HttpServletResponse resp) {

wxMpService.setMaxRetryTimes(1);

// 获取用户手机号、密码、action

String phone = (String) req.getParameter("tellphone");

String openid = (String) req.getParameter("openid");

String title = (String) req.getParameter("title");

String desc = (String) req.getParameter("desc");

String picUrl = (String) req.getParameter("picUrl");

String status = (String) req.getParameter("status");

String startTime = (String) req.getParameter("startTime");

String endTime = (String) req.getParameter("endTime");

logger.info("收到服务器图文消息推送:请求参数为" + phone + "," + openid + "," + title + "," + picUrl + "," + status);

try { /*

// 客服消息、图文消息

// 图文消息1

WxMpKefuMessage.WxArticle article1 = new WxMpKefuMessage.WxArticle();

article1.setUrl("http://xial9527.w3.luyouxia.net/wx/jsp/login.html");

article1.setPicUrl("http://test.iwocloud.com/wx/images/index_bg.png");

article1.setDescription("今天天气很好,适合出去玩");

article1.setTitle("测试测试测试一下啦啦啦");

// 图文消息2

WxMpKefuMessage.WxArticle article2 = new WxMpKefuMessage.WxArticle();

article2.setUrl("http://xial9527.w3.luyouxia.net/wx/index?code=1YF00137");

article2.setPicUrl("http://test.iwocloud.com/wx/images/index_bg.png");

article2.setDescription("晚上去吃火锅吧,逛超市");

article2.setTitle("今日安排");

// 封装 xml

WxMpKefuMessage wxMpKefuMessage = WxMpKefuMessage.NEWS()

.toUser("otAIM6PimOuARRXXTWcloLL-XLU0")

.addArticle(article1)

//.addArticle(article2)

.build();

// 发送给指定openid

wxMpService.getKefuService().sendKefuMessage(wxMpKefuMessage); */

InputStream inputStream = null;

HttpURLConnection conn = (HttpURLConnection) new URL("http://test.iwocloud.com/wx/images/index_bg.png").openConnection();

conn.setReadTimeout(5000);

conn.setConnectTimeout(5000);

conn.setRequestMethod("GET");

if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {

inputStream = conn.getInputStream();

}

/*

String path = this.getClass().getResource("/").getPath();

path = path.substring(0, path.indexOf("WEB-INF")) + "images/index_bg.png";

logger.info(path);

inputStream = new FileInputStream(new File(path)); */

// 上传图文消息的封面图片

WxMediaUploadResult uploadMediaRes = wxMpService.getMaterialService().mediaUpload(WxConsts.MediaFileType.IMAGE, "png", inputStream);

WxMpMassNews news = new WxMpMassNews();

WxMpMassNews.WxMpMassNewsArticle article1 = new WxMpMassNews.WxMpMassNewsArticle();

article1.setTitle("标题1");

article1.setContent("内容1");

article1.setThumbMediaId(uploadMediaRes.getMediaId());

//article1.setThumbMediaId("67MYWryQ20BhSCeG8DPavcpHubxbjk9OPBlDJpkywXJi16kec7Pjs7Ul-H8ubN3T");

news.addArticle(article1);

WxMpMassNews.WxMpMassNewsArticle article2 = new WxMpMassNews.WxMpMassNewsArticle();

article2.setTitle("标题2");

article2.setContent("内容2");

article2.setThumbMediaId(uploadMediaRes.getMediaId());

//article2.setThumbMediaId("67MYWryQ20BhSCeG8DPavcpHubxbjk9OPBlDJpkywXJi16kec7Pjs7Ul-H8ubN3T");

article2.setShowCoverPic(true);

article2.setAuthor("作者2");

article2.setContentSourceUrl("www.baidu.com");

article2.setDigest("摘要2");

news.addArticle(article2);

WxMpMassUploadResult massUploadResult = wxMpService.getMassMessageService().massNewsUpload(news);

WxMpMassOpenIdsMessage massMessage = new WxMpMassOpenIdsMessage();

massMessage.setMsgType(WxConsts.MassMsgType.MPNEWS);

massMessage.setMediaId(massUploadResult.getMediaId());

//massMessage.setMediaId("67MYWryQ20BhSCeG8DPavcpHubxbjk9OPBlDJpkywXJi16kec7Pjs7Ul-H8ubN3T");

massMessage.getToUsers().add("otAIM6PimOuARRXXTWcloLL-XLU0");

massMessage.getToUsers().add("otAIM6OlscpCu4PSFb8dSM0jwIxE");

WxMpMassSendResult massResult = wxMpService.getMassMessageService().massOpenIdsMessageSend(massMessage);

} catch (Exception e) {

logger.error(e.getMessage());

}

// 封装返回结果

MapreturnMap = new HashMap();

returnMap.put(GlobalDeclare.RETURN_CODE, 0);

returnMap.put(GlobalDeclare.RETURN_MSG, "success");

returnMap.put(GlobalDeclare.RETURN_DATA, "{}");

return returnMap;

}



推荐阅读
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • intellij idea的安装与使用(保姆级教程)
    intellijidea的安装与使用(保姆级教程)IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(gi ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 本文介绍了一些Java开发项目管理工具及其配置教程,包括团队协同工具worktil,版本管理工具GitLab,自动化构建工具Jenkins,项目管理工具Maven和Maven私服Nexus,以及Mybatis的安装和代码自动生成工具。提供了相关链接供读者参考。 ... [详细]
author-avatar
wyyxit
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有