微信服务号通过客服接口主动给普通微信号推送消息

简介: 当用户主动发消息给公众号的时候(包括发送信息、点击自定义菜单、订阅事件、扫描二维码事件、支付成功事件、用户维权),微信将会把消息数据推送给开发者,开发者在一段时间内(目前修改为48小时)可以调用客服消息接口,通过POST一个JSON数据包来发送消息给普通用户,在48小时内不限制发送次数。此接口主要用于客服等有人工消息处理环节的功能,方便开发者为用户提供更加优质的服务。

  当用户主动发消息给公众号的时候(包括发送信息、点击自定义菜单、订阅事件、扫描二维码事件、支付成功事件、用户维权),微信将会把消息数据推送给开发者,开发者在一段时间内(目前修改为48小时)可以调用客服消息接口,通过POST一个JSON数据包来发送消息给普通用户,在48小时内不限制发送次数。此接口主要用于客服等有人工消息处理环节的功能,方便开发者为用户提供更加优质的服务。

目前我已经测试48小时内普通微信号点击服务自定义菜单跳转 以及给服务号发送个消息 其他的自己测试下吧,服务号就可以给该普通微信号 发送文本 单多图文等。


代码:

step1.php
<?php
include("function.php");
define("APPID","wx3f839ee5ed734***");
define("APPSECRET","1c9f66fa8d394bd410a821a91c47b***");
//获取accesstoken
$access_token=getAccessToken(APPID,APPSECRET);
//客服发送消息接口
$url="https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=$access_token";
$content="感谢您关注菜鸟博客@wlphp.com";
$json='{"touser":"ofRsxuGNUpSuCBQVEF6YmbQ2y7dg","msgtype":"text","text":{"content":"'.$content.'"}}';
$return=post_json($url,$json);
var_dump($return);
?>
function.php
<?php
function getAccessToken($appId,$appSecret) {
    // access_token 应该全局存储与更新,以下代码以写入到文件中做示例
    $data = json_decode(file_get_contents("access_token.json"));
    if ($data->expire_time < time()) {
      $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appId&secret=$appSecret";
      //$res = json_decode(httpGet($url));   //改用file_get_contents 注意需要环境支持 谢谢
      $res = json_decode(file_get_contents($url));
      $access_token = $res->access_token;
      if ($access_token) {
        $data->expire_time = time() + 7000;
        $data->access_token = $access_token;
        $fp = fopen("access_token.json", "w");
        fwrite($fp, json_encode($data));
        fclose($fp);
      }
    } else {
      $access_token = $data->access_token;
    }
    return $access_token;
  }
     // 工具函数 //
     /* 使用curl来post一个json数据 */
     // CURLOPT_SSL_VERIFYPEER,CURLOPT_SSL_VERIFYHOST - 在做https中要用到
     // CURLOPT_RETURNTRANSFER - 不以文件流返回,带1
 function post_json($url,$json){
 $post_url = $url;
 $post_data =$json;
 $ch = curl_init();//初始化
 curl_setopt($ch, CURLOPT_TIMEOUT, '30');//超时时间
 curl_setopt($ch, CURLOPT_HTTPHEADER, array('Keep-Alive: 300','Connection: keep-alive')) ;
 curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; GTB7.4; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2)');
 curl_setopt($ch, CURLOPT_POST,1);
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
 curl_setopt($ch, CURLOPT_URL,$post_url);
 curl_setopt($ch, CURLOPT_POSTFIELDS,$post_data);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
 $contents = curl_exec($ch);
 if(curl_errno($ch)){}
 return  $contents;
   }


截图:

1.png2.png

还有就是使用json_encode组装数组数据,但是用过的人可能会发现content里的汉子都会被换成unicode字符,解决办法是网上找一个ch_json_encode()方法,可以完美解决!


/*

$content="感谢您关注菜鸟博客@wlphp.com";

$json='{"touser":"ofRsxuGNUpSuCBQVEF6YmbQ2y7dg","msgtype":"text","text":{"content":"'.$content.'"}}';

*/

$data="";

$data['touser']="ofRsxuGNUpSuCBQVEF6YmbQ2y7dg";

$data['msgtype']="text";

$data['text']['content']="感谢您关注菜鸟博客@@wlphp.com";

$json=ch_json_encode($data);   //如果是json_encode函数 中文会变成unicode字符     ch_json_encode  用这个函数可以解决

$return=post_json($url,$json);

3.png

ch_json_encode 函数:


