完整开发实现公众号主动消息推送,精彩内容即刻到达

本文主要是介绍完整开发实现公众号主动消息推送,精彩内容即刻到达,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。
🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。
🏆本文已收录于PHP专栏:PHP进阶实战教程。
🏆另有专栏PHP入门基础教程,希望各位大佬多多支持❤️。
🎉欢迎 👍点赞✍评论⭐收藏

文章目录

  • 🚀一、引言
  • 🚀二、公众号主动推送应用场景介绍
  • 🚀三、准备工作
    • 🔎3.1 注册微信公众号
    • 🔎3.2 获取开发者ID和密钥
    • 🔎3.3 配置服务器环境
    • 🔎3.4 配置微信公众号并开通客服
    • 🔎3.5 设置服务器地址和Token
    • 🔎3.6 验证接口配置信息
  • 🚀四、具体功能开发
    • 🔎4.1 获取access_token
    • 🔎4.2 发送客服消息
    • 🔎4.3 调用发送
    • 🔎4.4 效果展示
  • 🚀五、总结


🚀一、引言

微信公众号是企业与用户之间进行交互和传播信息的重要工具。在一些特定的场景中,我们可能需要给用户进行不限制次数的消息推送,以保持用户对公众号的关注和互动。本文将介绍如何使用PHP开发实现微信公众号主动推送消息的功能,并逐步指导您完成相关配置和开发的步骤。本文所使用到的是服务号,为了确保使用到更加完善的功能,建议通过企业服务号来进行推送。

在这里插入图片描述

🚀二、公众号主动推送应用场景介绍

微信公众号主动消息推送可以应用于多种场景,以下是一些常见的场景:

活动推广:公众号可以通过推送消息向用户宣传活动信息,如抽奖、优惠促销等,吸引用户参与活动。

新闻资讯:公众号可以定期推送最新的新闻资讯给用户,让用户了解实时的新闻信息。

订单状态更新:电商公众号可以通过消息推送通知用户订单的发货、配送和交易状态等信息,提供更好的用户服务。

会员营销:公众号可以通过推送消息向会员发送个性化的优惠券、积分变动等信息,增加用户的黏性和忠诚度。

客户服务:公众号可以通过消息推送回复用户的咨询、投诉等问题,提供更及时的客户服务。

行程提醒:旅游公众号可以根据用户提供的行程信息,通过消息推送提醒用户到达时间、预定的酒店、机票等信息。

消息互动:公众号可以通过消息推送与用户进行互动,如发送问卷调查、参与投票等,了解用户的需求和反馈。

如下图展示了一个腾讯的防诈骗推送。
在这里插入图片描述

总之,微信公众号主动消息推送可以根据不同的需求和场景,提供个性化的信息服务,提升用户体验和参与度。下面就来通过一系列步骤开发一个公众号主动消息推送消息功能。

🚀三、准备工作

在开始之前,我们需要完成以下几个准备工作。您可以大致先看一下,已经操作过的步骤可以省略。

🔎3.1 注册微信公众号

首先,您需要拥有一个微信公众号。如果还没有注册,可以访问微信公众平台进行注册。

🔎3.2 获取开发者ID和密钥

注册完成后,登录微信公众平台,在开发者中心获取开发者ID和密钥。这些信息将用于后续的接口配置和开发。

在这里插入图片描述

🔎3.3 配置服务器环境

在您的服务器上安装PHP运行环境,并确保具备相应的扩展库,如cURL扩展等。该环境将用于后续的开发和部署。

在这里插入图片描述

🔎3.4 配置微信公众号并开通客服

在完成准备工作后,我们来配置微信公众号以实现消息推送功能。

在这里插入图片描述

🔎3.5 设置服务器地址和Token

登录微信公众平台,进入开发者中心,在基本配置中找到服务器配置项。设置服务器地址为您的服务器域名,并设置Token为您自定义的令牌。

在这里插入图片描述

🔎3.6 验证接口配置信息

在完成服务器配置后,微信公众平台会向您的服务器发送一个验证请求。您需要在服务器中编写代码来处理这个请求,并根据微信公众平台的要求返回一个特定的字符串。如果验证通过,微信公众平台将会认为服务器配置成功。

🚀四、具体功能开发

🔎4.1 获取access_token

access_token有效期是2个小时,为了避免频繁请求微信接口耗时,将其存入到文件里面。并判断时间是否过期,如果过期才更新。主要代码如下:


/** @var string  */
const ACCESS_TOKEN_BASE_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential";/*** getAccessToken* @return false|string*/
static function getAccessToken()
{$wx = C('WX'); // 配置文件中获取,根据自己实际情况来$appid = $wx['appId']; // appId 微信后台有配置$appSecret = $wx['appSecret']; // 微信公众号后台给到的$tokenFile = dirname(__FILE__).'/accessToken.txt';if(!file_exists($tokenFile) || ((time() - filemtime($tokenFile)) > 7200)){$url = self::ACCESS_TOKEN_BASE_URL . "&appid=".$appid."&secret=".$appSecret;$result = json_decode(file_get_contents($url));$accessToken = $result->access_token;file_put_contents($tokenFile,$accessToken);return $accessToken;}return file_get_contents($tokenFile);
}

🔎4.2 发送客服消息

