《千牛系统消息接入流程》
一、千牛系统消息
作为商家一站式经营工作台,千牛客户端的系统消息承载了阿里内各业务方高效触达商家的通道价值。为避免商家遭受过多的消息骚扰,千牛系统消息主要接入商家主交易链路流程中的关键消息通知,开放给阿里内各相关业务方申请。
二、消息接入机制
整个消息接入会涉及到几个角色:卖家、TPN(千牛的消息中心)、业务方。
对商家而言,如何收到一条千牛系统消息?路径示例如下:
对业务方而言,如何给用户发送一条消息?路径示例如下:
三、业务方如何申请接入千牛系统消息?
千牛系统消息作为触达商家的通道,为避免商家遭受超负荷的消息骚扰,千牛会对业务方接入系统消息的需求做审慎的判断评估。总体接入流程如下:
只有业务方场景属于商家在店铺经营中的基础链路环节且必须有告知商家需求的,才能申请千牛系统消息的接入。满足上述条件的业务方可联系千牛消息的运营@览峰和产品@左鸥,人工复审确认满足接入门槛之后,可继续走接入流程。
业务方填写以下表格并邮件提交正式的接入申请,原始表格可联系@桔年提供。
补充说明:
业务方邮件申请提交后,千牛帮助业务方进行日常环境的数据配置,配置完成后同步业务方,后者进行测试。
业务方日常环境、预发环境测试通过后邮件告知,千牛正式配置数据至线上,流程结束。
四、业务方如何测试发消息?
消息Daily环境下配置完成后,需要业务方自测
第一步:
依赖tpn-client包
<dependency>
<groupId>com.taobao.tpn</groupId>
<artifactId>tpn-client</artifactId>
<version>1.4.5-SNAPSHOT</version>
</dependency>
第二步:
配置bean,以下xml配置请原样照抄,改下应用名称,其他不用修改
<bean id="sendNotifyMessage" class="com.taobao.tpn.client.notify.service.SendNotifyMessage">
<property name="notifyManager" ref="notifyManagerBean"/>
<property name="topic" value="tpn-common"/>
<property name="msgType" value="tpn-system-msg"/>
</bean>
<bean id="notifyManagerBean" class="com.taobao.notify.remotingclient.NotifyManagerBean" init-method="init">
<property name="publishTopics">
<list>
<value>tpn-common</value>
</list>
</property>
<!-- 发送者集群的名字 , 请注意,如果是自收自发 , !!!!!发送和接受请使用两个不同的group id!!!! ,否则容易出现投递收不到的情况。 -->
<property name="groupId" value="client-publisher-groupId"/>
<!-- 用于唯一标识这个应用的名字,在数据统计的时候会使用哦~ -->
<property name="name" value="tpn"/>
<property name="description" value="qianniu data push"/>
</bean>
第三步:
发送消息
/*
* notifyMsg 消息内容。按照固定的协议来。
*/
public void sendMessage(){
NotifyMessage notifyMsg = new NotifyMessage();
notifyMsg.setSellerUserId(userId);//消息接受者的userId,如果是子账号,这里填写主账号的userId
notifyMsg.setSubUserId(subUserId);//子账号
notifyMsg.setSellerNick(nick);//消息接受者的昵称
notifyMsg.setTitle("标题");//消息的标题
notifyMsg.setPicture("http://picture.jpg");//消息的图片,如果不填,默认使用类目的图片
Set<String> customerViewData = new LinkedHashSet<String>();//api设计问题,为了set能保证顺序,用LinkedHashSet
customerViewData.add("消息内容1");//需要显示的消息内容,如果只有一行内容,会自动适配换行,如果需要提前换行,可以添加多条记录
customerViewData.add("消息内容2");
notifyMsg.setCustomerViewData(customerViewData);
Map<String,String> bizData = new HashMap<String,String>();//需要传给插件的业务数据,比如说url
bizData.put("url", "http://www.taobao.com");//消息跳转的url,此字段生效的前提是:已经联系tpn的运营或开发配置过打开方式,否则无效
notifyMsg.setBizData(bizData);
notifyMsg.setTopic(topic);//消息一级类目英文名,必填
notifyMsg.setMsgStatus(status);//消息二级类目英文名,必填
notifyMsg.setBizid(bid);//业务id,需要唯一,追踪消息时使用,如果没有此id,可以用System.currentTimeMillis()作为bizId
SendResult sendResult = sendNotifyMessage.sendMessage(notifyMessage);//发送消息
}
对于NotifyMessage的说明:
|
字段名称 |
必填 |
字段说明 |
TPN处理需要的数据 |
sellerUserId |
是 |
卖家主账号 |
subUserId |
否 |
如果要给子账号发消息的话,这个字段填写子账号数字id |
|
sellerNick |
否 |
nick,如果是子账号则填写子账号nick。 |
|
bizid |
否 |
业务id,比如:交易id。如果业务中会设计到多个状态之间的流转,则最好填写上。 |
|
needSendPc |
否 |
这条消息是否要发送PC端,默认是True, 如果不需要PC,设为false |
|
needSendMobile |
否 |
这条消息是否要发送移动端(Android+iOS),默认是True, 如果不需要发送移动端,设为false |
|
客户端展示的数据 |
title |
是 |
标题。 |
modified |
是 |
消息的修改时间 |
|
picture |
否 |
缩略图(见附件的说明) |
|
pict |
否 |
主图(见附件的说明) |
|
customerViewData |
是 |
自定义的在客户端展示的数据,客户端一行展示这里的一条。 |
|
透传到插件的数据 (通用协议) |
bizData |
否 |
点击消息跳转到插件透传给插件的数据。 |
说明:bizData,这里的数据服务端只做透传,返回到客户端后,客户端透传到插件。对于打开方式,如果是打开浏览器的方式,bizData中填写一个url的key,value是浏览器打开的具体的url。
通用协议常用的有打开网页 https://jindoucloud.taobao.com/doc/detail?id=24 ,打开插件 https://jindoucloud.taobao.com/doc/detail?id=20
打开网页:
Map<String, String> bizData = new HashMap<String, String>();
bizData.put("url", "www.taobao.com");
打开插件:
Map<String, String> bizData = new HashMap<String, String>();
Map<String, String> pageStr = new HashMap<String, String>(2);
pageStr.put("url", "qap:///detail.js");
bizData.put("page", JSONObject.toJSONString(pageStr));
notifyMsg.setBizData(bizData);
日常环境发送成功如果没收到消息 用工具排查下发送原因 账号devtest17/taobao1234
全链路排查 http://fm.daily.taobao.net/tpn/message/query.html
后台先模拟发送 http://fm.daily.taobao.net/tpn/tool/sendNotifyCommonMsg.html
千牛系统消息卡片示例如下:
第四步:测试
安装千牛客户端:在测试的时候最好连接alibaba-inc的网络,其他网络可能会出现网络连接不上的情况,尤其是daily版本和预发版本,如果连接的不是alibaba-inc的网络的话不能使用。
下载地址:iOS连墨、Android风恒、PC哈尔,分别找对接人问询最新版下载地址。
温馨提示:安装后,请订阅自己的系统消息,订阅流程查看下面的图文教程。
附:千牛客户端上系统消息的图文教程
下载并登录千牛APP之后,第二个Tab置顶的模块就是【系统消息】啦。点击进入【系统消息】频道,点击右上角区块进行【消息订阅设置】。
如:业务方申请的消息一级类目名是“一键求助消息”,则在消息订阅设置页进行搜索查找,然后进行订阅。
有的业务场景较为丰富和复杂,消息一级类目下面对应多个二级消息类目,用户可根据实际需求进行分别订阅:
关于消息配置跳转至插件,用户点击该系统消息后会直接引导至对应插件详情页。