收藏
回答

到底能不能用定时器调用subscribeMessage.send云函数?

希望实现用户在小程序中授权接收订阅消息后,每天早10点发送订阅消息提醒用户背单词。现在实现了一个调用了subscribeMessage.send的云函数,且在客户端调用这个云函数,可以正常工作;但是用定时器定时调用这个云函数则报错:Error: errCode: -501007 invalid parameters | errMsg: subscribeMessage.send:fail Invalid request param

看了一些帖子,有人说云函数定时触发器无法调用自带api。如果是这样,那我说的功能岂不是实现不了?求解答!

回答关注问题邀请回答
收藏

6 个回答

  • 牛
    2019-10-22

    更新小程序开发者工具到最新的nightly版本,然后重新上传云函数配置试一下。

    如果还不行,提供appid和调用时间,我们查一下。

    2019-10-22
    赞同 1
    回复 17
    • 假装在上海
      假装在上海
      2019-10-22
      定时器如何触发啊
      2019-10-22
      回复
    • 假装在上海
      假装在上海
      2019-10-22
      现在是nightly1.02.1910182  appid:wxd57c95836d8d1cc3
      云函数config.json如下
      2019-10-22
      回复
    • Yan Lu
      Yan Lu
      2019-10-22
      感谢大神,看到nightly更新说明了:
      2019.10.18
      A 新增 云开发定时触发器触发的云函数支持使用云调用


      太太太及时了,我去试试再回来报告~另外用云端测试调用还是不支持是吗?
      2019-10-22
      1
      回复
    • Yan Lu
      Yan Lu
      2019-10-22
      还是不行,AppID wx9f2d498718380426,调用时间是今天22日中午13:44。报错说是用户没有授权,但我已经授权过了(从客户端调用可以正常接收订阅消息,另外在小程序设置中的消息订阅已经再次确认打开。)。求解,谢谢。


      日志
      START RequestId: f27bcda9-f48e-11e9-9be7-525400697544
      Event RequestId: f27bcda9-f48e-11e9-9be7-525400697544
      2019-10-22T05:44:00.519Z error
      2019-10-22T05:44:00.520Z { Error: errCode: 43101 | errMsg: openapi.subscribeMessage.send:fail user refuse to accept the msg hint: [Sb00404125]
          at new CloudSDKError (/var/user/node_modules/wx-server-sdk/index.js:6387:28)
          at /var/user/node_modules/wx-server-sdk/index.js:2542:43
          at step (/var/user/node_modules/tslib/tslib.js:136:27)
          at Object.next (/var/user/node_modules/tslib/tslib.js:117:57)
          at fulfilled (/var/user/node_modules/tslib/tslib.js:107:62)
          at
          at process._tickCallback (internal/process/next_tick.js:188:7)
        errCode: 43101,
        errMsg: 'openapi.subscribeMessage.send:fail user refuse to accept the msg hint: [Sb00404125]' }
      END RequestId: f27bcda9-f48e-11e9-9be7-525400697544
      Report RequestId: f27bcda9-f48e-11e9-9be7-525400697544 Duration:245ms Memory:256MB MaxMemoryUsed:37.175781MB
      2019-10-22
      1
      回复
    • 假装在上海
      假装在上海
      2019-10-22回复Yan Lu
      你这定时器是云函数里面配置的吗 ,这些日志哪里看到的呢
      2019-10-22
      回复
    查看更多(12)
  • 匿旅
    匿旅
    2019-12-17

    解决了,终于不报 -501007 错误了,主要进行了以下两方面更改,具体哪种更改起的作用,等我待会测试一下再说:

    1. 微信开发者工具切换为 Nightly 版本

    2. 将原先放在另一个云函数内的订阅信息发送功能挪至云函数定时触发器下执行


    —————————— 分割线 ——————————

    我切换微信开发者工具 Stable1.02.1911180, 依然成功的发送了订阅消息,那么看来报错的原因就在于:不能在云函数定时触发器里去调用另一个云函数里的云调用。

    2019-12-17
    赞同 1
    回复 1
    • 行者无忌
      行者无忌
      2019-12-27
      我来试试看
      2019-12-27
      回复
  • DuDuDu
    DuDuDu
    2019-10-22

    我这边可以的哦,理论上也应该是可以的。

    2019-10-22
    赞同 1
    回复
  • 村姑翠花
    村姑翠花
    2019-10-23

    持续关注,坚决支持社区给大家提供沟通技术的这个平台宗旨。

    2019-10-23
    赞同
    回复
  • 🌟leander🌟
    🌟leander🌟
    2019-10-22

    请问你定时器触发时怎么把每一个订阅了的用户openid传到云函数呢

    2019-10-22
    赞同
    回复 8
    • Yan Lu
      Yan Lu
      2019-10-23
      不用传,云函数有直接获得用户openid的能力,代码如下:
      https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/functions/userinfo.html
      官方文档还是值得花时间通读一遍的。
      2019-10-23
      回复
    • 🌟leander🌟
      🌟leander🌟
      2019-10-23回复Yan Lu
      那你这个每天10点给订阅了的用户发推送信息的功能可以实现吗
      2019-10-23
      回复
    • Yan Lu
      Yan Lu
      2019-10-23回复🌟leander🌟
      可以实现。用户在界面授权一次后,第二天早上10点给用户发一条提醒。但是由于一次授权只能发一条订阅消息,所以这个功能有点鸡肋哈。
      2019-10-23
      回复
    • 🌟leander🌟
      🌟leander🌟
      2019-10-24回复Yan Lu
      let { OPENID, APPID, UNIONID } = cloud.getWXContext()我还是不太明白这个方法获取的openid是能获取所有人的openid吗?我怎么给已经授权的所有人都发送一次订阅消息
      2019-10-24
      回复
    • 小昭
      小昭
      2019-10-30回复Yan Lu
      我设置的每分钟发一次,有时候能连续七八分钟发,然后云函数就开始报错,有时候只能发一次。这...每次都要点授权吗?
      2019-10-30
      回复
    查看更多(3)
  • 假装在上海
    假装在上海
    2019-10-22

    定时器如何触发啊

    2019-10-22
    赞同
    回复 3
登录 后发表内容
问题标签