IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 微信小程序云函数发天气预报 -> 正文阅读

[移动开发]微信小程序云函数发天气预报

要求的是给一群固定的同事,每天定时定点发短信推送当天和明天的天气、气温、风速等等信息,短信平台用的是腾讯云通信,天气接口用的是心知天气的数据,之所以用微信小程序还是因为懒,云开发属实方便。

1.开通腾讯云短信,注册签名、模板,拿到API接口。

2.开通心知天气API的免费版。

3.因为人数较多,涉及到自动推送且心知天气免费版的访问速度限制,首先要把通讯录导进云数据库里,而小程序的云数据库单次访问只能读20条数据,用云函数打破限制。


const cloud = require('wx-server-sdk')
cloud.init({env:'your id'})
exports.main = async (event, context) => {
  const db = cloud.database()
  let num = await db.collection('msg_Sendlist').count()
  num = count.total
  let all = []
  for (let i = 0; i < num; i += 20) {
    let list = await db.collection('your collection').skip(i).get()
    all = all.concat(list.data);
  }
  return all;
}

4.先获取通讯录,拿到人名手机号,再根据上传的位置获取天气,封装成数据推给短信平台

  put(){
    //设置计时器循环,可以避免速度过快导致的发送不出去
    var index = 0
    console.log(index)
  var a=setInterval(function () {
    console.log(index)
    const element = array1[index];
  pname = element.name
  var city = element.city
  up[0] = pname//人名
  up[1]=city //地区
  phNum = element.phNum
  lat = element.lat
  lng =  element.lng
  var f='https://api.seniverse.com/v3/weather/daily.json?key= key value'
  var g='&language=zh-Hans&unit=c&start=0&days=5'
  var local = lat+":"+lng//发送人所在位置
  var url = f+local+g
  wx.request({
    url: url,
    success:res=>{
      var resdata = res.data.results[0]//获取结果写入数组
      var daliy = resdata.daily[0]
      up[2]=daliy.text_day+"-"+daliy.text_night//天气变化
      up[3]=daliy.high+"-"+daliy.low//气温变化
      up[4]=daliy.wind_speed//风速变化
      console.log(up)
      wx.cloud.callFunction({
        name:'nodejs name',
        data:{
          phNum:"+86"+phNum,//向云端发送数据
          text:up
        },
        success:res=>{
          console.log("发送成功")
        },
        fail:console.error()
      })

    }
  })
  console.log(up)
  index++
  
  if(index>=array1.length)
  { 
      clearInterval(a) 
  }
  //循环执行代码
}, 4000)//此处设置访问时间间隔避免读取速度过快
  },

5.短信推送云函数,这个地方反复好几次,最后发现小程序端传的数组要在云函数端再封一下才可以


const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {
  var pn=[] //这里踩了坑,本来以为数组可以直接传进API,结果还要在云函数里再封一下
  var tx=[]
  pn[0] = event.phNum
  tx = event.text
  const tencentcloud = require("tencentcloud-sdk-nodejs")
  const smsClient = tencentcloud.sms.v20210111.Client
  const client = new smsClient({
  credential: {
    secretId:'your id,
    secretKey:'your key',
  },
  region: "ap-guangzhou",
  profile: {
    signMethod: "HmacSHA256",
    httpProfile: {
      reqTimeout: 30,
      endpoint: "sms.tencentcloudapi.com"
    },
  },
  })
  const params = {
  SmsSdkAppId:" your appid",
  SignName:" your signname",
  ExtendCode: "",
  SenderId: "",
  SessionContext: "",
  PhoneNumberSet: pn,
  TemplateId: " your id",
  TemplateParamSet: tx,
  }
  client.SendSms(params, function (err, response) {
  if (err) {
    console.log(err)
    return
  }
  console.log(response)
  })
}

?

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-09-06 11:16:17  更:2021-09-06 11:18:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:46:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码