目录
1、前提
2、开通静态
2.1、点击云开发中更多->静态网站
2.2、点击开通,使用管理员验证即可
3、短信发送规则
3.1、短信内容
3.2、短信规则
3.3、短信内容长度计算规则
3.4、短信内容规范
3.5、短信发送记录查询
3.6、调用方式
4、云调用
4.1、接口方法
4.2、请求参数
4.3、返回值
4.4、异常
4.5、代码示例
4.6、 回复结果
5、添加小程序的链接
5.1、添加链接
5.1.1、上传文件
5.1.2、把网站配置的索引文件名称改为上传文件名
5.1.3、打开【未登录用户权限开关】
5.1.4、短信发送的代码
5.1.5、设置成功
5.2、URL Scheme
5.2.1、新建云服务函数
6、注意事项
7、官方文件路径整理
开通完成界面
详情请见:微信官方文档-sendSms
短信由签名和正文内容组成:短信签名是位于短信正文前【】中的署名,小程序发送短信时,签名为小程序名称。
例如,短信长度为150字,则按照67字/67字/16字分隔成3条计费
短信内容规范限制
前往「微信开发者工具 - 云开发控制台 - 运营分析 - 监控图表 - 短信监控」中查看短信发送记录,当前小程序所有的短信发送记录均可在该记录中查询;
我使用云调用
openapi.cloudbase.sendSms
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
env | string | 是 | 环境 ID | |
phoneNumberList | Array. |
是 | 手机号列表,单次请求最多支持 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. |
是 | sms_type="Notification" 时必填,短信模版变量数组 | |
useShortName | bool | false | 否 | 是否使用小程序简称 |
resourceAppid | string | 否 | 资源方appid,第三方代开发时可填第三方 appid 或小程序appid,应为所填环境所属的账号APPID |
返回的 JSON 数据包
属性 | 类型 | 说明 |
---|---|---|
errCode | number | 错误码 |
errMsg | string | 错误信息 |
sendStatusList | Array. | 开放数据列表 |
errCode 的合法值
值 | 说明 |
---|---|
0 | 成功 |
sendStatusList 的结构
属性 | 类型 | 说明 |
---|---|---|
serialNo | string | 发送流水号 |
phoneNumber | string | 手机号码 |
code | string | 短信请求错误码 |
message | string | 短信请求错误码描述 |
isoCode | string | 国家码或地区码 |
抛出的异常
属性 | 类型 | 说明 |
---|---|---|
errCode | number | 错误码 |
errMsg | string | 错误信息 |
errCode 的合法值
值 | 说明 |
---|---|
-1 | 系统繁忙,此时请开发者稍候再试 |
-501007 | 参数有误,具体原因参考 errmsg |
-601027 | 无效的环境 |
-601032 | 小程序昵称不能为空 |
-601033 | 仅支持非个人主体小程序 |
-607004 | 无效的 URL Link |
try {
SmsStr = '注册码为:123456'
const SmsResult = await cloud.openapi.cloudbase.sendSms({
env: 'xxxxxxxx',
content: SmsStr,
phoneNumberList: [
"+86123456789"
]
})
console.log("SmsResult: ",SmsResult)
} catch (SmsErr) {
console.log("SmsErr: ",SmsErr)
}
正常刚才发送的信息,格式是
【小程序名称】自定义文本,跳转小程序(链接,未配置为空),回T退订
我们能够自定义的只有自定义文本,和可以给小程序添加跳转链接,详情见:微信官方文档-云开发短信跳小程序
短信跳转小程序的步骤就是:
所有你需要准备一个网页代码,用于短信跳转,官方文档给了一个 jump-mp.html文件模板:官方文档
你需要准备一个云函数,用于网页访问之后并跳转
界面路径:云开发->更多->静态网址
正常如下,为空的
使用的官方的jump-mp.html,注意里面的replace记得替换,openWeapp中的name和data记得跟云函数对应
官方文档内容:
打开小程序
另外如果只是做跳转试验,但是不能跳转到小程序,使用下面官方给的模板文件即可,跳转到小程序其实是需要重新编辑这个文档的(我的理解是这样的,不知道是不是自己哪里没有弄对)
window.onload = function(){
window.web2weapp.init({
appId: 'wx999999', //替换为自己小程序的AppID
gh_ID: 'gh_999999',//替换为自己小程序的原始ID
env_ID: 'tcb-env',//替换小程序底下云开发环境ID
function: {
name:'openMini',//提供UrlScheme服务的云函数名称
data:{} //向这个云函数中传入的自定义参数
},
path: 'pages/index/index.html' //打开小程序时的路径
})
}
我的是jump-mp.html
此时已经发送的短消息已经存在的链接,但是跳转内容是显示的你jump-mp的内容,不能跳转到小程序,只能跳转到网页
路径:云开发->设置->找到未登录用户访问权限->打开
const SmsResult = await cloud.openapi.cloudbase.sendSms({
env: 'agsroot-0g83w0dce43785c2',
content: "发布了短信跳转小程序的新能力",
path: "/jump-mp.html",
phoneNumberList: PhoneList
})
其中的path是静态网站中上传的文件存储路径
此时的短信已经添加了链接
链接的网页在外部浏览器是通过 URL Scheme 的方式来拉起微信打开主体小程序的。
填写一个UrlScheme服务云函数。这个云函数主要用来调用微信服务端能力,获取对应的Scheme信息返回给调用前端。
下载的h5跳转的官方文件如下:
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
switch (event.action) {
case 'getUrlScheme': {
return getUrlScheme()
}
}
return 'action not found'
}
async function getUrlScheme() {
return cloud.openapi.urlscheme.generate({
jumpWxa: {
path: '/page/component/index', //
query: '',
},
// 如果想不过期则置为 false,并可以存到数据库
isExpire: false,
// 一分钟有效期
expireTime: parseInt(Date.now() / 1000 + 60),
//无需求可以去掉这两个参数(isExpire,expire_time)
})
}
这里的path就是你需要跳转的小程序界面,比如我的是pages/Main/Main,
注意:
这个是jump-mp.html文件中的是对应起来的。如果改动必须两个都改动
async function openWeapp(onBeforeJump) {
var c = window.c
const res = await c.callFunction({
name: 'public',
data: {
action: 'getUrlScheme',
},
})
console.warn(res)
if (onBeforeJump) {
onBeforeJump()
}
location.href = res.result.openlink
}
如果都没有配置错的话,现在已经可以跳转并成功了
1、html文件中的openWeapp下的name; ‘public’将public替换的云函数名称
2、html文件中的openWeapp下的action是可以自定义,也可以缺省云函数直接调用
3、每次修改html文件后记得在静态函数中上传文件
4、html点击跳转需要的路径和云函数中jumpWxa调用的路径都为你的界面路径,比如说我的是pages/Main/Main
5、发送短信时的path为静态网址的文件路径,可看上面的短信发送的代码下有说明
6、一定要打开未登录权限开关
7、如果出现跳转失败分析问题
7.1、查看云函数是否调用,进云函数日志查看,云函数是否调用成功
7.2、如果云函数调用失败那网页端是正确的,只是云函数中出现了问题,一般都是你的路径设置错误,或者文件的参数未对应
7.3、如果云函数调用成功还跳转失败,那可能是你的权限问题,记得检查一下自己的权限
7.4、如果云函数未调用,检查网页端配置,检查一下官方文档需要replace是否都替换
7.5、如果网页端未正常显示,你的静态网站配置错误,你的网页代码出现了问题
7.6、如果接收的验证码没有链接,检查静态网站配置和发送的path是否于静态网站不一致
总之,先配置静态网站的网页,设置云函数,将网页和云函数绑定,发送短信时携带网页链接
官方h5跳转:点击下载资源包
短信跳小程序介绍:微信官方文档-短信跳小程序
短信跳小程序教程:微信官方文档-短信跳小程序教程
获取URL Scheme:微信官方文档-获取URL Scheme
URL Scheme调用: 微信官方文档-URL Scheme调用