# cloudbase.sendSms

本接口应在服务器端调用,详细说明参见服务端API

本接口支持云调用。需开发者工具版本 >= 1.02.1904090(最新稳定版下载),wx-server-sdk >= 0.4.0

发送支持打开云开发静态网站的短信,该 H5 可以打开小程序。详情可参考静态网站 H5 跳小程序

短信内容

短信由签名和正文内容组成:

短信签名是位于短信正文前【】中的署名,小程序发送短信时,签名为小程序名称。

  • 正文内容是由短信模板和变量构成,例:{1},跳转小程序 {2} 回T退订,模板参数中 {1},{2} 是变量:
  • {1} :用户可自定义传入的内容,当前最长为30个字。
  • {2} :用户传入的静态托管的地址,例如 /action/index.html?action=double12。 示例:【云开发】能力上新,跳转小程序 https://tcbe.cn/VcdrUJK0 回T退订

短信资源包

前往“开发者工具-云开发-设置-环境设置-资源包”中购买。

第三方代开发

小程序需要将【短信服务】或【云开发】权限集授权给第三方,第三方才可代小程序调用此接口。第三方在调用接口时,可选择使用第三方的环境或小程序的环境,默认使用小程序的环境。在resource_appid填入第三方的appid,在env填入第三方账号下的环境,即可使用第三方的环境。

调用方式:

# HTTPS 调用

# 请求地址

POST https://api.weixin.qq.com/tcb/sendsms?access_token=TOKEN

# 请求参数

属性 类型 默认值 必填 说明
access_token / cloudbase_access_token string 接口调用凭证
env string 环境 ID
phone_number_list Array.<string> 手机号列表,单次请求最多支持 1000 个境内手机号,手机号必须以+86开头
sms_type string Marketing 短信类型,营销类短信:Marketing;通知类短信:Notification
content string sms_type="Marketing" 时必填,自定义短信内容,一条短信最多为70个字。可自定义内容最多为 30 个字符,详情参考短信规则
path string sms_type="Marketing" 时必填,云开发静态网站 path,不需要指定域名,例如/index.html
template_id string sms_type="Notification" 时必填,模版 ID
template_param_list Array.<string> sms_type="Notification" 时必填,短信模版变量数组
use_short_name bool false 是否使用小程序简称
resource_appid string 资源方appid,第三方代开发时可填第三方appid或小程序appid,应为所填环境所属的账号APPID

# 返回值

# Object

返回的 JSON 数据包

属性 类型 说明
errcode number 错误码
errmsg string 错误信息
send_status_list Array.<Object> 开放数据列表

errcode 的合法值

说明 最低版本
0 请求成功
-1 系统繁忙,此时请开发者稍候再试
-501007 参数有误,具体原因参考 errmsg
-601027 无效的环境
-601032 小程序昵称不能为空
-601033 仅支持非个人主体小程序
-607004 无效的 URL Link

send_status_list 的结构

属性 类型 说明
serial_no string 发送流水号
phone_number string 手机号码
code string 短信请求错误码
message string 短信请求错误码描述
iso_code string 国家码或地区码

# 营销类短信请求数据示例

{
  "env":"online-12345678910",
  "phone_number_list":[
     "+8612345678910"
  ],
  "sms_type": "Marketing",
  "content":"发布了新的能力",
  "path":"/index.html",
  "use_short_name": true
}

# 通知类短信请求数据示例

{
  "env":"online-12345678910",
  "phone_number_list":[
     "+8612345678910"
  ],
  "sms_type": "Notification",
  "template_id": "923584",
  "template_param_list": ["商品", "/index.html"]
}

# 返回数据示例

{
  "errcode":0,
  "send_status_list":[
     {
        "serial_no":"8:gFIqWUHzllUyOFRHgeu20201231",
        "phone_number":"+8612345678910",
        "code":"Ok",
        "message":"send success",
        "iso_code":""
     }
  ]
}

# 云调用

云调用是微信云开发提供的在云函数中调用微信开放接口的能力,需要在云函数中通过 wx-server-sdk 使用。

# 接口方法

openapi.cloudbase.sendSms

需在 config.json 中配置 cloudbase.sendSms API 的权限,详情

# 请求参数

属性 类型 默认值 必填 说明
env string 环境 ID
phoneNumberList Array.<string> 手机号列表,单次请求最多支持 1000 个境内手机号,手机号必须以+86开头
smsType string Marketing 短信类型,营销类短信:Marketing;通知类短信:Notification
content string sms_type="Marketing" 时必填,自定义短信内容,一条短信最多为70个字。可自定义内容最多为 30 个字符,详情参考短信规则
path string sms_type="Marketing" 时必填,云开发静态网站 path,不需要指定域名,例如/index.html
templateId string sms_type="Notification" 时必填,模版 ID
templateParamList Array.<string> sms_type="Notification" 时必填,短信模版变量数组
useShortName bool false 是否使用小程序简称
resourceAppid string 资源方appid,第三方代开发时可填第三方appid或小程序appid,应为所填环境所属的账号APPID

# 返回值

# Object

返回的 JSON 数据包

属性 类型 说明
errCode number 错误码
errMsg string 错误信息
sendStatusList Array.<Object> 开放数据列表

errCode 的合法值

说明 最低版本
0 成功

sendStatusList 的结构

属性 类型 说明
serialNo string 发送流水号
phoneNumber string 手机号码
code string 短信请求错误码
message string 短信请求错误码描述
isoCode string 国家码或地区码

# 异常

# Object

抛出的异常

属性 类型 说明
errCode number 错误码
errMsg string 错误信息

errCode 的合法值

说明 最低版本
-1 系统繁忙,此时请开发者稍候再试
-501007 参数有误,具体原因参考 errmsg
-601027 无效的环境
-601032 小程序昵称不能为空
-601033 仅支持非个人主体小程序
-607004 无效的 URL Link

# 营销类短信请求数据示例

const cloud = require('wx-server-sdk')
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV,
})
exports.main = async (event, context) => {
  try {
    const result = await cloud.openapi.cloudbase.sendSms({
        "env": 'online-12345678910',
        "content": '发布了新的能力',
        "path": '/index.html',
        "phoneNumberList": [
          "+8612345678910"
        ],
        "smsType": 'Marketing',
        "useShortName": true
      })
    return result
  } catch (err) {
    return err
  }
}

# 通知类短信请求数据示例

const cloud = require('wx-server-sdk')
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV,
})
exports.main = async (event, context) => {
  try {
    const result = await cloud.openapi.cloudbase.sendSms({
        "env": 'online-12345678910',
        "phoneNumberList": [
          "+8612345678910"
        ],
        "smsType": 'Notification',
        "templateId": '923584',
        "templateParamList": [
          "商品",
          "/index.html"
        ]
      })
    return result
  } catch (err) {
    return err
  }
}

# 返回数据示例

{
  "errCode": 0,
  "sendStatusList": [
    {
      "code": "Ok",
      "message": "send success",
      "serialNo": "8:gFIqWUHzllUyOFRHgeu20201231",
      "phoneNumber": "+8612345678910",
      "isoCode": ""
    }
  ],
  "errMsg": "openapi.cloudbase.sendSms:ok"
}