百度小程序模板消息使用详细过程

1年前 6168次浏览

前面有介绍过微信小程序订阅消息的发送,这里再介绍一下百度小程序发送订阅消息。

第一步:要在小程序后台中选用一个模版获得模版ID。

具体方法为:进入百度小程序后台后,在【运营中心】【模板消息】中挑选一个需要的模版,并选择需要的关键字段(如果实在找不到合适自己的,可以新申请一个)。

test.png

test.png

test.png

这里我们需要用到的信息有三个地方(后面用得到):

1、第一张图中的ID:我这里选用的是BD0124,记住这个BD0124(这里我们把它称为【BDID】);

2、第三张图中的模版ID,就是那一串字符串,本文中我们叫他【模板ID】;

3、第三张图中的关键字数据。

第二步:向用户发起订阅请求(我这里只介绍通过反馈表单发起订阅请求过程)最后获得formId

这一步操作需要在小程序用户界面下完成,即通过页面swan文件与js文件配合获取凭证并引导用户完成订阅过程。主要是通过form表单来实现的。

在小程序swan文件中放置form代码如:

<form
bindsubmit="postrv"
report-submit="true"
report-type="subscribe"
template-id="BD0124"
subscribe-id="{{timestamp}}">
...中间省去表单详细内容...
<button type="primary" size="mini" form-type="submit">提交反馈</button>
</form>

上面的代码中介绍(具体button属性请看百度小程序button官方文档):

bindsumbit:是提交绑定事件,用户随意自定义;

report-submit="true"必要属性,用户提交后需要返回formId的必备字段;

report-type="subscribe"必要属性,我要实现的是订阅类模板消息,所以使用subscribe;

template-id="BD0124"必要属性,这个ID是上面提到的【BDID】;

subscribe-id="{{timestamp}}"必要属性,这个值可以随便填,没有什么要求,我这里使用的是时间戳,根据官方的介绍(注意:同一用户在同一 subscribe-id 下的多次授权不累积下发权限,只能下发一条。若要订阅多条,需要不同 subscribe-id),所以这里我使用的是时间戳来实现可以订阅多次。

表单中间的内容没有什么要求,因为需要提交事件,所以需要放置一个button并设置form-type="submit"来让其提交表单。

点击提交表单后,就会弹出小程序订阅消息授权通知了。

test2.png

需要注意的是,表单只要提交就会弹出授权通知,所以我们要验证数据有效性需要在表单提交前就验证好。

我是这样操作的,点击提交按钮最开始是disabled状态,等到必要字段已经输入后才是可点状态。

提交后数据会返回formId,e.detail.formId便是我们需要的formId。这个在开发工具上是不能获得的,只能在真机上才能获得。

但是需要注意一点:如果勾选了勾勾(看上面那个图中的那个勾,默认是勾选的)后,不管用户点了允许还是拒绝,后面都会不再弹出提示了。在后面我们就需要通过状态码来判断是否用户允许发送模板消息。

test3.png

获得了fromId,后将其发送到服务器存放这一步就结束了。

第三步:在服务器上通过调用百度API给用户发送信息

这一步说简单点就是在我们的服务器上通过post方式将数据post发送到百度接口地址

POST https://openapi.baidu.com/rest/2.0/smartapp/template/send?access_token=ACCESS_TOKEN

access_token就不介绍了,获得方法很简单,直接打开个网址,就通获得access_token了。

https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=小程序AppKey从开发者平台中获取&client_secret=小程序的AppSecret从开发者平台中获取&scope=smartapp_snsapi_base

这一步复杂的是做post数据。

官方说的是需要通过用application/x-www-form-urlencoded方式POST提交数据。这里与微信订阅消息很不一样,无法直接通过POST提交json数据(那样会报template_id参数错误,其实就是通过post直接提交json数据,对方是无法获得的)。严格来说其实就是使用post提交一个很长很长的带参数的url地址。

https://openapi.baidu.com/rest/2.0/smartapp/template/send?access_token=24.4bf06fa3c7f6ac8fee7defa5f6a28f50.2592000.1588341207.282335-18889936&touser_openId=&template_id=b4ace2a5488044cf9c9f61625e6c3289&page=pages%2Fme%2Fme&touser=SjLhXquYLy6gYBdWKDYXRiTRZPNbLimrYnwCxbGbxTAB1BsouNixzK9xSKBCBA5gEGctVKCGBfHGhcKcsxsgDm4cW&scene_type=1&scene_id=11.5713893c341f42b3c2041f6510bf2a3d.678415.1586872950.0&data=%7B%22keyword1%22%3A%7B%22value%22%3A%22%5Cu4f60%5Cu662f%5Cu732a%22%7D%2C%22keyword2%22%3A%7B%22value%22%3A%222020%5Cu5e7404%5Cu670814%5Cu65e5+12%3A30%22%7D%2C%22keyword3%22%3A%7B%22value%22%3A%22%5Cu5c0f%5Cu4e0d%5Cu70b9%5Cu662f%5Cu732a%22%7D%2C%22keyword4%22%3A%7B%22value%22%3A%222020%5Cu5e7404%5Cu670814%5Cu65e5+12%3A30%22%7D%2C%22keyword5%22%3A%7B%22value%22%3A%22%5Cu90ed%5Cu6d25%5Cu7fbd%5Cu662f%5Cu732a%22%7D%2C%22keyword6%22%3A%7B%22value%22%3A%22%5Cu4f60%5Cu662f%5Cu5927%5Cu7b28%5Cu732a%22%7D%7D

上面是我一次post的地址,真的非常长。当然如果使用form提交就好用。不过我是在网站后台中使用POST提交这个URL的。

这个URL也是非常麻烦的,前面的基本参数倒是容易写,就和url参数一样,复杂的是要将data数据参数化。不过看明白也也就是把data数据给转义了。PHP中有个专门的函数是用来做这个事情的http_build_query。

POST提交成功后返回如下提示便是成功发送了模板消息。

image.png

最后我把我第三步的PHP代码截图附上(我就是把对应的参数填好后,运行这个页面就发送了模板消息),供参考(本人编程是自学的,都是自己的思路,高手请路过)。

123.png


相关评论
暂无相关评论...
发表评论
评论说明:

1、评论暂仅只持纯文字评论。

2、请不要发表与内容无关的评论。

3、评论需要经由审核才能显示出来。

4、评论姓名与链接无要求,只要评论内容符合便可审核通过。