收藏
回答

小程序云开发环境共享给公众号,发送不了公众号模板消息

框架类型 问题类型 终端类型 AppID 环境ID 基础库版本
小程序 Bug 工具 wx923c5dfc65663940,wxee9bdeae6d16b96a cloud1-1g6kzn9v7f2e4279 wx-server-sdk": "~3.0.1

//前端代码
sendTemplateMsg() {
    // 替换为实际参数:
    const params = {
      touser'ochWuvg4vb5bGkvaXxfUaOHtLBqc'// 公众号用户的 openid(需提前获取)
      templateId'VjMWY17E3ONXsOKk4y5pO226nG7DU5n3w2jRDCiY3Qg'// 公众号模板 ID
      data: { // 模板数据(与公众号模板字段一一对应)
        thing7: { value'杨朝宇' },
        thing5: { value'你有新消息请及时查看' },
        time3: { value'2025-08-28 09:25:26' },
      },
      url'https://your-domain.com/detail' // 点击跳转链接(可选)
    }


    wx.cloud.callFunction({
      name'sendTemplateMessage'// 云函数名
      data: params,
    }).then(res => {
      if (res.result.code === 0) {
        wx.showToast({ title'发送成功' })
      } else {
        wx.showToast({ title'发送失败'icon'none' })
        console.error(res.result.err)
      }
    }).catch(err => {
      wx.showToast({ title'调用失败'icon'none' })
      console.error(err)
    })
  },


//云函数
const cloud = require('wx-server-sdk');


exports.main = async (event, context) => {
  const { touser, templateId, data, url } = event;
  const wxContext = cloud.getWXContext();


  // 参数校验
  if (!touser || !templateId || !data) {
    return { code: 1, err: '参数缺失:touser、templateId、data为必填项' };
  }


  try {
    // 初始化资源方(小程序)的云环境实例
    const targetCloud = new cloud.Cloud({
      resourceAppid: "wx923c5dfc65663940", 
      resourceEnv: "cloud1-1g6kzn9v7f2e4279" // 共享的云环境ID
    });


    await targetCloud.init();


    // 调用发送模板消息接口,appid是公众号appid
    const result = await targetCloud.openapi({ appid: 'wxee9bdeae6d16b96a' }).officialAccount.messageTemplate.send({
      touser,
      templateId,
      data,
      url: url || ''
    });


    return { code: 0, success: true, result };
  } catch (err) {
    console.error('调用失败:', err);
    return { code: 2, success: false, err: err.toString() };
  }
};



回答关注问题邀请回答
收藏

2 个回答

  • 麦田
    麦田
    2天前

    云开发 发送模版 要添加ip白名单吗 如果要 云环境ip是多少啊

    2天前
    有用
    回复 1
    • wv
      wv
      2天前
      你说的是时候http请求方式,我用的是云调用方式。一直报错,显示appid没权限,但是公众号那边开通了模板消息权限,小程序也把云开发环境共享给了公众号,小程序和公众号页绑定在了开放平台
      2天前
      回复
  • showms
    showms
    2天前

    不知道跟本地调试模式有没有关系,可以试试云函数发布后小程序直接调用

    2天前
    有用
    回复 2
    • wv
      wv
      2天前
      大哥,还真是这种情况,而且代码不需要前面那些初始化数据,就下面这样简单代码,然后部署云函数即可。本地测试会报错,必须部署才行
      2天前
      回复
    • showms
      showms
      发表于小程序端
      2天前回复wv

      应该是部分场景下本地调试没有适配好的缘故,可以在这底下发一下论坛issue跟官方反馈一下 https://cnb.cool/tencent/cloud/cloudbase/community/-/issues

      2天前
      回复
登录 后发表内容
问题标签