这段时间做项目用到了云开发,以及模板消息发送,其中有个需求是当助力完成时,需要给发起助力的以及帮助助力的人发送模板消息,因为之前没接触过云开发,所有写的过程中遇到了诸多问题,首先要感谢一下社区染柒, 老张, cc, o0o往后余生 谢谢他们提供的思路,下面分享一下过程中遇到的问题及解决方案:
方案1:建立一个模板任务集合task,里面记录需要发送模板任务的信息(包括openid formid template_id send_time 等等),然后写一个定时函数执行,定时函数每次执行时,把需要发送的任务取出来,发送模板消息,
结果:消息发不出去,
原因:定时函数不支持云调用
方案2:既然云函数不支持云调用那么就在帮助助力的云函数中处理模板消息。当用户帮助助力时,这时候助力刚好够了,然后就给发起人以及参与人发消息,
第一次尝试:
由于sendMsg未加关键字await ,所有结果消息仍然没发出去,原因:发送模板消息需要耗时,可能模板消息尚在发送中,云函数已经结束了
第二次尝试:
消息发送成功,一切万事大吉?NO,现在还会存在一个问题,当最后一个助力人帮好友助力的时候,他帮助助力后,该助力就会完成了,就需要给所有参与人发送模板消息了,发送模板消息是一个比较耗时的操作,况且这时候发送的还不止一个消息,如果一直等着模板消息发送完成的时候才把助力结果返回,那么最后一次助力请求要耗费很长一段时间,用户体验上是很不好的,所以产生了第三个方案
方案3:帮助助力逻辑不变,只是把发送模板消息单独写在一个函数中,当小程序端用户帮助助力得到结果时,如果这次帮助助力使得助力完成了,那么就调用一下发送模板消息的方法发送模板消息
云开发在使用过程中发现个问题,如果设置定时器或者用promise,云函数执行一定时间后会自动终止
如果一次性发10000条模板消息,经常会出现异常,这种情况有解决方案吗?