You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

615 lines
20 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

// pages/exampleDetail/index.js
// 云模板未安装错误码
const CLOUD_MODULE_NOT_INSTALLED = 'InnerError.ResourceNotFound';
Page({
data: {
type: '',
envId: '',
showUploadTip: false,
installModalVisible: false,
installModalTipText: '',
installModuleName: '',
installModulePageTitle: '',
userOpenId: 'ouSoxxxxxxxxxxxxxJp3zM',
currentOpenId:'',
templateId: 'XeULkxnxxxxxxxxxxxxxx9vRO0olhrQi34',
getErrorInfo:'',
securityContent:'hello world!',
securityMedia:'https://developers.weixin.qq.com/miniprogram/assets/images/head_global_z_@all.png',
mediaId:'MEDIA_ID',
sendCustomMessage:'Hello World',
urlLink:'https://wxaurl.cn/difT1VdVOLa',
smsTemplateId:'2053122',
phoneNumber:'+8611111111111',
appid:'appid',
csvLink:'extension://xxx.zip',
qrcode:'',
unlimitedQrcode:'',
qrcodeShortLink:''
},
handdleResult: function(data){
if(data.message.includes('env not exists') || data.message.includes('Environment not found') || data.message.includes('env check invalid be filterd')){
this.setData({
showUploadTip: true,
});
}
wx.hideLoading();
},
bindKeyInputCsvLink: function(e){
this.setData({
csvLink: e.detail.value
})
},
bindKeyInputUrlLink: function(e){
this.setData({
urlLink: e.detail.value
})
},
bindKeyInputSmsTemplateId: function(e){
this.setData({
smsTemplateId: e.detail.value
})
},
bindKeyInputPhoneNumber: function(e){
this.setData({
phoneNumber: e.detail.value
})
},
bindKeyInputAppid: function(e){
this.setData({
appid: e.detail.value
})
},
bindKeyInputSendCustomMessage: function(e){
this.setData({
sendCustomMessage: e.detail.value
})
},
bindKeyInputMediaId: function(e){
this.setData({
mediaId: e.detail.value
})
},
bindKeyInputSecurityMedia: function(e){
this.setData({
securityMedia: e.detail.value
})
},
bindKeyInputSecurityContent: function(e){
this.setData({
securityContent: e.detail.value
})
},
bindKeyInputTemplateId: function (e) {
this.setData({
templateId: e.detail.value
})
},
bindKeyInputOpenId: function (e) {
this.setData({
userOpenId: e.detail.value
})
},
clearError: function(){
this.setData({
userOpenId: '',
templateId: '',
getErrorInfo:'',
securityMedia:'',
securityContent:'',
mediaId:'',
sendCustomMessage:'',
urlLink:'',
smsTemplateId:'',
phoneNumber:'',
appid:'',
csvLink:'',
qrcode:'',
unlimitedQrcode:'',
qrcodeShortLink:''
})
},
onLoad(options) {
wx.setNavigationBarTitle({
title: `${options?.title}-${options?.subtitle}`
})
this.setData({ type: options?.type, envId: options?.envId});
},
// 发送消息
sendMessage() {
wx.showLoading({
title: '',
});
wx.cloud
.callFunction({
name: 'cloudbase_module',
data: {
name: 'wx_message_send_message',
data: {
template_id: this.data.templateId, // 所需下发的订阅模板id
page: "pages/index/index", //点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,示例index?foo=bar。该字段不填则模板无跳转
touser: this.data.userOpenId, //接收者(用户)的 openid
data:{ "thing1": { "value": 123 }, "thing4": { "value": 123 },"thing6": { "value": 123 },"thing7": { "value": 123 },"time6":{"value": "2022-11-32"} }, //模板内容,格式形如 { "key1": { "value": any }, "key2": { "value": any } }的object
miniprogram_state:"trial", //跳转小程序类型developer为开发版trial为体验版formal为正式版默认为正式版
lang:"zh_CN" //进入小程序查看”的语言类型支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文)默认为zh_CN
},
},
})
.then((resp) => {
if (resp?.result?.errcode === CLOUD_MODULE_NOT_INSTALLED) {
this.setData({
installModalVisible: true,
installModalTipText: '云开发>云模板>模板中心>小程序消息',
installModuleName: 'wx_message_send_message',
installModulePageTitle:'小程序消息-发送消息'
});
}else if(resp?.result?.errcode !== -1){
wx.showToast({
title: "发送失败",
icon: 'error',
duration: 2000
});
this.setData({
getErrorInfo:resp?.result?.errmsg,
})
}else {
wx.showToast({
title: "发送成功",
icon: 'success',
duration: 2000
});
}
wx.hideLoading();
})
.catch((e) => {
this.handdleResult(e);
});
},
// 创建activity_id
createMessageActivityId() {
wx.showLoading({
title: '',
});
wx.cloud
.callFunction({
name: 'cloudbase_module',
data: {
name: 'wx_message_create_activity_id',
data: {
openid: this.data.userOpenId, //为私密消息创建activity_id时指定分享者为openid用户。其余用户不能用此activity_id分享私密消息。openid与unionid填一个即可。私密消息暂不支持云函数生成activity id。
},
}
})
.then((resp) => {
if (resp?.result?.errcode === CLOUD_MODULE_NOT_INSTALLED) {
this.setData({
installModalVisible: true,
installModalTipText: '云开发>云模板>模板中心>小程序消息',
installModuleName: 'wx_message_send_message',
installModulePageTitle:'小程序消息-创建activity_id'
});
}else if(resp?.result?.activityId){
wx.showToast({
title: "创建成功",
icon: 'success',
duration: 2000
});
}else {
wx.showToast({
title: "创建失败",
icon: 'error',
duration: 2000
});
this.setData({
getErrorInfo:resp?.result?.errmsg,
})
}
wx.hideLoading();
})
.catch((e) => {
this.handdleResult(e);
});
},
// 获取小程序码
getCodeSrc() {
wx.showLoading({
title: '',
});
wx.cloud
.callFunction({
name: 'cloudbase_module',
data: {
name: 'wx_qrcode_get_qrcode',
data: {
path: 'pages/index/index', // 扫码进入的小程序页面路径,最大长度 1024 个字符不能为空scancode_time为系统保留参数不允许配置对于小游戏可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar",即可在 wx.getLaunchOptionsSync 接口中的 query 参数获取到 {foo:"bar"}。
width: 430, //二维码的宽度,单位 px。默认值为430最小 280px最大 1280px
auto_color: false, //默认值false自动配置线条颜色如果颜色依然是黑色则说明不建议配置主色调
line_color: { r: 0, g: 0, b: 0 }, //默认值{"r":0,"g":0,"b":0} auto_color 为 false 时生效,使用 rgb 设置颜色 例如 {"r":"xxx","g":"xxx","b":"xxx"} 十进制表示
is_hyaline: false, //默认值false是否需要透明底色为 true 时,生成透明底色的小程序码
env_version: 'trial', //要打开的小程序版本。正式版为 "release",体验版为 "trial",开发版为 "develop"。默认是正式版。
},
},
})
.then((resp) => {
if (resp?.result?.errcode === CLOUD_MODULE_NOT_INSTALLED) {
this.setData({
installModalVisible: true,
installModalTipText: '云开发>云模板>模板中心>微信小程序码和链接',
installModuleName: 'wx_qrcode',
installModulePageTitle:'微信小程序码和链接-获取小程序码'
});
} else {
wx.showToast({
title: "获取成功",
icon: 'success',
duration: 2000
});
this.setData({
qrcode: resp.result.tempFileURL,
});
}
wx.hideLoading();
})
.catch((e) => {
this.handdleResult(e);
});
},
// 获取不限制的小程序码
getUnlimitedCodeSrc() {
wx.showLoading({
title: '',
});
wx.cloud
.callFunction({
name: 'cloudbase_module',
data: {
name: 'wx_qrcode_get_unlimited_qrcode',
data: {
scene: 'abc', //最大32个可见字符只支持数字大小写英文以及部分特殊字符!#$&'()*+,/:;=?@-._~,其它字符请自行编码为合法字符(因不支持%,中文无法使用 urlencode 处理,请使用其他编码方式)
page: 'pages/index/index', //默认是主页,页面 page例如 pages/index/index根路径前不要填加 /不能携带参数参数请放在scene字段里如果不填写这个字段默认跳主页面。scancode_time为系统保留参数不允许配置
check_path: true, //默认是true检查page 是否存在,为 true 时 page 必须是已经发布的小程序存在的页面(否则报错);为 false 时允许小程序未发布或者 page 不存在, 但page 有数量上限60000个请勿滥用。
env_version: 'trial', //要打开的小程序版本。正式版为 "release",体验版为 "trial",开发版为 "develop"。默认是正式版。
width: 430, // 默认430二维码的宽度单位 px最小 280px最大 1280px
auto_color: false, //自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调,默认 false
line_color: {"r":0,"g":0,"b":0}, //默认是{"r":0,"g":0,"b":0} 。auto_color 为 false 时生效,使用 rgb 设置颜色 例如 {"r":"xxx","g":"xxx","b":"xxx"} 十进制表示
is_hyaline: false, //默认是false是否需要透明底色为 true 时,生成透明底色的小程序
},
},
})
.then((resp) => {
if (resp?.result?.errcode === CLOUD_MODULE_NOT_INSTALLED) {
this.setData({
installModalVisible: true,
installModalTipText: '云开发>云模板>模板中心>微信小程序码和链接',
installModuleName: 'wx_qrcode',
installModulePageTitle:'微信小程序码和链接-获取不限制的小程序码'
});
}else if(resp.result?.errmsg){
wx.showToast({
title: "获取失败",
icon: 'error',
duration: 2000
});
this.setData({
getErrorInfo:resp?.result?.errmsg,
})
} else {
wx.showToast({
title: "获取成功",
icon: 'success',
duration: 2000
});
this.setData({
unlimitedQrcode: resp.result.tempFileURL,
});
}
wx.hideLoading();
})
.catch((e) => {
this.handdleResult(e);
});
},
// 获取ShortLink
getShortLink() {
wx.showLoading({
title: '',
});
wx.cloud
.callFunction({
name: 'cloudbase_module',
data: {
name: 'wx_qrcode_generate_short_link',
data: {
page_url: 'pages/index/index', // 通过 Short Link 进入的小程序页面路径,必须是已经发布的小程序存在的页面,可携带 query最大1024个字符
page_title: '首页', //页面标题不能包含违法信息超过20字符会用... 截断代替
is_permanent: false, //默认值false。生成的 Short Link 类型短期有效false永久有效true
},
},
})
.then((resp) => {
if (resp?.result?.errcode === CLOUD_MODULE_NOT_INSTALLED) {
this.setData({
installModalVisible: true,
installModalTipText: '云开发>云模板>模板中心>微信小程序码和链接',
installModuleName: 'wx_qrcode',
installModulePageTitle:'微信小程序码和链接-获取ShortLink'
});
}else if(resp.result?.errmsg){
wx.showToast({
title: "获取失败",
icon: 'error',
duration: 2000
});
this.setData({
getErrorInfo:resp?.result?.errmsg,
})
} else {
wx.showToast({
title: "获取成功",
icon: 'success',
duration: 2000
});
this.setData({
qrcodeShortLink: resp.result.tempFileURL,
});
}
wx.hideLoading();
})
.catch((e) => {
this.handdleResult(e);
});
},
// 发送短信
sendCloudbaseSms() {
wx.showLoading({
title: '',
});
wx.cloud
.callFunction({
name: 'cloudbase_module',
data: {
name: 'wx_sms_new_send_cloudbase_sms',
data: {
env: this.data.envId, // 环境 ID
url_link: this.data.urlLink, // URL Link
template_id: this.data.smsTemplateId, //短信模版 ID 默认值2053122销类短信模版 ID)
template_param_list: ['xxx'], //短信模版变量数组
phone_number_list: [this.data.phoneNumber], //手机号列表,单次请求最多支持 1000 个境内手机号,手机号必须以+86开头
use_short_name: false, //是否使用小程序简称
resource_appid: this.data.appid, //资源方appid第三方代开发时可填第三方appid或小程序appid应为所填环境所属的账号APPID
},
},
})
.then((resp) => {
if (resp?.result?.errcode === CLOUD_MODULE_NOT_INSTALLED) {
this.setData({
installModalVisible: true,
installModalTipText: '云开发>云模板>模板中心>小程序短信',
installModuleName: 'wx_sms_new_send_cloudbase_sms',
installModulePageTitle:'小程序短信-发送短信'
});
}else if(resp?.result?.errmsg){
wx.showToast({
title: "发送失败",
icon: 'error',
duration: 2000
});
this.setData({
getErrorInfo:resp?.result?.errmsg,
})
}else {
wx.showToast({
title: "发送成功",
icon: 'success',
duration: 2000
});
}
wx.hideLoading();
})
.catch((e) => {
this.handdleResult(e);
});
},
// 创建发短信任务
sendCloudbaseSmsTask() {
wx.showLoading({
title: '',
});
wx.cloud
.callFunction({
name: 'cloudbase_module',
data: {
name: 'wx_sms_create_send_sms_task',
data:{
env: this.data.envId, // 环境 ID
file_url: this.data.csvLink, //短信 CSV 文件地址CodeUri
template_id: this.data.smsTemplateId, //短信模版 ID 默认值2053122销类短信模版 ID)
use_short_name: false //是否使用小程序简称
}
},
})
.then((resp) => {
if (resp?.result?.errcode === CLOUD_MODULE_NOT_INSTALLED) {
this.setData({
installModalVisible: true,
installModalTipText: '云开发>云模板>模板中心>小程序短信',
installModuleName: 'wx_sms_new_send_cloudbase_sms',
installModulePageTitle:'小程序短信-创建发短信任务'
});
}else if(resp?.result?.errmsg){
wx.showToast({
title: "创建失败",
icon: 'error',
duration: 2000
});
this.setData({
getErrorInfo:resp?.result?.errmsg,
})
}else {
wx.showToast({
title: "创建成功",
icon: 'success',
duration: 2000
});
}
wx.hideLoading();
})
.catch((e) => {
this.handdleResult(e);
});
},
// 文本内容安全识别
securityMessageCheck() {
wx.showLoading({
title: '',
});
wx.cloud
.callFunction({
name: 'cloudbase_module',
data: {
name: 'wx_security_msg_sec_check',
data: {
scene: 1, // 场景值 1, 代表资料
version: 2, // 接口版本号2.0版本为固定值2
content: this.data.securityContent, // 要检测的内容
},
},
})
.then((resp) => {
if (resp?.result?.errcode === CLOUD_MODULE_NOT_INSTALLED) {
this.setData({
installModalVisible: true,
installModalTipText: '云开发>云模板>模板中心>小程序安全能力',
installModuleName: 'wx_security_msg_sec_check',
installModulePageTitle:'小程序安全能力-文本内容安全识别'
});
}else if(resp?.result?.result?.label === 100){
wx.showToast({
title: "内容正常",
icon: 'success',
duration: 2000
});
}else{
wx.showToast({
title: "内容异常",
icon: 'error',
duration: 2000
});
}
wx.hideLoading();
})
.catch((e) => {
this.handdleResult(e);
});
},
// 音视频内容安全识别
securityMediaCheck() {
wx.showLoading({
title: '',
});
wx.cloud
.callFunction({
name: 'cloudbase_module',
data: {
name: 'wx_security_media_check',
data: {
scene: 1, // 场景值 1, 代表资料
version: 2, // 接口版本号2.0版本为固定值2
media_url: this.data.securityMedia, // 要检测的内容
media_type: 2, //媒体资源类型2 代表图片图片
},
},
})
.then((resp) => {
if (resp?.result?.errcode === CLOUD_MODULE_NOT_INSTALLED) {
this.setData({
installModalVisible: true,
installModalTipText: '云开发>云模板>模板中心>小程序安全能力',
installModuleName: 'wx_security_msg_sec_check',
installModulePageTitle:'小程序安全能力-音视频内容安全识别'
});
}else if(resp?.result?.errmsg){
wx.showToast({
title: "内容异常",
icon: 'error',
duration: 2000
});
this.setData({
getErrorInfo:resp?.result?.errmsg,
})
}else{
wx.showToast({
title: "内容正常",
icon: 'success',
duration: 2000
});
}
wx.hideLoading();
})
.catch((e) => {
this.handdleResult(e);
});
},
// 获取用户openId
getUserOpenId() {
wx.showLoading({
title: '',
});
wx.cloud
.callFunction({
name: 'cloudbase_module',
data: {
name: 'wx_user_get_open_id',
},
})
.then((resp) => {
if (resp?.result?.errcode === CLOUD_MODULE_NOT_INSTALLED) {
this.setData({
installModalVisible: true,
installModalTipText: '云开发>云模板>模板中心>小程序用户信息',
installModuleName: 'wx_user_get_open_id',
installModulePageTitle:'小程序用户信息-获取用户openId'
});
}else {
this.setData({
currentOpenId: resp.result.openId,
});
}
wx.hideLoading();
})
.catch((e) => {
this.handdleResult(e);
});
},
// 手机号快速验证
getPhoneNumber(e) {
console.log(e.detail.code); // 动态令牌
wx.cloud.callFunction({
name: 'cloudbase_module',
data: {
name: 'wx_user_get_phone_number',
data: {
code: e.detail.code,
},
},
success: (res) => {
const phoneInfo = res.result?.phoneInfo;
console.log('获取到的手机号信息: ', phoneInfo);
},
});
}
});