微信公众号之主动给用户发送消息功能

前一段时间项目中遇到一个稍微麻烦一点的问题。

即客户要求,他在后台编辑好文章后要主动给每个用户都发送消息,并可以让用户点击直接进入文章页面。

于是乎,当时脑子一热,想着没什么大的问题,so easy。模板消息不就得了。

后来在写代码的过程中却发现,并不行。

微信公众号中模板消息有很严格的限制。

1.必须有用户主动触发事件方可发送模板消息

2.模板消息一分钟只能发送六十条,超过六十条,不好意思。你懂。

于是乎,就想到了另一种方法:群发消息

但是一看文档中群发消息的限制,发现悲催了

群发消息服务号每个月最多只能发送4条。

而客户要求的是随时随地就能发送.这个4条明显不符合要求的。

怎么办呢?一度陷入困难之中。只好继续查看开发文档。

当看到客服功能时,突然想到,能不能用客服主动给用户发送消息呢?

于是乎,想到就去试验下。

首先,先在公众号后台功能模块中-》添加功能模块  添加   客服功能   模块

如图所示:

然后就进入代码环节了。

先添加客服。也可以公众号后台添加

//先添加客服
function addkf()
{
 $token = getToken();
 $url = 'https://api.weixin.qq.com/customservice/kfaccount/add?access_token='.$token;
 $data = '{
   "kf_account" : "system@system",
   "nickname" : "客服1",
   "password" : "admin",
 }';
 echo https_request($url,$data);
}

然后就是主动发送消息的方法

//获取access_token的方法。
function getToken()
{
 $appid = 'appid';
 $appsecret = 'appsecret';
 $token_file = dirname(dirname(__FILE__)).'/data/token.txt';
 if(!file_exists($token_file) || ((time() - filemtime($token_file)) > 7000)){
  $TOKEN_URL="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;
  $json=file_get_contents($TOKEN_URL);
  $result=json_decode($json);
  $ACC_TOKEN=$result->access_token;
  file_put_contents($token_file,$ACC_TOKEN);
 }else{
  $ACC_TOKEN = file_get_contents($token_file);
 }
 return $ACC_TOKEN;
}
//调用发送方法
function sendmsg($content,$openid)
{
 $token = getToken();
 $url = 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token='.$token;
 $content = '感谢你的关注\n回复你厉害 \n例如<a href=\"http://www.baidu.com\">回复123456</a>';
 $data = '{
  "touser":"'.$openid.'",
  "msgtype":"text",
  "text":
  {
    "content":"'.$content.'"
  }
 }';
 https_request($url,$data);
 return true;
}
/**
 * request 请求
 */
function https_request($url, $data = null){
 $curl = curl_init();
 curl_setopt($curl, CURLOPT_URL, $url);
 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
 if (!empty($data)){
  curl_setopt($curl, CURLOPT_POST, 1);
  curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
 }
 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
 $output = curl_exec($curl);
 curl_close($curl);
 return $output;
}

使用的时候直接调用 sendmsg()方法传值就可以了。

最后上完成的图

如图所示,公众号可以给用户发送消息,而且发送的内容你可以使用html 标签哦

虽然这样感觉很方便,但是同样,微信公众平台对此也有限制。

1.用户必须关注公众号,方可收到信息。

2.用户只能连续收到   20   条客服消息。超过后用户就收不到消息,

超过后,用户必须   主动给公众号发送消息  。或者  点击菜单栏,这样20条消息的限制就会重置。

总结

以上所述是小编给大家介绍的微信公众号之主动给用户发送消息功能,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

(0)

