实现微信的订阅消息或模板消息API来实现实时通知(服务通知)

news2024/9/20 20:58:04

实现微信的订阅消息或模板消息API以实现实时通知,需要经过几个关键步骤,包括用户订阅、消息发送和接收消息事件。以下是具体实现流程:
在这里插入图片描述

1. 用户订阅消息

首先,需要让用户订阅消息。这通常通过前端代码触发一个授权请求来完成:

wx.requestSubscribeMessage({
  tmplIds: ['您的模板ID'], // 从微信公众平台获取的模板ID数组
  success (res) {
    // 用户点击了“同意”按钮
    if (res.errMsg === 'requestSubscribeMessage:ok') {
      // 可以在这里调用后台接口,将用户订阅状态保存到数据库
    }
  },
  fail (err) {
    // 用户点击了“拒绝”按钮
    console.log('用户拒绝订阅', err);
  }
})

2. 配置模板消息

在微信公众平台中配置模板消息,获取模板ID。模板消息的内容和样式需要符合微信的要求。

3. 发送模板消息

当需要发送消息时,可以使用微信公众平台提供的API发送模板消息。这通常在服务器端完成:

使用云函数发送模板消息示例(Node.js):
const cloud = require('wx-server-sdk')

cloud.init()
exports.main = async (event, context) => {
  const wxContext = cloud.getWxContext()

  try {
    const result = await cloud.openapi.subscribeMessage.send({
      touser: event.openId, // 用户的OpenID
      templateId: '您的模板ID',
      data: {
        'thing1': {
          'value': '您的数据',
          'color': '#173177'
        },
        // 其他模板数据
      },
      page: '/index', // 用户点击消息跳转的小程序页面
      miniprogramState: 'developer', // 跳转小程序类型
    })
    return result
  } catch (e) {
    console.error(e)
  }
}
使用服务器发送模板消息示例(PHP):
use EasyWeChat\Factory;

$options = [
    'app_id' => 'your-app-id',
    'secret' => 'your-app-secret',
    'token' => 'your-token',
    'aes_key' => 'your-encoding-aes-key',
];

$app = Factory::officialAccount($options);
$app->template_message->send([
    'touser' => '用户的OpenID',
    'template_id' => '您的模板ID',
    'url' => '用户点击消息跳转的URL',
    'data' => [
        'User' => 'Dear',
        'Date' => '2024-08-17',
        'Content' => 'Your message content',
    ],
]);

4. 接收消息事件

当用户触发某些事件(如提交投诉或建议)时,小程序服务器需要接收这些事件并处理。这通常通过监听微信公众平台的事件消息来完成。

接收事件示例(Node.js):
// 在小程序的逻辑服务中监听事件
cloud.event.subscribe('submit_message', async (event) => {
  // 处理事件,例如发送模板消息
  const result = await cloud.openapi.subscribeMessage.send({
    // 发送模板消息的参数
  })
  return result
})
接收事件示例(PHP):
// 在处理微信公众平台请求的脚本中
$app->server->push(function ($message) {
  if ($message['MsgType'] === 'event') {
    // 处理事件,例如用户提交投诉或建议
    // 发送模板消息
    $app->template_message->send([
      // 发送模板消息的参数
    ]);
  }
});

5. 测试和调试

在开发过程中,使用微信开发者工具进行测试和调试,确保消息发送和接收功能正常。

注意事项

  • 确保遵守微信官方文档中关于模板消息的所有规定和限制。
  • 用户订阅消息后,才能向用户发送模板消息。
  • 模板消息的内容需要提前在微信公众平台中配置并通过审核。
  • 服务器配置应确保安全,避免滥用模板消息发送功能。

通过上述步骤,您可以实现微信小程序的订阅消息或模板消息API,以实现实时通知的功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2048829.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C:每日一题:字符串左旋

题目:实现一个函数,可以实现字符串的左旋 例如:ABCD左旋一个字符就是BCDA;ABCD左旋两个字符就是CDAB; 1、解题思路: 1.确定目标旋转k个字符,我们要获取字符串的长度 len,目的是根…

8.14 day bug

bug1 好家伙,折腾一个小时没通过,原来是代码写多了 // 定义初始状态 const defaultState {login: false };// 定义 reducer const reducer (state defaultState, action) > {if (action.typeLOGIN) {// 当接收到 LOGIN action 时,更新…

备战秋招60天算法挑战,Day20

题目链接: https://leetcode.cn/problems/reverse-bits/ 视频题解: https://www.bilibili.com/video/BV1W2421Z7bi/ LeetCode 190.颠倒二进制位 题目描述 颠倒给定的 32 位无符号整数的二进制位。 举个例子: 输入:n 00000010…

Nginx--简介、安装、常用命令和配置文件

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 一、Nginx简介 1、nginx介绍 Nginx (engine x) 是一个高性能的 HTTP 和 反向代理 服务,也是一个IMAP/POP3/SMTP服务。因它的稳定性、丰…

分布式锁实现方案--redis、zookeeper、mysql

分布式锁的几种实现方式 悲观锁和乐观锁分布式锁的实现要求 -- 互斥性、避免死锁、可重入性、高可用行、性能互斥-只能有一个客户端持有锁 -- redis setnx避免死锁引入过期时间 -- redis ttl锁过期问题 -- 自动续期 -- redis释放别人锁问题 -- 锁附加唯一性 -- 给每个客户端设置…

