微信小程序客服消息功能开发指南与实践教程

2024-12-21 0 866

我是一名独立负责微信小程序前后端开发的开发者,对这一领域有着深刻的体会。在客服消息的开发过程中,我发现网上资料不够全面,问题也颇多。今天,我想和大家分享一份针对新手的开发指南,希望能给大家带来帮助。同时,也欢迎各位前辈提出宝贵意见。

了解入口

开展微信小程序客服消息的开发工作,得先找到那个关键的进入点。这就像是要进入一个复杂的迷宫,那个入口是至关重要的。这里的按钮介绍就相当于那个入口,可能不太容易发现,但一定要有耐心去寻找。找到之后,你将开始处理会话事件,这标志着客服消息开发的起点。虽然这一步看起来很简单,但对于初学者来说,如果不注意,后续的开发可能会变得非常困惑。我在摸索这一步上投入了大量的时间,因为相关资料不多,而且很多内容都很模糊。这是整个开发过程中必须稳固走好的第一步,如果这一步不清晰,那么接下来的工作将会更加困难。

起初,入口定位不顺畅,这导致后续步骤一直中断不断。因此,入口这一环节必须特别留意。

数据包结构

客服交流中,数据包的构成尤为关键。需弄清用户发送文字信息时形成的数据包结构。我那时如同在黑夜中摸索前行,缺乏详尽指引,只能逐字逐句查阅官方资料。这过程犹如拆解一个复杂的机械,必须了解每个部件的布局与功能。

此外,还需关注向客户发送客服信息的数据包构造。这两个构造的理解对信息的正确发送和接收至关重要。鉴于众多网络资料不够详实,我们只能逐字逐句地对照文档进行测试。这一过程充满未知,唯有不断试验。数据仿佛加密的密码,需逐步解开。

图片消息素材获取

图片信息的素材获取并不简单。特别要注意的是,微信公众号和小程序的获取方式各不相同。我之前没有留意这个细节,结果浪费了不少时间。这就像误入歧途,最后还得回头重新来过。

每个小错误都可能带来一连串麻烦,尤其是对于新手来说,这些微小的差异不易察觉,往往是在遭受损失后才会留下深刻印象。

微信小程序客服消息功能开发指南与实践教程

两种客服消息类型

微信小程序客服消息功能开发指南与实践教程

官方将客服信息分为两类。一类是通过在小程序中点击带有标签的消息进入的,另一类则是网页版的。在小程序中,一旦相关设置完成,顾客便可以直接操作进入客服信息流程。至于第二种,即添加客服人员的操作,这里就不再赘述。但需注意这两种类型的差异,在开发时需根据不同需求进行相应设置。起初我对此并不清楚,经过反复查阅官方文档,才逐渐理解,这也让我认识到了仔细阅读文档的重要性。

配置消息推送


   
   
  1. $signature = $_GET[ “signature”];
  2. $timestamp = $_GET[ “timestamp”];
  3. $nonce = $_GET[ “nonce”];
  4. $token = TOKEN; //TOKEN 写自己在微信平台填入的token
  5. $tmpArr = array($token, $timestamp, $nonce);
  6. sort($tmpArr, SORT_STRING);
  7. $tmpStr = implode( $tmpArr );
  8. $tmpStr = sha1( $tmpStr );
  9. if( $tmpStr == $signature ){
  10. return true;
  11. } else{
  12. return false;
  13. }

网络资料普遍指出,要实现“客服消息”的第一种功能,必须开启“消息推送”。具体步骤是:首先登录小程序平台,接着点击“设置”,再进入“开发设置”,找到“消息推送”,最后点击“启用”。这一过程如同走流程,每一步都至关重要,不容有误。

