小程序

最近更新时间:2019-06-19 17:13:28

腾讯云短信小程序体验版

开发前准备

在开始开发云函数调用云短信之前,需要准备以下信息:

  • 获取 SDK AppID 和 AppKey
    云短信应用 SDK AppIDAppKey 可在 短信控制台 的应用信息里获取,如您尚未添加应用,请到 短信控制台 中添加应用。
  • 申请签名
    一个完整的短信由短信签名短信正文内容两部分组成,短信签名需申请和审核,签名可在 短信控制台 的相应服务模块【内容配置】中进行申请,详细申请操作请参考 创建签名
  • 申请模板
    短信或语音正文内容模板需申请和审核,模板可在 短信控制台 的相应服务模块【内容配置】中进行申请,详细申请操作请参考 创建正文模板

参考文档

各个接口及其参数的详情介绍请参考 API 文档SDK 文档错误码微信小程序·云开发

使用指南

1. 安装微信开发者工具 IDE

根据 微信小程序云开发·起步 注册并获取小程序 AppID,同时安装微信开发者工具。

2. 新建小程序

  1. 选择【小程序项目】>【小程序】,单击
  2. 根据实际需求,填写以下参数:
    • 项目名称:请填写项目的名称。
    • 目录:请选择项目文件夹。
    • AppID:请输入注册时获取的正确 AppID。

      注意:

      小程序.云开发场景不支持测试号和无 AppID。

    • 开发模式:请选择【小程序】
    • 后端服务:支持【不使用云服务】、【小程序.云开发】和【腾讯云】三种选择,本文以选择【小程序.云开发】为例。

      说明:

      当使用【不使用云服务】或【腾讯云】时需自建后端 Server,由后端 Server 再调用云短信 API,相关 API 以及 SDK 请参考 腾讯云短信 API 以及 腾讯云短信 SDK

3. 新建云函数

  1. 右键单击【cloudfunctions】文件夹,选择【新建 Node.js 云函数】。
  2. 输入sendsms,按Enter确认。

4. 添加云函数依赖库

打开/cloudfunctions/sendsms/package.json文件,在dependencies中添加qcloudsms_js库,如下所示:

    {
          "name": "sendsms",
          "version": "1.0.0",
          "description": "",
          "main": "index.js",
          "scripts": {
            "test": "echo \"Error: no test specified\" && exit 1"
          },
          "author": "",
          "license": "ISC",
          "dependencies": {
                "wx-server-sdk": "latest",
                "qcloudsms_js": "^0.1.1"
          }
    }

5. 编写云函数处理逻辑

/cloudfunctions/sendsms/index.js文件中添加处理发送短信实现逻辑,本部分主要调用 qcloudsms_js 库相关接口。


    // 云函数入口文件
    const cloud = require('wx-server-sdk')
    const QcloudSms = require("qcloudsms_js")
    const appid = 140000001 // 替换成您申请的云短信 AppID 以及 AppKey
    const appkey = "abcdefghijkl123445"
    const templateId = 1234 // 替换成您所申请模板 ID
    const smsSign = "腾讯云" // 替换成您所申请的签名

    cloud.init()

    // 云函数入口函数
    exports.main = async (event, context) => new Promise((resolve, reject) => {    
      /*单发短信示例为完整示例,更多功能请直接替换以下代码*/
      var qcloudsms = QcloudSms(appid, appkey);
      var ssender = qcloudsms.SmsSingleSender();
      var params = ["5678"];
      // 获取发送短信的手机号码
      var mobile = event.mobile
      // 获取手机号国家/地区码
      var nationcode = event.nationcode
      ssender.sendWithParam(nationcode, mobile, templateId, params, smsSign, "", "", (err, res, resData) => {
          /*设置请求回调处理, 这里只是演示,您需要自定义相应处理逻辑*/
          if (err) {
            console.log("err: ", err);
            reject({ err })
          } else {
            resolve({ res, resData })
          }
        }
      );

    })

6. 部署云函数

右键单击/cloudfunctions/sendsms文件夹,选择【上传并部署(云端安装依赖)】。

7. 调用云函数

小程序提供 callfunction 进行云函数调用,您可以根据实际需求在任意JS逻辑处理函数中添加如下代码进行云函数调用。
例如,需要在页面小程序首页加载完成后发送短信,则可以在miniprogram/index/index.js的 onLoad 函数中添加如下代码。

    if(!wx.cloud) {
        wx.redirectTo({
          url: '../chooseLib/chooseLib',
         })
        return
    }
    wx.cloud.callFunction({
        name: 'sendsms',
        data: {
            mobile: '19012345678',
            nationcode: '86'
        },
        success: res => {
                console.log('[云函数] [sendsms] 调用成功')
                console.log(res.resData)
        },
        fail: err => {
                console.error('[云函数] [sendsms] 调用失败', err)
        }
    })

最后编译您的小程序,进行预览,至此您的小程序已可进行短信下发。

说明:

  • 如果程序中调用失败可以参考接口 错误码 说明,更多常见问题可参阅 FAQ
  • 如需使用更多功能,如指定内容单发短信,指定模板群发短信,发送语音通知,发送语音验证码以及拉取短信回执状态等,请参考 qcloudsms_js 库或自行封装 HTTP 接口
  • 无论单发/群发短信还是指定模板 ID 单发/群发短信都需要从控制台中申请模板并且模板已经审核通过,才可能下发成功,否则返回失败。