项目背景
最近有个项目需要用到微信的下发统一消息接口,主要是解决用小程序在使用过程中,对于内部人员的重要消息提醒,主要考虑到他便捷且体验好。
问题及解决
因为之前都是用的订阅消息,所以在接口调用的时候没有太关注官方的文档,直接使用了小程序发送订阅消息的接口了,结果可想而知,出现了47001,排查后发现是消息体格式问题,当然提示也很显示的。
之后认真学习了官方文档:https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-message-management/uniform-message/sendUniformMessage.html,整改后,这个47001就算是搞定了。
在按要求修改消息体后,消息发达成功了,大概长成如下 的样子。
这里也要说明下,官方文档中关于参考必填写的说明,以及参数格式的问题。首先我们用的是公众号模板消息,参数要求如下。
关于url这个参数,在填写小miniprogram的参数后,这个url是无效的,之后我们去了它,也是可以发送成功的; 其次,这里的data参数,要求类型为string,但其实如果你把一个活泼的对象转成串后,你会收到一条没有数据的消息,所以这里应该是你的对象。
关于data参数的格式,文档里没有明确的说,但是示例中有提及到,格式如下:'miniprogram'=>['appid'=>'','pagepath'=>''],这里要点说下pagepath。
我们产生40165的错误码,就是因为我在这里使用了一个小程序里没有路径, 其实不是没有而是我们还没发布,它是新加的页面。网上也有朋友说,他们产生40165是因为把pagepath写成了page。