小程序云开发实现订阅消息

2023-05-16

链接

简书博主示例:https://www.jianshu.com/p/d90f22dac001
官方文档:
官方文档1
文档2
云调用

使用方法demo

假如这是一个点餐系统,想让顾客下单以后,派件员能够收到消息内容包括订单号与电话号码

首先,挑选适用的模板

进入官方文档1
在这里插入图片描述
我这里挑选的是这个
在这里插入图片描述

点击详情,后面要用到这两个 一个是模板id一个是发送内容的格式
在这里插入图片描述

小程序页面获取下发权限

获取用户权限 具体文档文档2
这里就用到了刚刚的模板ID
正常的逻辑应该是在 小程序初始化完成时,onLaunch钩子函数里用wx.getSetting来判断有没有授权,如果没有就跳出来让授权 wx.getSetting接口文档
在这里插入图片描述
有个要注意的地方
在这里插入图片描述

在这里插入图片描述
这个地方如果不勾选的话,wx.getSetting是拿不到有没有授权过的
在这里插入图片描述
勾选的话
在这里插入图片描述

现在为了演示方便,就做了个按钮 点击以后执行test方法

在这里插入图片描述

之后需要操作云函数了,用云函数调用模板消息接口
那模板消息是需要传入一些参数的,所以我们要在小程序端传入一些参数给云函数,这时候就需要知道模板消息都需要哪些参数
https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subscribeMessage.send.html#method-cloud
必填的几项
在这里插入图片描述
因为是给接单人员用的,所以openId就可以固定成某人个的openid了,
模板id的话就是一开始申请给的模板id,这两个参数我都放到一个文件里面了,需要用到的时候引入就ok
在这里插入图片描述
data的格式是什么呢
在这里插入图片描述
key是什么呢 申请模板的时候也给了
在这里插入图片描述
在这里插入图片描述

所以我们需要传入这三个参数
在这里插入图片描述
云函数名为test

编写云函数

在这里插入图片描述
保存 右键增量上传
点击按钮 授权订阅消息以后
对应接单人的微信就能收到消息了
请添加图片描述

代码

SubscribeMessage.js

// 模板消息

import {
  tmplId,
  // 送货人员openid
  sendPeopleOpenId
} from './constant'
// 判断有没有订阅过  管理人员需要调用它 判断有没有永久授权
function isSubscribe() {
  return new Promise((resolve, reject) => {
    wx.getSetting({
      withSubscriptions: true,
      success(e) {
        if (e.subscriptionsSetting[tmplId]) {
          wx.showToast({
            title: '已经永久授权',
          })
          resolve(e)
        } else {
          reject("未永久授权")
        }
      },
      fail(err) {
        console.log(err);
        reject(err)
      }
    })
  })
}
// 授权逻辑
function requesetSubscribe() {
  return new Promise((resolve, reject) => {
    wx.requestSubscribeMessage({
      tmplIds: [tmplId],
      success(res) {
        resolve(res)
      },
      fail(err) {
        reject(err)
      }
    })
  })
}
// 管理人员点击授权按钮后调用
export function authtmpl() {
  // 如果已经永久授权过
  isSubscribe().then((res) => {
    wx.showToast({
      title: '已经永久授权',
    })
    console.log("已经永久授权了");
  }).catch((err) => {
    console.log(err);
    requesetSubscribe().then((res) => {
      // 再次判断是否授权成功
      isSubscribe().then((res) => {
        wx.showToast({
          title: '已经永久授权',
        })
      }).catch(err => {
        wx.showToast({
          title: '请勾选“总保持以上选择,不再询问”',
        })
      })
    })
  })
}
// 用户购买商品后发送订阅消息
export function sendMessage(out_trade_no, phone) {
  const data = {
    "character_string1": {
      "value": out_trade_no
    },
    "phone_number8": {  
      "value": phone
    }
  }
  return new Promise((resolve, reject) => {
    wx.cloud.callFunction({
      name: 'subscribeMessage',
      data: {
        data,
        tmplId,
        sendPeopleOpenId
      }
    }).then((res) => {
      console.log(res);
      resolve(res)
    }).catch((err) => {
      console.log(err);
      reject(err)
    })
  })
}