function ch_json_encode($data) {
   function ch_urlencode($data) {
       if (is_array($data) || is_object($data)) {
           foreach ($data as $k => $v) {
               if (is_scalar($v)) {
                   if (is_array($data)) {
                       $data[$k] = urlencode($v);
                   } else if (is_object($data)) {
                       $data->$k = urlencode($v);
                   }
               } else if (is_array($data)) {
                   $data[$k] = ch_urlencode($v); //递归调用该函数
               } else if (is_object($data)) {
                   $data->$k = ch_urlencode($v);
               }
           }
       }
       return $data;
   }  
   $ret = ch_urlencode($data);
   $ret = json_encode($ret);
   return urldecode($ret);  
 }
相关文章
|
6天前
|
算法 iOS开发 CDN
“企业微信iPad协议”第 0x04 天:当朋友圈接口在凌晨 2:14 突然返回 404
新品上线紧急任务:300位经销商朋友圈同步海报。突破官方限制,利用企业微信iPad协议私有接口,自动化上传发布。凌晨遭遇404,迅速定位并修复算法版本问题,最终高效完成推送,点赞超4200。技术在文档之外,也在边界之内。
49 0
|
7月前
|
自然语言处理 搜索推荐 小程序
微信公众号接口:解锁公众号开发的无限可能
微信公众号接口是微信官方提供的API,支持开发者通过编程与公众号交互,实现自动回复、消息管理、用户管理和数据分析等功能。本文深入探讨接口的定义、类型、优势及应用场景,如智能客服、内容分发、电商闭环等,并介绍开发流程和工具,帮助运营者提升用户体验和效率。未来,随着微信生态的发展,公众号接口将带来更多机遇,如小程序融合、AI应用等。
|
11月前
|
人工智能 JavaScript 定位技术
微信的接口都有哪些?
【10月更文挑战第17天】微信的接口都有哪些?
975 43
|
3月前
|
存储
微信附近人提取工具,附近人微信号采集,用xposed实现【仅供学习参考】
主Hook模块拦截微信附近人界面,数据结构保存用户信息,数据导出模块实现CSV格式存储,以及Xposed框架入口配置。
|
11月前
|
JSON 小程序 应用服务中间件
微信的接口wxLogin()的返回值都有什么?
【10月更文挑战第4天】微信的接口wxLogin()的返回值都有什么?
1036 1
|
人工智能 数据可视化 API
10 分钟构建 AI 客服并应用到网站、钉钉或微信中测试评
10 分钟构建 AI 客服并应用到网站、钉钉或微信中测试评
305 2
|
人工智能
10 分钟构建 AI 客服并应用到网站、钉钉或微信中简说
10 分钟构建 AI 客服并应用到网站、钉钉或微信
|
7月前
|
小程序 测试技术 数据安全/隐私保护
微信公众号接口测试实战指南
微信公众号接口测试是确保系统稳定性和功能完整性的重要环节。本文详细介绍了测试全流程,包括准备、工具选择(如Postman、JMeter)、用例设计与执行,以及常见问题的解决方法。通过全面测试,可以提前发现潜在问题,优化用户体验,确保公众号上线后稳定运行。内容涵盖基础接口、高级接口、微信支付和数据统计接口的测试,强调了功能验证、性能优化、安全保护及用户体验的重要性。未来,随着微信生态的发展,接口测试将面临更多挑战和机遇,如小程序融合、AI应用和国际化拓展。
|
人工智能 运维 负载均衡
10 分钟构建 AI 客服并应用到网站、钉钉或微信中
《10分钟构建AI客服并应用到网站、钉钉或微信中》的解决方案通过详尽的文档和示例代码,使具有一定编程基础的用户能够快速上手,顺利完成AI客服集成。方案涵盖高可用性、负载均衡及定制化选项,满足生产环境需求。然而,若文档不清晰或存在信息缺失,则可能导致部署障碍。实际部署中可能遇到网络、权限等问题,需逐一排查。云产品的功能、性能及操作配置便捷性直接影响解决方案效果,详尽的产品手册有助于快速解决问题。总体而言,该方案在各方面表现出色,值得推荐。
505 34
|
11月前
|
JSON 前端开发 API
使用微信JS-SDK调用发票接口的完整开发指南
本文介绍了如何使用微信JS-SDK的`chooseInvoiceTitle`接口来调用微信的发票功能。通过微信发票接口,用户可以选择开具个人或单位发票,并获取相关发票信息,如抬头、税号、公司地址等。在文中,详细描述了JS-SDK的初始化、发票接口的调用方式,并提供了完整的代码示例。文章还介绍了如何处理返回的发票信息,帮助开发者快速集成微信发票功能。
417 2

热门文章

最新文章