使用后需填写网址,就好比为流程指定一个具体位置。同时,token需谨慎填写,确保与网址对应的php中的token一致。个人建议使用json格式,可根据个人需求进行选择。完成这些后,便是提交环节。若token验证通过,则提交成功。这一环节至关重要,若出现任何问题,需逐一检查所填信息。


   
   
  1. define( "TOKEN", ""); //填写自己的token
  2. if ( isset($_GET['echostr'])) { //校验服务器地址URL
  3. valid();
  4. }else{
  5. responseMsg();
  6. }
  7. function valid()
  8. {
  9. $echoStr = $_GET["echostr"];
  10. if(checkSignature()){
  11. header('content-type:text');
  12. echo $echoStr;
  13. exit;
  14. }else{
  15. echo $echoStr.'+++'.TOKEN;
  16. exit;
  17. }
  18. }
  19. function checkSignature()
  20. {
  21. $signature = $_GET["signature"];
  22. $timestamp = $_GET["timestamp"];
  23. $nonce = $_GET["nonce"];
  24. $token = TOKEN;
  25. $tmpArr = array($token, $timestamp, $nonce);
  26. sort($tmpArr, SORT_STRING);
  27. $tmpStr = implode( $tmpArr );
  28. $tmpStr = sha1( $tmpStr );
  29. if( $tmpStr == $signature ){
  30. return true;
  31. }else{
  32. return false;
  33. }
  34. }
  35. function responseMsg()
  36. {
  37. $postStr = file_get_contents('php://input'); //此处推荐使用file_get_contents('php://input')获取后台post过来的数据
  38. if (!empty($postStr) && is_string($postStr)){
  39. $postArr = json_decode($postStr,true);
  40. if(!empty($postArr['MsgType']) && $postArr['MsgType'] == 'text'){ //用户发送文本消息
  41. $fromUsername = $postArr['FromUserName']; //发送者openid
  42. $media_id = ''; //输入想要回复的图片消息的media_id
  43. $data=array(
  44. "touser"=>$fromUsername,
  45. "msgtype"=>"image",
  46. "image"=>array("media_id"=>$media_id)
  47. );
  48. $json = json_encode($data,JSON_UNESCAPED_UNICODE); //php5.4+
  49. requestAPI($json);
  50. }elseif(!empty($postArr['MsgType']) && $postArr['MsgType'] == 'image'){ //用户发送图文消息
  51. $fromUsername = $postArr['FromUserName']; //发送者openid
  52. $media_id = ''; //输入想要回复的图片消息的media_id
  53. $data=array(
  54. "touser"=>$fromUsername,
  55. "msgtype"=>"image",
  56. "image"=>array("media_id"=>$media_id)
  57. );
  58. $json = json_encode($data,JSON_UNESCAPED_UNICODE); //php5.4以上版本才可使用
  59. requestAPI($json);
  60. }elseif($postArr['MsgType'] == 'event' && $postArr['Event']=='user_enter_tempsession'){ //用户进入客服
  61. $fromUsername = $postArr['FromUserName']; //此处为文字回复,不同的回复方式可参考文章顶部第三个链接“回复客户消息”里查看
  62. $content = '你好,你的专属海报正在制作中,请稍后回复“1”获取海报';
  63. $data=array(
  64. "touser"=>$fromUsername,
  65. "msgtype"=>"text",
  66. "text"=>array("content"=>$content)
  67. );
  68. $json = json_encode($data,JSON_UNESCAPED_UNICODE); //php5.4+
  69. requestAPI($json);
  70. }else{
  71. exit('error');
  72. }
  73. }else{
  74. echo "empty";
  75. exit;
  76. }
  77. }
  78. function requestAPI($json){
  79. $access_token = get_accessToken();
  80. /*
  81. * POST发送https请求客服接口api
  82. */
  83. $url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=".$access_token;
  84. //以'json'格式发送post的https请求
  85. $curl = curl_init();
  86. curl_setopt($curl, CURLOPT_URL, $url);
  87. curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
  88. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  89. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
  90. if (!empty($json)){
  91. curl_setopt($curl, CURLOPT_POSTFIELDS,$json);
  92. }
  93. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  94. //curl_setopt($curl, CURLOPT_HTTPHEADER, $headers );
  95. $output = curl_exec($curl);
  96. if (curl_errno($curl)) {
  97. echo 'Errno'.curl_error($curl);//捕抓异常
  98. }
  99. curl_close($curl);
  100. if($output == 0){
  101. echo 'success';exit;
  102. }
  103. }
  104. /* 调用微信api,获取access_token,有效期7200s*/
  105.     function get_accessToken(){
  106. $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx****&secret='***'; //替换成自己的小程序id和secret
  107. @$weixin = file_get_contents($url);
  108. @$jsondecode = json_decode($weixin);
  109. @$array = get_object_vars($jsondecode);
  110. $token = $array['access_token'];
  111. return $token;
  112. }

后续注意事项

最后进入自己的微信小程序,在需要的地方添加contact-button标签即可
   
   

提交成功后,还有一些细节需留意。比如,修改后台代码后,务必清除微信缓存。这样做是为了确保彻底退出小程序,然后再进入测试,这样才能确保改动能即时更新。这其实是我从实践中得到的经验教训。记得有一次,我没有清除缓存就进行了测试,误以为代码出了问题,排查了很久才发现问题根源在于缓存。


   
   
  1. <contact-button
  2. type= "default-light"
  3. size= "27"
  4. session-from= "weapp"
  5. > </contact-button>

不知道大家在微信小程序客服消息的开发中是否遇到过类似难题?若有过,欢迎在评论区交流心得,同时也希望大家能点赞并转发此篇文章。

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

七爪网 行业资讯 微信小程序客服消息功能开发指南与实践教程 https://www.7claw.com/2804086.html

七爪网源码交易平台

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务