【嵌入式linux开发】智能家居入门6:最新ONENET,物联网开放平台(QT、微信小程序、MQTT协议、ONENET云平台、旭日x3派)

智能家居入门6:最新ONENET物联网开放平台 前言最终现象一、ONENET云平台创建产品与设备二、使用MQTT客户端软件测试2.1 测试前的准备2.2 测试 三、LInux QT代码四、onenet 云端API介绍及微信小程序代码4.1 onenet API介绍4.2 微信小程序代码 五、板端运行 前言 ONE…

LeetCode 热题100-24

回文链表 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head [1,2,2,1] 输出:true示例 2: 输入&#xff…

四层负载企业实战

通过四层负载LVSkeepalived将请求转发到nginx代理服务器。通过代理服务器访问后端真实应用服务。 拓补图: 准备环境6台机器; lvskeepalived---两台 nginx代理 ---两台 tomcat----一台 php ----一台 所有机器关闭防火墙和selinux 所有机器解析如下…

APP安全检测报告内容详解

一、APP安全检测的必要性 APP安全检测是确保移动应用安全的重要一环。在开发过程中,由于技术、人员和管理等方面的原因,APP可能存在各种安全漏洞和风险。这些漏洞一旦被黑客利用,可能导致用户数据泄露、恶意代码注入、应用被篡改等严重后果。…

Windows下使用QT5.14.2编译MySQL8.0对应的最新64位驱动程序步骤

不得不说mysql更新的速度是真的快,最近一两年都更新了好几个的小版本了。如果安装了高版本的 mysql软件,低版本的驱动就不支持了,因此需要重新使用QT来编译对应的mysql驱动。具体办法如下: 1、官网下载最新的mysql8.0安装包。下载…

day04--js的综合案例

1.1 商品全选 需求&#xff1a;商品全选 1. 全选 &#xff1a;点击全选按钮,所有复选框都被选中 2. 全不选 &#xff1a;点击全不选按钮,所有复选框都被取消选中 3. 反选 &#xff1a; 点击反选按钮,所有复选框状态取反 <!DOCTYPE html> <html lang"en">…

智慧校园云平台电子班牌系统源码,智慧教育一体化云解决方案

智慧校园云平台电子班牌系统&#xff0c;利用先进的云计算技术&#xff0c;将教育信息化资源和教学管理系统进行有效整合&#xff0c;实现生态基础数据共享、应用生态统一管理&#xff0c;为智慧教育建设的统一性&#xff0c;稳定性&#xff0c;可扩展性&#xff0c;互通性提供…

利用PDAL库实现Las文件向PLY文件的转换

1、官网的下载链接 PDAL&#xff08;Point Data Abstraction Library&#xff09;是一个开源的C库&#xff0c;专门用于处理三维点云数据。它提供了数据读取、转换、过滤、统计分析等多种功能&#xff0c;支持多种数据格式&#xff0c;如LAS、LiDAR、ASCII等。在IT行业中&…

Java常用集合(List、Map)类型相关问题整理

一、背景 针对Java基础集合的部分&#xff0c;对一些常见的问题进行整理&#xff0c;方便后续能够随时复习 二、问题与回答 &#xff08;1&#xff09;Java集合类ArrayList初始化时数组的默认长度是多少&#xff1f; 答&#xff1a;在new ArrayList() 这段代码执行完后&a…

类Unix环境在Windows上的演进史

自从以Unix为基础的操作系统被发明以来&#xff0c;尝试在Windows环境中模仿Unix操作的工具就一直存在。这种需求源于许多原因&#xff0c;包括Unix对脚本和命令行工具的强大支持&#xff0c;以及Unix和Linux系统在科学、工程和其他技术领域的广泛使用。下面就让我们一起探讨下…

input[type=checkbox]勾选框自定义样式

效果图&#xff1a; <template> <input class"rule-checkbox" type"checkbox" checked v-model"isChecked" /> </template><script setup lang"ts"> import { ref } from vue; const isChecked ref(); </…

应急响应-DDOS-技术指南

初步预判 通常&#xff0c;可从以下几方面判断服务器/主机是否遭受DDoS攻击查看防火墙、流量监控设备、网络设备等是否出现安全告警或大量异常数据包。如图所示&#xff0c;通过流量对比&#xff0c;发现在异常时间段存在大量UDP数据包&#xff0c;并且与业务无关。 通过安全设…

猫毛还是满天飞?宠物空气净化器是个好帮手

家里养了几只可爱的小猫咪&#xff0c;每天都想它们贴贴&#xff0c;有时候看到它们这么可爱的待在家里&#xff0c;都不想出门上班了。每天睁眼是它们&#xff0c;闭眼前也是它们&#xff0c;只要我待在家里&#xff0c;它们就和我一起挪动&#xff0c;好像身边多了几只可爱的…

qt-12工具盒(ToolBox)

工具盒--ToolBox drawer.hdrawer.cppmain.cpp运行图 drawer.h #ifndef DRAWER_H #define DRAWER_H #include <QWidget> #include <QToolBox> #include <QToolButton> #include <QGroupBox> #include <QVBoxLayout>class Drawer : public QToolB…

机械学习—零基础学习日志(如何理解线性代数5)

零基础为了学人工智能&#xff0c;正在快乐学习&#xff0c;每天都长脑子 特征向量和特征值 我们知道&#xff0c;线性映射&#xff0c;也就是矩阵&#xff0c;其实就是平面的一种变换。 但是在矩阵变换过程中&#xff0c;我们会发现有一个方向上&#xff0c;变化方向会与x的…