当前位置:   article > 正文

微信公众号、小程序开发——1、客服消息+简易自开发回复平台_微信公众号开发客服回复和发布商品

微信公众号开发客服回复和发布商品

一、客服消息“咨询-回复”方式

    1、咨询方式

    公众号:公众号主页发送各类型消息后,会在公众号后台收到用户消息。

    小程序:在小程序网页中添加“客服按钮”,进入客服会话。

  1. <button open-type="contact" bindcontact="handleContact"></button>
  2. Page({
  3. handleContact(e) {
  4. console.log(e.path)
  5. console.log(e.query)
  6. }
  7. })

    2、常用回复方式

    公众号:

    方式一:公众号后台回复,登录公众号,选择“人员设置”添加长期运营者,管理员通过后。运营者可直接在公众号后台回复消息(仅PC端支持)。

    方式二:绑定客服人员、通过微信公众平台客服功能登录并回复消息(仅PC端支持)。

  •  成为客服:登录公众号-添加功能插件-客服功能-添加客服。

    方式三:绑定客服人员,关注微信小程序“公众平台助手”(手机微信支持,推荐)。

    小程序:

    方式一:绑定小程序客服人员,登录微信公众平台-客服-添加,成为客服,在客服平台登录回复(仅PC端支持)。

 

     二、客服消息接口应用

    1、接口说明

    微信公众号:

  1. 接口文档
  2. 启用开发者模式:公众平台-开发-基本配置,启用服务器。
  3. http支持80端口,https支持443端口、可使用内网穿透域名测试消息。
  4. 用户发送消息后,通过接口回复消息条数超过20条后,用户未再次发送消息,接口将调用失败。
  5. 用户2天内未与公众号交互,无法主动发送消息给用户。

    微信小程序:

  1. 接口文档
  2. 服务器配置:公众平台-开发-开发配置-消息推送。
  3. 仅支持https\443端口、一个月可修改3次、域名需备案。
  4. 用户发送消息后,通过接口回复消息条数超过5条后,用户未再次发送消息,接口将调用失败。
  5. 用户发送消息后,30分钟内未回复用户,调用客服接口失败。
  6. 用户2天内未与公众号交互,无法主动发送消息给用户。

    2、实现快速回复用户消息(以小程序客服示例)

    2.1 用户发送消息,转发到配置服务器。

    消息格式:

  1. <xml>
  2. <ToUserName><![CDATA[gh_b2a88d1]]></ToUserName>
  3. <FromUserName><![CDATA[oi85twEuEkM7jYbLDCI]]></FromUserName>
  4. <CreateTime>1548418010</CreateTime>
  5. <MsgType><![CDATA[voice]]></MsgType>
  6. <MediaId><![CDATA[wHeKlgHf0voj3aS57Vt45Ow_KhYjXrAUlPYGapSvAS1SIv543y4vApu]]></MediaId>
  7. <Format><![CDATA[amr]]></Format>
  8. <MsgId>6650404713487400960</MsgId>
  9. <Recognition><![CDATA[喂喂喂喂喂喂。]]></Recognition>
  10. </xml>

    2.2 解析消息,根据openid保存用户消息,记录消息类型、内容、日期。图片可以预先下载保存到服务器。

    2.3 每日首次收到某一用户(openid)消息时,启用定时器,若30分钟内(自定义一个时间)未能及时回复,系统自动回复一条消息(如提醒电话客服),避免超过30分钟无法回复消息。

  1. @Override
  2. public void run() {
  3. try {
  4. //10分钟后查询,是否回复过
  5. Thread.sleep(1000 * 60 * 10);
  6. List<KFMessage> list = KFConst.messageMap.get(openid);
  7. if (list != null && !list.isEmpty()) {
  8. boolean hasReplied = hasReplied(list);
  9. if (!hasReplied) {
  10. myLog.printString("reponse expire in 10 min");
  11. String access_token = getMiniProgramToken();
  12. KFMessageHandler.sendKf(access_token, openid, "售后客服不在线,建议您电话咨询:07**-23****07","text");
  13. KFConst.finishMap.put(openid, true);//设置已通知过,本条消息一天发送一次就够了。
  14. }
  15. }
  16. } catch(Exception e){
  17. e.printStackTrace();
  18. }
  19. }

    2.4 将消息通过特定方式发送给指定客服人员微信(后台记录该用户openid即可)

  • 使用认证的微信服务号“模板消息”功能通知用户。
  • 使用认证的微信小程序发送“统一服务消息”,需要绑定关联的公众号,认证可复用公众号资质。不建议选择小程序模板消息。

    以下为使用服务号,发送模板消息给客服人员。

  1. //公众号接口,发送模板消息给客服人员
  2. /**
  3. *
  4. * @param kfOpenid 客服人员openid对应公众号
  5. * @param openid 用户昵称或openid,无昵称则显示openid
  6. * @param msgType 消息类型
  7. * @param content 消息内容
  8. * @param access_token 公众号access_token
  9. * @return
  10. */
  11. public static boolean sendTemplate(String kfOpenid,String openid,String msgType, String content, String access_token) {
  12. JSONObject jsonObject = new JSONObject();
  13. jsonObject.put("touser", kfOpenid);
  14. jsonObject.put("template_id", KFConst.TEMPLATE_ID); //公众号模板id
  15. jsonObject.put("url", KFConst.KFURL);//点击详情进入的H5页面
  16. JSONObject first = new JSONObject();
  17. first.put("value", "您有新的售后客服消息");
  18. JSONObject keyword1 = new JSONObject();
  19. keyword1.put("value", openid);
  20. JSONObject keyword2 = new JSONObject();
  21. keyword2.put("value", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
  22. JSONObject remark = new JSONObject();
  23. remark.put("value", "内容为: " + content);
  24. JSONObject data = new JSONObject();
  25. data.put("first", first);
  26. data.put("keyword1", keyword1);
  27. data.put("keyword2", keyword2);
  28. data.put("remark", remark);
  29. jsonObject.put("data", data);
  30. String url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + access_token;
  31. String doPost = HttpUtil.doPostHttps(new URL(url), data);
  32. JSONObject jsonObject = JSONObject.fromObject(doPost);
  33. return jsonObject.containsKey("errcode") && jsonObject.get("errcode").equals(0);
  34. }

    2.5 客服人员点击模板消息,进入服务器开发的手机版网页。网页根据openid对消息进行分类显示。

    2.6 回复消息后,通过微信小程序提供的接口,直接发送文字或图片。

  • 网页上传图片至微信小程序服务器,可调用公众号相同接口,文档点此查看。图片上传成功后,获取media_id。用于发送消息给用户。
  1. /**
  2. * 消息客服消息接口,发送消息给用户
  3. * @param access_token //小程序access_token
  4. * @param openid //小程序openid
  5. * @param text 文本消息为文本内容,图片为media_id
  6. * @param msgtype text/image
  7. * @return
  8. */
  9. public static boolean sendKf(String access_token, String openid, String text, String msgtype){
  10. if (msgtype == null || (!msgtype.equals("text") && !msgtype.equals("image"))) {
  11. return false;
  12. }
  13. String url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=" + access_token;
  14. try {
  15. JSONObject jsonObject = new JSONObject();
  16. jsonObject.put("touser", openid);
  17. jsonObject.put("msgtype", msgtype);
  18. JSONObject textObject = new JSONObject();
  19. if (msgtype.equals("text")) {
  20. textObject.put("content", text);
  21. jsonObject.put("text", textObject.toString());
  22. }else if (msgtype.equals("image")) {
  23. textObject.put("media_id", text);
  24. jsonObject.put("image", textObject.toString());
  25. }
  26. String doPost = HttpUtil.doPostHttps(new URL(url), jsonObject.toString());
  27. System.out.println(doPost);
  28. JSONObject fromObject = JSONObject.fromObject(doPost);
  29. KFConst.myLog.printString("sendkf:" + doPost);
  30. KFConst.myLog.closedBr();
  31. if (fromObject.containsKey("errcode") && fromObject.get("errcode").equals(0)) {
  32. //状态为0,表示客服会话发送成功。
  33. return true;
  34. }
  35. } catch (Exception e) {
  36. e.printStackTrace();
  37. KFExceptionHandler.printException(e, "sendkf");
  38. }
  39. return false;
  40. }

    2.7 结果展示

    3、其他关注点

    3.1 为了更好的显示网页聊天效果,需要通过微信按钮组件,获取小程序用户昵称并保存。

<button class="wechat_button" openType="contact" >微信客服</button>

    3.2 同时登录PC端微信和手机端微信时,手机端接收模板消息时,不会有铃声或震动提醒 。

    3.3 目前小程序模板消息,需要在提交表单时或支付时预存form_id。不推荐使用。

    3.4 特殊情况,需要转发客服消息至客服平台

 

如有错误,请指正。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/280685
推荐阅读
相关标签
  

闽ICP备14008679号