相关推荐

  • java微信公众号发送消息模板

    本文实例为大家分享了java微信公众号发送消息模板的具体代码,供大家参考,具体内容如下 这段时间接触公众号开发,写下向用户发送消息模板的接口调用 先上接口代码 public static JSONObject sendModelMessage(ServletContext context,JSONObject jsonMsg) { System.out.println("消息内容:"+jsonMsg); boolean result = false; try { getWX_Acces

  • python实现给微信公众号发送消息的方法

    本文实例讲述了python实现给微信公众号发送消息的方法.分享给大家供大家参考,具体如下: 现在通过发微信公众号信息来做消息通知和告警已经很普遍了.最常见的就是运维通过zabbix调用shell脚本给微信发消息,起到告警的作用.当要发送的信息较多,而且希望按照指定格式显示的好看一点的时候,shell处理起来,个人感觉不太方便.于是我用Python重写了发微信的功能. #coding:utf-8 import urllib2 import json import sys def getMsg():

  • 微信公众号之主动给用户发送消息功能

    前一段时间项目中遇到一个稍微麻烦一点的问题. 即客户要求,他在后台编辑好文章后要主动给每个用户都发送消息,并可以让用户点击直接进入文章页面. 于是乎,当时脑子一热,想着没什么大的问题,so easy.模板消息不就得了. 后来在写代码的过程中却发现,并不行. 微信公众号中模板消息有很严格的限制. 1.必须有用户主动触发事件方可发送模板消息 2.模板消息一分钟只能发送六十条,超过六十条,不好意思.你懂. 于是乎,就想到了另一种方法:群发消息 但是一看文档中群发消息的限制,发现悲催了 群发消息服务号每

  • Java开发微信公众号接收和被动回复普通消息

    上篇说完了如何接入微信公众号,本文说一下微信公众号的最基本功能:普通消息的接收和回复.说到普通消息,那么什么是微信公众号所定义的普通消息呢,微信开发者文档中提到的接收的普通消息包括如下几类: 1.文本消息 2.图片消息 3.语音消息 4.视频消息 5.小视频消息 6.地理位置消息 7.链接消息(被动回复的消息) 被动回复的普通消息包括: 1.回复文本消息 2.回复图片消息 3.回复语音消息 4.回复视频消息 5.回复音乐消息 6.回复图文消息 其实接收消息和被动回复消息这两个动作是不分家的,这本

  • .NET微信公众号获取OpenID和用户信息

    本文实例为大家分享了微信公众平台实现获取用户OpenID的方法,供大家参考,具体内容如下 Index.aspx.cs代码: public partial class Index : System.Web.UI.Page { //用户id public string openid = ""; //公众号信息部分 public string appid = ConfigurationManager.AppSettings["AppId"]; public string

  • ASP.NET Core2静默获取微信公众号的用户OpenId实例代码

    前言 最近在做个微信公众号的项目,需要将入口放置在公众号二级菜单内,通过点击该菜单链接后进入到该项目中去,进入到项目后程序会自动通过微信公众号的API完成用户的OpenId获取.需求很简单,实现起来也不复杂,于是在一番折腾后需求实现了.为此,写下此文仅为初次接触的朋友提供个小小的帮助. 准备 老规矩,在开始动手前,咱们先简单介绍下实现的组成部分,如下: 微信公众号静默获取用户OpenId:要实现该功能,可以通过微信公众号提供的"网页授权"接口完成(官网描述:以snsapi_base为s

  • 微信公众号用户与网站用户的绑定解决方案分析

    本文实例讲述了微信公众号用户与网站用户的绑定解决方案.分享给大家供大家参考,具体如下: 现在很多网站都已经建立了一套完整的用户账号体系,基于这套体系,再做其他应用的用户扩展就非常方便.例如,有了微软的outlook账户,就可以登录win8,可以登录微软的邮箱,还可以登录skype.同样地,一个Apple ID可以享受苹果的所有服务.正所谓,一个账号,处处使用. 对于企业,可能会有产品线通常有网站,app,微信公众号等.统一各产品线的账号体系,实现一个账号处处使用的目标是非常有必要的.网站和app

  • java实现微信公众号发送模版消息

    前言: 在我们购买商品或其他操作的时候,这时候微信公众号会推送相关模版消息.接下来简单介绍开发流程:(本文以订单推送为例) 首先在测试号新建模版消息 格式如下: {{first.DATA}} 用户名:{{keyword1.DATA}} 订单号:{{keyword2.DATA}} 订单金额:{{keyword3.DATA}} 商品信息:{{keyword4.DATA}} {{remark.DATA}} 这里会生成一个模版ID,后面会用到 然后后台在上传订单接口,上传成功后调用发送模版消息,代码实现

  • java微信公众号支付开发之现金红包

    我们先来看看公众号发放现金红包的效果: 需要调用商户平台的接口,接口发放规则如下: 1.发送频率限制--默认1800/min 2.发送个数上限--按照默认1800/min算 3.金额上限--根据传入场景id不同默认上限不同,可以在商户平台产品设置进行设置和申请,最大不大于4999元/个 4.其他的"量"上的限制还有哪些?--用户当天的领取上限次数,默认是10 5.如果量上满足不了我们的需求,如何提高各个上限?--金额上限和用户当天领取次数上限可以在商户平台进行设置 注意-红包金额大于2

  • java微信公众号开发(搭建本地测试环境)

    俗话说,工欲善其事,必先利其器.要做微信公众号开发,两样东西不可少,那就是要有一个用来测试的公众号,还有一个用来调式代码的开发环境. 测试公众号 微信公众号有订阅号.服务号.企业号,在注册的时候看到这样的信息,只有订阅号可以个人申请,服务号和企业号要有企业资质才可以.这里所说的微信公众号开发指的是订阅号和服务号. 另外,未认证的个人订阅号有一些接口是没有权限的,并且目前个人订阅号已不支持微信认证,也就是说个人订阅号无法调用一些高级的权限接口,下图就是一个未认证的个人订阅号所具备权限列表,像生成二

  • C#生成带二维码的专属微信公众号推广海报实例代码

    前言 很多微信公众号中需要生成推广海报的功能,粉丝获得专属海报后可以分享到朋友圈或发给朋友,为公众号代言邀请好友即可获取奖励的.海报自带渠道二维码,粉丝长按二维码即可关注微信公众号,从而达到吸粉的目的. 效果如下: 代码实现: 1.获取临时二维码ticket /// <summary> /// 获取临时二维码ticket /// </summary> /// <param name="scene_str">场景值ID openid做场景值ID<

  • Spring Security实现微信公众号网页授权功能

    微信公众号提供了微信支付.微信优惠券.微信H5红包.微信红包封面等等促销工具来帮助我们的应用拉新保活.但是这些福利要想正确地发放到用户的手里就必须拿到用户特定的(微信应用)微信标识openid甚至是用户的微信用户信息.如果用户在微信客户端中访问我们第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑.今天就结合Spring Security来实现一下微信公众号网页授权. 环境准备 在开始之前我们需要准备好微信网页开发的环境. 微信公众号服务号 请注意,一定是微信公众号

随机推荐