通过下面的代码结合上面access_token的获取,就可以实现将消息通过微信公众号主动推送给用户了。

/** @var string  */
CONST SEND_KEFU_MESSAGE_BASE_URL = "https://api.weixin.qq.com/cgi-bin/message/custom/send";/*** @param $content* @param $openid* @return true*/
static function sendKefuMsg($content, $openid)
{$token = self::getAccessToken();$url = self::SEND_KEFU_MESSAGE_BASE_URL . '?access_token=' . $token;$data = '{"touser":"' . $openid . '","msgtype":"text","text":{"content":"' . $content . '"}}';self::postRequest($url, $data);return true;
}/*** request 请求*/
static function postRequest($url, $data){$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_POST, 1);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);curl_setopt($curl, CURLOPT_POSTFIELDS, $data);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);$response = curl_exec($curl);curl_close($curl);return $response;
}

🔎4.3 调用发送

将上面的文件命名为Wx.class.php,由于方法都是静态方法,所以直接用下面的方法调用就发出去了。

$txt = <<<EOTXT
您有5条重要消息值得关注,请看....
1. 准备吃早饭
2. 准备吃午饭
3. 准备吃晚饭
4. 准备打游戏
5. 准备睡觉
EOTXT;
$openId = 'oK01n61riwhdd8q6ZwdZ7HgHSp'; // 这个是微信公众号对每个用户的唯一ID
Wx::sendKefuMsg($txt, $openId);

🔎4.4 效果展示

运行上面的发送代码,公众号就会将我们设置的内容直接发给用了,具体效果见下图。
在这里插入图片描述

🚀五、总结

通过本文的介绍,我们了解了如何使用PHP开发微信公众号不限次数的消息推送功能。实现了从准备工作到配置微信公众号,再到发送推送的完整逻辑。当然,这只是实现最核心的功能,你可以根据自己的需求和业务逻辑进行扩展和优化。当然主动推送消息也是要遵循一定规则的,可以看下图。

在这里插入图片描述
今天的文章就分享到这里,我们下次见。

这篇关于完整开发实现公众号主动消息推送,精彩内容即刻到达的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/415665

相关文章

Java的volatile和sychronized底层实现原理解析

《Java的volatile和sychronized底层实现原理解析》文章详细介绍了Java中的synchronized和volatile关键字的底层实现原理,包括字节码层面、JVM层面的实现细节,以... 目录1. 概览2. Synchronized2.1 字节码层面2.2 JVM层面2.2.1 ente

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图

Linux下修改hostname的三种实现方式

《Linux下修改hostname的三种实现方式》:本文主要介绍Linux下修改hostname的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下修改ho编程stname三种方式方法1:修改配置文件方法2:hFvEWEostnamectl命

Java使用Mail构建邮件功能的完整指南

《Java使用Mail构建邮件功能的完整指南》JavaMailAPI是一个功能强大的工具,它可以帮助开发者轻松实现邮件的发送与接收功能,本文将介绍如何使用JavaMail发送和接收邮件,希望对大家有所... 目录1、简述2、主要特点3、发送样例3.1 发送纯文本邮件3.2 发送 html 邮件3.3 发送带

Java实现数据库图片上传功能详解

《Java实现数据库图片上传功能详解》这篇文章主要为大家详细介绍了如何使用Java实现数据库图片上传功能,包含从数据库拿图片传递前端渲染,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、前言2、数据库搭建&nbsChina编程p; 3、后端实现将图片存储进数据库4、后端实现从数据库取出图片给前端5、前端拿到

Java实现将byte[]转换为File对象

《Java实现将byte[]转换为File对象》这篇文章将通过一个简单的例子为大家演示Java如何实现byte[]转换为File对象,并将其上传到外部服务器,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言1. 问题背景2. 环境准备3. 实现步骤3.1 从 URL 获取图片字节数据3.2 将字节数组

Win32下C++实现快速获取硬盘分区信息

《Win32下C++实现快速获取硬盘分区信息》这篇文章主要为大家详细介绍了Win32下C++如何实现快速获取硬盘分区信息,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 实现代码CDiskDriveUtils.h#pragma once #include <wtypesbase

Nginx实现前端灰度发布

《Nginx实现前端灰度发布》灰度发布是一种重要的策略,它允许我们在不影响所有用户的情况下,逐步推出新功能或更新,通过灰度发布,我们可以测试新版本的稳定性和性能,下面就来介绍一下前端灰度发布的使用,感... 目录前言一、基于权重的流量分配二、基于 Cookie 的分流三、基于请求头的分流四、基于请求参数的分

Python Excel实现自动添加编号

《PythonExcel实现自动添加编号》这篇文章主要为大家详细介绍了如何使用Python在Excel中实现自动添加编号效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、背景介绍2、库的安装3、核心代码4、完整代码1、背景介绍简单的说,就是在Excel中有一列h=会有重复

MySQL的隐式锁(Implicit Lock)原理实现

《MySQL的隐式锁(ImplicitLock)原理实现》MySQL的InnoDB存储引擎中隐式锁是一种自动管理的锁,用于保证事务在行级别操作时的数据一致性和安全性,本文主要介绍了MySQL的隐式锁... 目录1. 背景:什么是隐式锁?2. 隐式锁的工作原理3. 隐式锁的类型4. 隐式锁的实现与源代码分析4