云函数

// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()

// 云函数入口函数
exports.main = async (event, context) => {
  try {
    const result = await cloud.openapi.subscribeMessage.send({
        "touser": event.sendPeopleOpenId,
        "lang": 'zh_CN',
        "data": event.data,
        "templateId": event.tmplId,
      })
    return result
  } catch (err) {
    return err
  }
}

注意 报43101错误

确定用户没有取消订阅 但是依然报这个错误
这是为什么呢 ?
虽然是长期授权了,但是但是!!!! 订阅次数是默认一次的
https://developers.weixin.qq.com/community/develop/doc/000aca915645284919dc3814b51c00

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

小程序云开发实现订阅消息 的相关文章

  • docker build 用法

    在包含Dockerfile 文件的目录下执行 xff1a docker build t nginx v3 即是创建了镜像 docker build 命令进行镜像构建 其格式为 xff1a docker build 选项 lt 上下文路径 U
  • Docker 镜像备份与迁移

    1 容器保存为镜像 docker commit pinyougou nginx mynginx pinyougou nginx 是容器名称 mynginx 是新的镜像名称 2 镜像导出 docker save o dockerdemo ta
  • android T 前台Service

    获取android 13 用户控制 用户在长时间运行的应用程序上获得更多透明度和控制权 xff1a 前台服务仍然需要包含通知 xff0c 并且应用程序必须请求权限才能显示通知 FGS 通知现在可以被用户关闭而不影响 FGS用户可以在任务管理
  • android 8.0+后台Service限制

    后台Service限制 背景 每次在后台运行时 xff0c 应用都会消耗一部分有限的设备资源 xff0c 例如 RAM 这可能会影响用户体验 xff0c 如果用户正在使用占用大量资源的应用 xff08 例如玩游戏或观看视频 xff09 xf
  • CMake入门(一)Ubuntu下使用和Window下使用

    引用一段知乎上关于 xff1a CMake 如何入门 xff1f 生态如此 xff0c 长久来看 xff0c 绕不开 就像Github 看了下 xff1a B站上的一个资源 cmake构建c 43 43 项目快速入门2 1 在Windows
  • 安装ubuntu成功后不能重启(nomodeset)躺坑记录acpi int3400:00:Unsupported event

    针对这篇文章的补充 xff1a 安装ubuntu成功后不能重启 xff08 nomodeset xff09 legalhighhigh的博客 CSDN博客 如果找不到 34 Boot Options ed boot 61 initrd 61
  • npm install 出现错误 unable to access ‘https://github.com/adobe-webplatform/eve.git/‘:

    前言 xff1a 输入命令 npm install registry 61 https registry npm taobao org xff0c 出现错误 unable to access 39 https github com adob
  • Kubernetes初识

    一 Kubernetes是什么 xff1f xff08 一 xff09 读音 了解一个新事物 xff0c 最先学会都是怎么读 xff0c 不然以后会一直读错下去 xff0c 到时候说出去可能就会被人嘲笑 Kubernetes xff0c 读
  • Linux操作系统基本代码

    1 xff08 ls xff09 list 列出目录的所有项 ls 查看当前目录 xff08 ls l 文件路径 xff09 以详细模式查看 xff08 ls xff5e xff09 展示主目录文件 xff08 ls xff09 展示当前目
  • C语言 const、static、volatile等关键字的作用

    目录 前言 const static volatile extern 总结 前言 C语言里面有许多关键字 xff0c 本文结合我自己的了解简单讲讲几个常用关键字的作用 const 问 xff1a const有什么用 xff1f 答 xff1
  • 函数调用,中断以及进程切换,的现场保护的区别

    注意以下过程描述了两种armv7指令集的内核的中断表现 xff08 cortex A7和cortex m3 xff09 xff0c 但是cortex A7和cortex m3表现很不一样 xff0c 因为Cortex m3只有用户级和特权级
  • Cortex-M3 PendSV 中断 系统调用 说明

    参考 Cortex M3权威指南中文版 PendSV异常是和系统调用有些类似 xff0c cpu 需要手动将往NVIC 的PendSV 悬起寄存器中写1 xff0c 然后产生中断 xff0c 系统调用 xff08 SVC xff09 是co
  • 微积分的直观理解

    在微积分中 xff0c 我们进行定积分计算的时候一般是用牛顿莱布尼兹公式 xff0c 不定积分计算也类似 xff0c 都需要寻找原函数F x xff0c 但是如果想直观的理解微积分 xff0c 我们需要顺着公式的反方向进行理解 xff0c
  • Makefile中调用make命令,-C和-f选项的区别

    C选项 Makefile中 C是递归调用子目录中的Makefile xff0c C选项后跟目录 xff0c 表示到子目录下执行子目录的Makefile xff0c 顶层Makefile中的export的变量还有make默认的变量是可以传递给
  • 卡尔曼滤波

    标准卡尔曼滤波推导相关 预测 predict 更新 update 注意 xff0c 以下对于时间的下标 xff0c 有的时候用t有的时候用k xff0c 它们其实是一样的 xff0c 因为参考不同的资料 xff0c 所以写的比较乱 其中是隐
  • EM算法原理

    Notion The all in one workspace for your notes tasks wikis and databases
  • Android ko module compile 简介

    Notion The all in one workspace for your notes tasks wikis and databases
  • volatile c语言关键字 / cache / 内存一致性

    Notion The all in one workspace for your notes tasks wikis and databases
  • Qt中的QWidget::move函数

    QWidget move函数 原型 xff1a void move int x int y void move const QPoint amp 其中move的原点是父窗口的左上角 xff0c 如果没有父窗口 xff0c 则桌面即为父窗口
  • 欧拉角和万向节死锁

    一 什么是欧拉角 欧拉角就是物体绕坐标系三个坐标轴 xff08 x xff0c y xff0c z轴 xff09 的旋转角度 xff0c 在这里坐标系可以是世界坐标系 xff0c 也可以是物体坐标系 xff0c 旋转顺序也是任意的 xff0

