收藏
回答

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

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

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

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

6 个回答

  • 匿旅
    匿旅
    2019-12-17

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

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

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


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

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

    2019-12-17
    有用 1
    回复 1
    • 37927
      37927
      2019-12-27
      我来试试看
      2019-12-27
      回复
  • DuDuDu
    DuDuDu
    2019-10-22

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

    2019-10-22
    有用 1
    回复
  • Alonzo Church
    Alonzo Church
    2019-10-22

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

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

    2019-10-22
    有用 1
    回复 9
    • 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
      回复
    • Yan Lu
      Yan Lu
      2019-10-22回复假装在上海
      在云函数config.json中配置触发器,记得要上传触发器。然后到开发者工具中的云开发管理平台中查看云函数日志。
      2019-10-22
      回复
    • Alonzo Church
      Alonzo Church
      2019-10-22回复假装在上海
      有问题请开新贴,不要搅乱别人的对话。
      2019-10-22
      回复
    • Alonzo Church
      Alonzo Church
      2019-10-22回复Yan Lu
      注意订阅消息有回复次数的限制,以及需要用户显式同意。建议先尝试一下只用触发器发消息能否成功,不要使用主动触发云函数的方式消耗次数。对照订阅消息的文档再查一下。
      2019-10-22
      回复
    查看更多(4)
  • XJF
    XJF
    2020-02-24

    这个定时功能好流弊感觉 正需要

    2020-02-24
    有用
    回复
  • 小肥羊🍊
    小肥羊🍊
    2019-10-23

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

    2019-10-23
    有用
    回复
  • leander
    leander
    2019-10-22

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

    2019-10-22
    有用
    回复 9
    • 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
      回复
    查看更多(4)
登录 后发表内容
问题标签