微信小程序客服消息推送接入

这两天弄一个客服的消息推送,这里必须吐槽一下,按我以往接微信的东西的感觉这块估计也要踩坑的,而且众所周知微信的文档很坑的也乱。(吐槽一下)

小程序的配置设置:

URL(服务器地址):这个地址有三个作用

1.提供微信验证服务器地址的有效性(添加消息推送配置时,这个地址必须有效)

2.验证消息的确来自微信服务器(校验signature)

3.接收消息和事件(接收用户消息和事件处理)

这里我又要吐槽一下了,微信文档的案例全部都是php的,就这么懒么?对java这么不友好。嗐

直接上代码吧

@RequestMapping(value = "/check/signature", method = {RequestMethod.POST, RequestMethod.GET}, produces = APPLICATION_JSON_UTF8_VALUE)private void checkSignature(HttpServletRequest request, HttpServletResponse response) {boolean isGet = request.getMethod().toLowerCase().equals("get");logger.info("请求方式:{}", isGet);PrintWriter out = null;if (isGet) {//接收微信token校验logger.info("接收微信token校验");String signature = request.getParameter("signature");String timestamp = request.getParameter("timestamp");String nonce = request.getParameter("nonce");String echostr = request.getParameter("echostr");try {out = response.getWriter();// 通过检验signature对请求进行校验,若校验成功则原样返回echostr,否则接入失败if (weixinService.checkSignature(signature, timestamp, nonce)) {out.print(echostr);out.flush();} else {out.print("");out.flush();}} catch (IOException e) {e.printStackTrace();} finally {out.close();}} else {//接收到微信发送消息请求logger.info("接收到微信发送消息请求");try {out = response.getWriter();ServletInputStream inputStream = request.getInputStream();BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));StringBuffer stringBuffer = new StringBuffer();String line = new String("");while ((line = bufferedReader.readLine()) != null) {stringBuffer.append(line);}JSONObject jsonObject = JSON.parseObject(stringBuffer.toString());WxCustomerCallBackRequestDTO callBackRequestDTO = JSONObject.parseObject(JSON.toJSONString(jsonObject), WxCustomerCallBackRequestDTO.class);String msgType = callBackRequestDTO.getMsgType();//用户的消息类型String appId = callBackRequestDTO.getAppId();//这里处理不同消息的事件实现自己的业务即可,我这里直接全部事件统一处理了。if ("text".equals(msgType)|| "image".equals(msgType)|| "miniprogrampage".equals(msgType)|| "link".equals(msgType)) {String openId = callBackRequestDTO.getFromUserName();if (StringUtils.isBlank(appId)) {String appIdKey = WECHAT_TOKEN + "-" + openId;appId = (String) redisCacheUtil.getCacheObject(appIdKey);}WxMessageCustomSendRequestDTO wxMessageCustomSendTextRequestDTO = new WxMessageCustomSendRequestDTO();wxMessageCustomSendTextRequestDTO.setAppId(appId);wxMessageCustomSendTextRequestDTO.setMsgtype("text");wxMessageCustomSendTextRequestDTO.setTouser(openId);TextDTO textDTO = new TextDTO();textDTO.setContent("请添加客户经理企业微信为你服务");wxMessageCustomSendTextRequestDTO.setText(textDTO);logger.info("推送的消息:{}", JSON.toJSONString(wxMessageCustomSendTextRequestDTO));//推送一条文本消息给用户WxMessageCustomSendResponseDTO responseTextDTO = weixinService.messageCustomSend(wxMessageCustomSendTextRequestDTO);String mediaId = (String) redisCacheUtil.getCacheObject(openId);WxMessageCustomSendRequestDTO wxMessageCustomSendRequestDTO = new WxMessageCustomSendRequestDTO();wxMessageCustomSendRequestDTO.setAppId(appId);wxMessageCustomSendRequestDTO.setMsgtype("image");wxMessageCustomSendRequestDTO.setTouser(openId);ImageDTO imageDTO = new ImageDTO();imageDTO.setMedia_id(mediaId);wxMessageCustomSendRequestDTO.setImage(imageDTO);//推送一张图片给用户WxMessageCustomSendResponseDTO responseImageDTO = weixinService.messageCustomSend(wxMessageCustomSendRequestDTO);if (!"0".equals(responseImageDTO.getErrcode())) {logger.error("发送客服消息接口返回失败!");out.print("");out.flush();} else {out.print("success");out.flush();}} else {out.print("success");out.flush();}} catch (IOException e) {e.printStackTrace();} finally {out.close();}}}

推送消息的接口和获取assecc_token按微信文档封装即可。

踩坑的点就是这里,一开始我是直接:return “success”,发现不行的。
ios会一直提示:该小程序提供的服务出现故障,请稍后再试。"


最后响应正常了。

接入微信小程序客服消息推送相关推荐

  1. 小程序客服消息推送公众号文章 引导关注公众号的操作方法

    大家一定有遇到过类似的情况,一些小程序引导关注公众号的方法.那就是让客户点击在线客服,然后在线客服里主动推送一篇文章,也就是公众号的文章,客户点击这个文章可以一键关注公众号.这种是怎么做到的呢? 这个 ...

  2. 小程序客服消息推送自动回复_如何让小程序客服消息根据用户输入关键词自动回复图片?...

    众所周知, 运营小程序的时候, 最方便和粉丝互动的地方就是小程序里面的客服消息了. 然而, 绝大部分人仅靠官方的功能, 有很大的局限性! 量多了处理不过来 分配客服坐席处理, 需要更多人工投入 即时投 ...

  3. 使用微信小程序客服消息上的一些注意事项!小程序客服消息按钮,接入及消息接收

    本文分为四部分,为大家介绍一下,小程序客服消息上的一些解决方案 1.增加小程序客服按钮 2.实现客服会话(绑定客服人员,消息推送配置) 3.如何实现小程序客服智能消息(自动回复等) 4.用手机回复小程 ...

  4. 微信小程序客服消息(带流程图)

    微信小程序客服消息 功能介绍 调用客服消息接口发送客服消息 填写消息推送配置 网页版客服工具与移动端小程序客服工具 使用说明(后台接入消息服务) 一.在页面使用客服消息 二.后台接入消息服务 三.接收 ...

  5. 微信小程序客服消息授权给第三方Udesk

    微信小程序客服消息授权给第三方Udesk 一.必须是微信认证过的微信小程序 登录微信小程序后台-设置-基本设置 链接:https://mp.weixin.qq.com/ 下面有一栏:微信认证(看是否认 ...

  6. 免费的微信小程序客服消息自定义关键词自动回复管理系统

    源码名称:微信小程序客服消息自定义关键词回复管理系统 框架版本:laravel5.8,和thinkphp类似的框架,会thinkphp就会laravel. 适用范围:二次开发,独立部署,客服自动回复 ...

  7. 微信小程序客服消息使用指南

    功能介绍 用户可使用小程序客服消息功能,与小程序的客服人员进行沟通. 客服消息会话入口有两个: 1.小程序内:开发者在小程序内添加客服消息按钮组件https://developers.weixin.q ...

  8. 微信小程序客服消息实现

    是不是常遇到如下问题: 小程序客服消息需要登陆管理扫描登陆公众号后台很麻烦,还会漏看客户消息 那怎么办呢?这篇教程介绍解决此问题. 不再需要登录微信后台,自己实现一套微信客服系统. 效果是这样:咨询用 ...

  9. 微信小程序客服消息之解决方案

    小程序自公开发布起就有消息推送功能,但由于张小龙对于微信小程序的定义为极简的生活方式,所以为了避免小程序发送过多的推送消息骚扰用户对于小程序消息推送制定了许多的规则和限制. 一.小程序客服消息的意义: ...

最新文章

  1. Java举例include_Java StringUtils.getFilenameExtension方法代码示例
  2. 开源的 Snort 入侵检测系统中存在高危漏洞
  3. python中堆排序_Python实现堆排序的方法详解
  4. 表妹即将去读研,我送了她11个建议
  5. leetcode 21 合并两个有序链表 (python)
  6. Twitter数据抓取
  7. PHP7.1 狐教程【旧】不在更新,请点击新连接查看
  8. 为什么visual的联机浏览功能不能用_Minecraft非正版联机教程
  9. Spring Cloud (6)config 客户端配置 与GitHub通信
  10. 三人表决器c语言实验报告,项目一:三人表决器的逻辑电路设计与制作
  11. matlab 图像分割-自定义函数T_SGM
  12. 广东迅视资管 “亦庄智造”填补国内高速棒材技术空白
  13. chm无法打开html文档,高手几招搞定WindowsXP无法打开chm文件的情况
  14. 【力学】关于力学的一些基础知识
  15. 报错Cannot mix different versions of joi schemas解决方法
  16. 车载以太网 > 百兆100BaseT1转TX盒子拆解(包含3类产品)
  17. Android AP 和 BP的概念
  18. win10电脑前面板耳机无声音
  19. 【数据结构课设】扫雷 (java实现)
  20. oracle 分组过滤空值,oracle 空值处理,排序过滤

热门文章

  1. android+高仿+日历,android高仿钉钉和小米的自定义日历控件(支持阴历和阳历,左右无限翻页viewpager)...
  2. 盛大的2005:开局很精彩,结尾很无奈
  3. 【动态规划】守护者的挑战
  4. Problem C 凯撒加密
  5. 打印机局域网共享以及如何连接局域网内打印机
  6. android局部布局刷新,Android之RecyclerView的局部刷新
  7. 手机通用刷Recovery教程!
  8. 【PHP】小写金额转大写金额
  9. 扩展桌面:扩展屏幕没有连接,但程序还在扩展屏幕上,在看不到这个屏幕的情况下,怎么把程序窗口拉回来
  10. 《聊聊我的故事 | 带一只柚子上路》