随机推荐

  • 【freeRTOS内存管理策略详解】

    内存管理对应用程序和操作系统来说都非常重要 现在很多的程序漏洞和运行崩溃都和内存分配使用错误有关 FreeRTOS操作系统将内核与内存管理分开实现 xff0c 操作系统内核仅规定了必要的内存管理函数原型 xff0c 而不关心这些内存管理函数
  • NGFF、M.2、PCIe、NVMe概念区分以及PCIEx1 x4 x8 x16区别

    对于NGFF M 2 PCIe NVMe等概念的说明 解决方案 NGFF Next Generation Form Factor xff0c 顾名思义 xff0c 是物理外形 Form Factor 的标准 与 NGFF 并列的是 2 5
  • 二重积分和雅可比行列式

    我们以二重积分为例进行说明 xff0c 首先说结论 xff1a 一 结论 若x 61 x u v y 61 y u v 存在偏导数 xff0c 则二阶雅可比行列式为 61 61 dxdy 61 J2 dudv J2的绝对值 且 其中积分区域
  • 雅可比行列式和雅可比矩阵

    接触雅可比行列式是在二重积分的变量变换中 xff0c 参见我的另一篇文章https blog csdn net xiaoyink article details 88432372 下面我们来详细说明一下雅可比行列式和雅可比矩阵 雅可比矩阵
  • jlink-v8 固件修复

    一 先说 jlink v8 v9 v10区别 v8基本价格在40左右 xff0c 芯片是atml的 xff0c 但是很多反应是掉固件和提示盗版问题 v9现在主流 xff0c 盗版价100左右 xff0c 主控芯片stm32 做的比较成熟 x
  • kubernetes学习-快速上手速查手册

    目录 使用k3s快速搭建k8s安装k8s dashboard使用Helm部署K8S资源k8s核心命令一切推倒重来资源创建方式NamespacePodDeploymentServiceIngress解决官网Ingress安装不了问题使用方式
  • 作为一个4年程序员至少需要掌握的专业技能

    一名3年工作经验的程序员应该具备的技能 xff0c 在机缘巧合之中 xff0c 看了这篇博客 感觉自己真的是很差 xff0c 一直想着会写if else 就已经是一名程序员了 xff0c 在工作之余也很少学习 于是 xff0c 自己的cod
  • C语言与C++的区别

    一 C 43 43 简介 本贾尼 斯特劳斯特鲁普 于1979年4月在贝尔实验室负责分析UNIX系统的内核的流量情况 于1979年10月开始着手开发一种新的编程语言 在C语言的基础上增加了面向对象机制 这就是C 43 43 的来历 在1983
  • 我的2011-当梦想照进现实

    我的2011年 xff0c 之所以是现在的样子 xff0c 始缘于我三年前的一个决定 离职考研 对于工作了两年的我来说 xff0c 离职考研是人生的一场博弈 我的2011年 xff0c 结束了研究生期间对三维骨骼动画渲染的相关研究 xff0
  • Dockerfile RUN 同时执行多条命令

    Dockerfile RUN 同时执行多条命令 Dokcerfile中的命令每执行一条即产生一个新的镜像 xff0c 当前命令总是在最新的镜像上执行 如下Dockerfile xff1a RUN span class hljs built
  • HC-SR04超声波模块使用记录

    文章目录 HC SR04超声波模块使用记录轮询测量方式一 模块使用中的问题二 应对方法三 注意 分时测量利用输入捕获测量利用输入捕获测量 HC SR04超声波模块使用记录 具体使用方法见HC SR04使用手册 xff0c 本文重点记录该模块
  • 【C语言冒泡排序、选择排序和快速排序】

    文章目录 前言一 冒泡排序二 选择排序三 快速排序四 代码设计与实现代码设计代码实现 调试结果冒泡排序改良 延伸思考总结 前言 本文简单介绍了C语言的冒泡排序 选择排序 快速排序 xff0c 结合本人的理解与使用做一下记录 一 冒泡排序 思
  • 平衡车制作---原理篇

    平衡车制作 原理篇 文章目录 平衡车制作 原理篇前言直立控制直观感受内部机理 速度控制方向控制总结 前言 本篇教程内容主要来自于 直立平衡车模参考设计方案 xff0c 且这里是从概念层面讲述的并没有具体的控制理论方面的内容 有了这些概念方面
  • FreeRTOS使用注意

    FreeRTOS使用注意 xff1a 中断中必须使用带FromISR结尾的API函数只有中断优先级处于FreeRTOS可管理的范围内时 xff0c 才能使用FreeRTOS提供的API函数中断中不要使用FreeRTOS提供的内存申请和释放函
  • 现代控制理论基础总结

    现代控制理论基础总结 xff08 线性部分 xff09 学习现代控制理论也有两个月的时间了 xff0c 里面涉及的基础内容和公式十分之多 xff0c 所以现在对各部分基础知识作一个总结 1 控制系统的状态表达式 在现代控制理论中 xff0c
  • 题库(关于c++的网站都盘了)大盘点(好多没盘到)

    1 keda ac 2 hydro ac 3 luogu com cn 4 cplusplus com 5 leetcode cn 6 https loj ac 7 noi cn 8 ybt ssoier cn 8088 9 learncp
  • 利用MapReduce进行二次排序--附例子

    首先先来明确几个概念 xff1a 1 分区 partition 1 xff09 分区 xff08 partition xff09 xff1a 默认采取散列值进行分区 xff0c 但此方法容易造成 数据倾斜 xff08 大部分数据分到同一个r
  • MapReduce之单表关联Join输出祖父母、孙子---(附例子)

    需求 xff1a 一个文件 xff0c 有子女和对应的父母 xff0c 要求输出 祖父母 孙子 xff0c 文件如下 xff1a 单表关联 结果 xff1a child parent grand child Tom Lucy Alice T
  • 如何把 ubuntu 16.04.7 命令行界面下的系统语言更改为中文?

    如果你的 ubuntu 16 04 7 系统在命令行下的默认语言是英文 xff0c 比如下面这样 xff1a 怎么更改才能让某些输出单词显示成中文呢 xff1f 可以修改 etc default locale 这个文件 xff0c 先看一下
  • 小程序云开发实现订阅消息

    链接 简书博主示例 xff1a https www jianshu com p d90f22dac001 官方文档 xff1a 官方文档1 文档2 云调用 使用方法demo 假如这是一个点餐系统 xff0c 想让顾客下单以后 xff0c 派