当前位置: 首页 > 工具软件 > Bmob-sdk-qq > 使用案例 >

Web 腾讯云Bmob云开发

巫马庆
2023-12-01

微信公众号/H5 应用/PC Web 应用

云开发为 H5 类应用提供丰富的 SDK 能力,开发者使用 SDK 快速构建 H5 应用,可作为公众号后台、普通 H5 应用以及H5 活动页;同时也支持作为 PC Web 后台应用,例如 Web 管理系统、Web 网站等。

云开发 CloudBase Web 快速开始 - 快速入门 - 文档中心 - 腾讯云 (tencent.com)

创建云函数

云开发 CloudBase 快速开始 - 开发指南 - 文档中心 - 腾讯云 (tencent.com)

在项目根目录下(cloudbaserc.json 所在目录)运行命令,即可部署 node-app 函数

tcb fn deploy node-app

部署完成后可以使用 tcb fn list 命令查看已经部署完成的函数列表

tcb fn list

云函数云函数 | 云开发 CloudBase - 一站式后端云服务 

托管后端服务_Node.js

云开发 CloudBase Node.js 快速开始 - 快速入门 - 文档中心 - 腾讯云 (tencent.com)

实战案例

云开发 CloudBase Web 端其他实战案例 - 视频专区 - 文档中心 - 腾讯云 (tencent.com)

在公众号中使用云开发

在公众号中使用云开发 | 微信开放文档 (qq.com)

python+腾讯云python五分钟开发微信公众号接口_哔哩哔哩_bilibili

文章:Python利用腾讯云函数开发微信公众号

云函数编写概览 - Serverless - 控制台 (tencent.com)

微信官方文档微信公众平台开发概述 | 微信开放文档 (qq.com)

微信云开发在公众号中使用云开发 | 微信开放文档 (qq.com)

云函数编写示例

const cloud = require('wx-server-sdk')    //引入云函数包
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV          //初始化云函数环境
})

exports.main = async (event) => {
  const { ENV, OPENID, APPID } = cloud.getWXContext()

  // 如果云函数所在环境为 abc,则下面的调用就会请求到 abc 环境的数据库
  const dbResult = await cloud.database().collection('test').get()

  return {
    dbResult,
    ENV,
    OPENID,
    APPID,
  }
}

用云函数获取access token:学会微信服务端开发第一步 - 简书 (jianshu.com)

用云函数获取用户信息:Bmob云 Serverless 开发公众号邀请返利 - 简书 (jianshu.com)

应用列表-Bmob后端云

测试号:微信公众平台 (qq.com)

这个文档太棒了!云函数 · Web – Bmob后端云

function onRequest(request, response, modules) {
    var token = "weixin";         //这里的值必须与在微信公众号后台填入的token值一致
    var crypto = modules.oCrypto; //使用加解密模块
    var httptype = modules.oHttptype; //获取调用云函数的是post或者get方式
    var xml2js = modules.oXml2js; //实现xml和js格式之间的相互转换
    var db = modules.oData;         //数据库对象
    var functions = modules.oFunctions;//调用云函数
    if ("get" == httptype) {
         //是get方法,则是微信验证回调的url是否有效
          var oriStr = [token, request.query.timestamp, request.query.nonce].sort().join('')
          var code = crypto.createHash('sha1').update(oriStr).digest('hex');
          if (code == request.query.signature) { //验证通过,输出
              response.end(request.query.echostr);
          } else {
              response.end("Unauthorized");
          }
    } else {
           //是post,接收定阅者发送过来的消息后返回,把反馈意见存储表“message”中。
            functions.run({
            "name": "exportaccesstoken"
            },function(err,data){
            var accesstoken=JSON.parse(data).accesstoken;//已经拿到accesstoken了!接口调用凭据,接口调用都要用
            db.insert({
              "table":"message",             //表名,也已经存到数据库中了!
              "data":{"userId":request.body.xml.FromUserName,"content":request.body.xml.Content}           
            },function(err,data){                        
              //构造公众号后台所需要的xml格式,并返回给公众号后台  ,在这后边写新逻辑!相当于很多回调!
                //1.模板消息回复-----------------------------------------------------------------------
                 if (request.body.xml.Content=='model1') {//返回模板消息还有点问题
                  functions.run({
                  "name": "sendmodelmes",
                  "data":{"toUser":request.body.xml.FromUserName,"accesstoken":accesstoken}
                  },function(err,data){});
                 };
                // 2.关注后发送消息--------------------------------------------------------------------
	            if((request.body.xml.MsgType == 'event') && (request.body.xml.Event == 'subscribe')) {	//格式是什么啊,应该没问题
		        var replyStr = "感谢你的关注!" + "\n";
     	        functions.run({
                "name": "create_text_xml",//还是给自己发
                "data":{"FromUserName":request.body.xml.FromUserName,"ToUserName":request.body.xml.ToUserName,"Content":replyStr}
                },function(err,data){
                 response.end(data);
                });
     	}
                //改为调用发送文本消息函数:
                functions.run({
                "name": "create_text_xml",//还是给自己发
                "data":{"FromUserName":request.body.xml.FromUserName,"ToUserName":request.body.xml.ToUserName,"Content":request.body.xml.MsgType}
                },function(err,data){
                 response.end(data);
                });
            });
            });

    }
}
//开发心得:调用云函数要在回调里面再写新逻辑    

12.5 实现云函数被动回复消息,并且可获得access token

12.6想实现自定义菜单和模板消息

自定义菜单文档:

接口调用请求说明

http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

自定义菜单接口可实现多种类型按钮,如下:微信开放文档 (qq.com)

  1. click:点击推事件用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event的结构给开发者(参考消息接口指南),并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值与用户进行交互;
  2. view:跳转URL用户点击view类型按钮后,微信客户端将会打开开发者在按钮中填写的网页URL,可与网页授权获取用户基本信息接口结合,获得用户基本信息。

对云函数代码很有帮助:(128条消息) nodejs 实现微信公众号自定义菜单、关注回复、自定义回复_菜鸟驿站2020的博客-CSDN博客_nodejs 微信公众号自定义菜单

它的逻辑很好:(128条消息) 微信公众号接入第三方服务器,设置自动回复、关键回复、自定义菜单,配置及开发流程_你的才华撑不起野心时,静下心学习;你的能力驾驭不了目标时,沉下心努力-CSDN博客

Form卓柚工作室报名信息采集 (wps.cn) 

 类似资料: