收藏
回答

云函数调用subscribeMessage.send怎么调用才能定期发送出订阅消息?

基础库版本:2.17.0

我的目的是定期给用户发送节日提醒

实现方式是在云函数中利用定时触发器,去调用小程序SDK中的subscribeMessage.send函数

用户订阅是在小程序端由用户发起,用户订阅成功后,在云数据库用户信息collection中进行标记。

云函数处理逻辑如下:

1、每天运行一次。判断是否需要做节日提醒。如果不需要,则返回。

2、如果需要做节日提醒,则遍历所有订阅成功的用户,按照openid逐个发送订阅消息。发送的方式是调用另外一个云函数,

该云函数则是调用subscribeMessage.send函数。

逻辑比较简单。最开始的时候,会出现云函数调用失败,但是订阅消息能够发出出去一部分。截图如下:

后来,在每次调用发送订阅消息的云函数中,每次调用后,加了一个延时,隔4s后再调用,则每次都能够调用成功。但是会出现43101错误码,提示信息如下:

这个现象就非常奇怪了,明明云函数调用失败,却可以发出去订阅消息,用户能收到。而云函数调用成功,却提示用户拒绝订阅消息。

用户可以收到订阅消息,说明用户已经订阅成功,可以收到消息。但是在云函数调用成功的前提下,为什么用户却收不到订阅消息呢?

云函数调用失败,会抛出异常,所以只会给部分用户发送出去订阅消息,而不是所有用户。要不也就不去管这个问题了。

哪位大神可以帮助解答下?这个是个什么逻辑?

最后一次编辑于  2022-03-16
回答关注问题邀请回答
收藏

1 个回答

  • 老张
    老张
    2022-03-16

    1、理论上,订阅消息不支持这种需求;第一天可能发送成功,以后也会因为用户没有订阅次数了而发送失败;一次性订阅消息:用户“订阅”按钮n次,才能发送n次消息;

    想在10天里每天生日提醒,那这个用户必然要在小程序里逛点10次以上。

    2022-03-16
    有用
    回复 7
    • 见龙在田
      见龙在田
      发表于移动端
      2022-03-16
      如果是这种机制,根本就没有办法做节日提醒或生日提醒功能。我在云函数调用失败情况下,是可以连续向用户发消息的。用户在授权页勾选了后续按同样的选择,就是授权了无穷多次。官方文档也是这么解释的。 否则,这个订阅消息岂不是很鸡肋么?
      2022-03-16
      回复
    • 见龙在田
      见龙在田
      发表于移动端
      2022-03-16回复见龙在田
      希望小程序官方技术能解释下😁
      2022-03-16
      回复
    • 老张
      老张
      2022-03-16回复见龙在田
      https://developers.weixin.qq.com/community/develop/article/doc/0008802e8381e0eeabb92c9975b013
      2022-03-16
      1
      回复
    • 见龙在田
      见龙在田
      发表于移动端
      2022-03-16回复老张
      多谢,学习下,先
      2022-03-16
      回复
    • 见龙在田
      见龙在田
      发表于移动端
      2022-03-17回复老张
      我的试验情况,四位用户勾选了不用再提醒,每次总有一个用户可以收到定期订阅消息。而在云函数中,只有给这位用户发消息的send函数的调用是失败的。
      2022-03-17
      回复
    查看更多(2)
登录 后发表内容