小程序订阅消息
【小程序订阅消息】介绍
【消息能力】是小程序能力中的重要组成,我们为开发者提供了【订阅消息】能力,以便实现服务的闭环和更优的体验。
【订阅消息】推送位置:服务通知
【订阅消息】下发条件:开发者通过一定的方式触发用户主动订阅
【订阅消息】卡片跳转能力:点击查看详情可跳转至该小程序的页面
详细可以点击《微信官方文档:小程序订阅消息》
【小程序订阅消息】对接步骤
对接步骤说明
对接背景说明
【小程序订阅消息】功能的对接有以下一些特殊性:
由于该功能在【第三方平台权限集】是【互斥权限集】,所以不能以【第三方平台】授权方式研发,需要请【客户】对接小程序的【Access_token】和【消息推送回调地址】,再中转给LinkFlow
- 研发获取小程序【Access_token】的接口,客户获取小程序【Access_token】保存后,LinkFlow或其他供应商再调用该接口获取【Access_token】。
- 对接【小程序消息】推送,将LinkFlow需要的消息推送到指定地址。
- 在小程序中开发【用户订阅弹窗】。
1、在LinkFlow中对接小程序,详细可以点击查看《Linkflow与小程序链接指引》(事件埋点可以参看《小程序SDK埋点指引》)
2、获取【Access_token】(具体可以点击此处查看《接口调用说明》)(需要客户的开发同事完成)+加密秘钥(客户的开发自定义:任意形式均可,11##@)
3、登录LinkFlow【小程序账号配置】,输入步骤【2】的【Access_token】并复制【消息推送地址】(此处如果客户不采取【第三方回调】的方式,需要选择【微信回调】,请根据【微信回调】操作,点击下方可查看)
4、客户将已复制的【消息推送地址】提供给公司的开发,粘贴到公司的【中控服务器】
5、配置完成
6、客户需要登录【小程序管理后台】>申请【订阅消息模板】>提供给客户自己的开发同事完成相关配置
7、客户通过客户旅程外发【小程序订阅消息】>客户的小程序用户确认订阅小程序消息>通过MA操作的关于【小程序订阅消息】LinkFlow会记录相关事件。
对接流程图
【小程序订阅消息】对接详细说明
将需要对接的【小程序】与LinkFlow对接
详细可以点击查看《小程序与LinkFlow对接指引》
获取【Access_token】&相关开发操作
调用和存储【Access_token】
官方接口调用说明:可以点击此处查看《接口调用说明》
操作方:【小程序】归属公司的开发同事
获取信息:【Access_token】
提供第三方获取access_token的API,LinkFlow请求规范如下:
请求方式:GET
请求参数:小程序appId
期望的返回值结果
{"access_token": "加密后的token", "expires_in": 8809000}
expires_in为token过期的毫秒数
token传输需要加密,加密解密代码如下:
String originalString = "Hello, this is a secret message!";
String preSharedKey = "1yo0VURmWmDLzCDG"; // 自定义密钥
byte[] keyBytes = preSharedKey.getBytes();
SecretKey secretKey = new SecretKeySpec(keyBytes, "AES");
Cipher cipher = Cipher.getInstance("AES");
// 加密
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encryptedBytes = cipher.doFinal(originalString.getBytes());
String encryptedString = Base64.getEncoder().encodeToString(encryptedBytes);
// 解密
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedString));
String decryptedString = new String(decryptedBytes);
System.out.println("Original: " + originalString);
System.out.println("Encrypted: " + encryptedString);
System.out.println("Decrypted: " + decryptedString);
【订阅消息事件】回调转发
官方说明文档:《小程序订阅消息(用户通过弹窗订阅)开发指南》
验签后将相关推送(用户唤起弹窗、拒收、订阅结果)直接以XML格式明文推送给LinkFlow。
操作方:【小程序】归属公司的开发同事
推送方式:POST
消息加解密方式:明文模式
消息格式:XML模式
内容示例:
在小程序中研发【订阅消息窗口】唤起
在小程序内,通过某个菜单或用户行为,触发调用wx.requestSubscribeMessage(Object object)调起客户端小程序订阅消息界面,真实如下图:
小程序账号配置
路径:登录【LinkFlow】>【连接管理】>找到已经对接的小程序>【小程序账号配置】>输入上述步骤中获取的【Access_token】>由客户的开发同事提供【加密秘钥】
注:如果【Access_token】不正确,会无法获取【小程序订阅消息模板】!
【消息推送地址】填入【中控服务器】(第三方回调)
路径:登录【LinkFlow】>【连接管理】>找到已经对接的小程序>【小程序账号配置】>复制【消息推送地址】并填入客户的【中控服务器】
微信回调
背景描述:客户需要采用【微信回调】方式直接对接我方系统。
注:此处也需要复制【消息推送地址】并填入【中控服务器】!参考上个步骤!
1、获取【Token 令牌】&【EncodingAESKey】
2、选择安全模式和XML格式,填写Token和EncodingAESKey,同时也填入我方后台,再在小程序后台填写对应信息。
3、微信将发送请求到我方服务器,我方验签并回复success完成对接
以上步骤的相关指引可以点击此处查看《微信回调对接LinkFlow相关信息获取指引》
申请【订阅消息模板】
申请方式介绍
路径:客户登录【小程序管理后台】>【功能】>【订阅消息】>【公共模板库】中选用您需要的模板
1、【订阅消息模板】申请成功后,需要将【订阅消息模板_ID】、【订阅消息模板_标题】(或其他【订阅消息模板】的信息)提供给贵司的开发同事完成相关配置
2、主要目的:配置完成后,用户在确认订阅【小程序订阅消息】后,可以获取【微信小程序API/消息】返回的相关信息,在LinkFlow中记录事件,如【调取订阅消息界面】、【发送订阅消息】、【接收订阅消息】
订阅消息类型
一次性订阅消息(用户通过弹窗订阅)
一次性订阅消息用于解决用户使用小程序后,后续服务环节的通知问题。
开发者在小程序中调用 requestSubscribeMessage 接口后,将向用户展示弹窗,用户可打开自己想要接受的消息开关。用户订阅后,开发者可不限时间地下发一条对应的服务消息;每条消息可单独订阅或退订。
详见小程序订阅消息开发指南文档。
长期订阅消息(用户通过弹窗订阅)
一次性订阅消息可满足小程序的大部分服务场景需求,但线下公共服务领域存在一次性订阅无法满足的场景,如航班延误,需根据航班实时动态来多次发送消息提醒。为便于服务,我们提供了长期性订阅消息,用户订阅一次后,开发者可长期下发多条消息。
目前长期性订阅消息仅向政务民生、医疗、交通、金融、教育等线下公共服务开放,后期将逐步支持到其他线下公共服务业务。
详见小程序订阅消息开发指南文档。
设备订阅消息
设备订阅消息是一种特殊类型的订阅消息,它属于长期订阅消息类型,且需要完成「设备接入」才能使用。
设备订阅消息用于在设备触发某些需要人工介入的事件时(例如设备发生故障、设备耗材不足等),向用户发送消息通知。
详见设备订阅消息文档。
【小程序订阅消息在客户旅程中的使用】
场景一:路径:【客户旅程】>【新建客户旅程】>【小程序_触发条件】(客户只要进入小程序订阅界面,可以给他们发送相关信息)
场景二:路径:【客户旅程】>【新建客户旅程】>【小程序_执行动作】
LinkFlow支持获取的【小程序订阅事件】
【调取订阅消息界面】、【发送订阅消息】、【接收订阅消息】(用户接收订阅消息后,记录为【接收订阅消息】事件)
注:【群发订阅消息】的事件无法获取!