使用微搭低代码实现小程序消息订阅及发送功能

2022-02-07 22:50:57 浏览数 (1)

日常我们使用小程序时,经常会有消息弹框提醒,提示你是否允许小程序发送消息。当你选择允许后,在小程序提交的数据当状态发生改变时,比如订单的状态发生改变,小程序会推送订阅消息方便用户及时获取最新的数据。

那低代码里如何实现呢?现在新出了个功能叫连接器,就是解决这种自定义业务逻辑或者调用第三方api的。

登录控制台,点击自定义连接器

在这里插入图片描述在这里插入图片描述

输入名称和标识进行创建

在这里插入图片描述在这里插入图片描述

点击添加方法添加自己的方法

在这里插入图片描述在这里插入图片描述

因为我们要调用微信的api所以我们选择自定义代码

在这里插入图片描述在这里插入图片描述

输入如下代码

代码语言:javascript复制
/**
* 使用 npm 包 request 发送http请求, 详细使用文档可以参考
*  https://github.com/request/request#readme
*/
const cloud = require('wx-server-sdk')
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV,
})

module.exports =async function (params, context) {
  // params 即为入参定义的结构, 可以在 request 的请求配置中使用 params
  try {
    console.log("cloud",params.templateid)
    const result = await cloud.openapi.subscribeMessage.send({
        "touser": params.openid,
        "page": 'my',
        "lang": 'zh_CN',
        "data": {
          "thing2": {
            "value": params.thing2
          },
          "date3": {
            "value": params.date3
          }
        },
        "templateId": params.templateId,
        "miniprogramState": 'trial'
      })

    console.log("result",result)
    return result
  } catch (err) {
    return err
  }
};

touser需要传入用户的openid,page是从模板消息打开的页面,data是需要传递的字段,templateId是模板消息,miniprogramState标识小程序的版本,有开发版、体验版和正式版

这些参数要如何获取呢?需要登录小程序的管理后台

在这里插入图片描述在这里插入图片描述

找到订阅消息,我们可以从公共模板库里选用模板,如果不满足还可以自己申请模板,这里可以复制模板id,然后启用模板时选择的字段就是我们需要传递的参数

要想给用户发送消息,首先需要让用户订阅,我们创建一个低代码方法,用来提示用户订阅

代码语言:javascript复制
export default function({event, data}) {
  try{

wx.requestSubscribeMessage({
  tmplIds: ['WE9eFhF_qSpEfcz29Hu2MMgWKQ2lVdVg7EbDtnjmMMQ'],
  success (res) {
    console.log("success")
   },
   fail(res){
     console.log(res)
   }
})
}catch (e) {
    console.log('错误代码', e.code, '错误信息', e.message);
  }
}

我们刚才介绍了如何获取模板id,这里只需要将你自己的id进行替换就可以

用户订阅之后就需要发送消息,我们可以再定义一个低代码方法用来发送消息

代码语言:javascript复制
export default async function({event, data}) {
    try{
        const openid = app.dataset.state.useropenid
        console.log(openid)
    const result = await app.cloud.callConnector({
        name: 'yhgl_9ovu38n',
        methodName: 'send',
        params: {
            "thing2": "12222",
            "date3": "2015年01月05日",
            "templateId": "WE9eFhF_qSpEfcz29Hu2MMgWKQ2lVdVg7EbDtnjmMMQ",
            "openid": openid
        }, // 方法入参
    });
    console.log(result)
    }catch(e){
        console.log('错误代码', e.code, '错误信息', e.message);
    }
}

低代码方法定义好后,我们可以在页面添加两个按钮,分别绑定上述方法,整个流程就做好了

在这里插入图片描述在这里插入图片描述

最终的效果

在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

0 人点赞