积分体系如今越来越普遍,是任务很多线上线下商家都会采用的用户消费激励体系,例如:淘宝的体系金币、京东的构演京豆等;此外,各大运营商、积分进航空公司、任务连锁酒店、体系线下商超等也都有自己的构演积分玩法。积分的积分进价值是连接用户,增加活跃、任务保持用户粘性。体系通过增加用户积分价值感的手段,实现业务内循环。
vivo积分体系能力已经非常丰富,主要包括以下能力:
vivo积分贯穿整个vivo生态下的互联网应用,同时手机厂商互联网业务的独特性(不仅局限于单一类型业务)也造就了vivo积分与其他行业生态积分体系的差异性,这些差异性着重体现在vivo积分是与各个业务形态紧密合作,相互渗透。如下图例显示在对应签到、任务中心都与业务方强相关联。
在积分体系里任务体系是很重要的一环,行业内会基于任务的形式刺激用户活跃,引导用户完成业务上高价值的行为,最终给予用户回馈(发放积分)。
玩过游戏的同学都知道,游戏内日常都会有任务,有目的地指引玩家进行游戏活动,并给予玩家一定奖励。
对于积分产品(业务)而言,任务体系一般希望引导用户了解产品、提高产品活跃度、培养用户习惯,总而言之是期望用户在使用产品的过程中不断产生价值行为,通过直接或间接的方式帮助业务方达成业务指标,同时用户因完成任务得到奖励,有持续产生高价值行为的动力,最终形成正向循环。
基于以上分析我们可以看出积分任务体现出来的是典型的“福格模型”,通过合理的奖励去推动符合业务价值的行为。
(图片来自网络,混沌大学)
福格行为模型是一个用来探寻用户行为原因的模型,它认为要让一个行为发生,必须同时具备三个元素:动机、能力、触发器。
也就是说,只有当一个人有足够的动机,并且有能力去做到,而且有能触发用户行动的触发器来提醒的时候,一个行为才最终可能发生。
那么vivo的任务体系是如何搭建的呢,系统建设又走过了哪些历程?在本次文章中我们将为大家慢慢揭晓。
(1)业务模型分析
(2)系统目标
(3)实现方案
注:上图中“业务方”特指vivo生态下的服务方;“端侧”特指客户端APP。
如上图所示,阶段一的设计方案虽然有配置,但在逻辑层还是有很大的开发成本, 在阶段二我们着重解决定制化开发效率的问题。
(1)痛点分析
积分任务中心初版在线上运行一段时间后发现,虽然任务基础信息可以通过配置化完成,但远没有达到预期:通过配置化就能够实现任务快速上线。
回顾阶段一的设计,其实仅仅是引入了任务的定义与配置,但任务的行为以及达成判定都由业务方实现,在项目对接上有不少弊端:
通过分析积分任务的业务场景,我们发现大多数任务行为都是app端侧产生的行为,比如用户在浏览器端浏览新闻给予积分奖励。
结合互联网业务都有日常埋点,我们很容易想到可结合埋点上报捕获用户行为,同时为了解决我们初版任务系统的弊端,我们重新梳理出vivo积分任务系统需要支持的核心功能点:
(2)行为上报流程
(3)方案交互序列图
整体流程:
(4)场景示例
用户浏览新闻,点赞资讯评论,行为SDK上报此事件,判定达成任务,返回snackbar提示用户手动领取奖励。
(5)业务效果
经过以上升级,我们的任务系统可以支持以下能力:
上线周期大大缩短:原行为类任务从需求评审,到设计开发测试上线,再到生产环境灰度测试,完整的周期可由原来的1-3个月缩短至1-3人天。
2.3 阶段三:扩大行为采集源,丰富触达形式
(1)痛点分析
场景引入:
某天游戏侧反馈希望接入我们的任务,但场景是“给游戏付费用户发送积分奖励,同时要求付费指定类型的游戏,且奖励的积分值根据付费金额而定(不同的区间给予不同的奖励,不足1元按1元计算)”。
在剖析这个应用场景时,我们延展发现以下主要痛点:
为了解决以上痛点,我们做了多方面的技术调研。
(2)业务模型
从本质上业务模型并没有大的变化,依然是“收集行为、判定任务关联行为是否达成、任务的奖励发放、对用户的触达”,其实我们需要着重关注的是以下几点:
(3)数据采集层
在数据采集层上我们尽可能覆盖更多的数据源,包括埋点、数据库(MySQL)、消息队列、API/RPC接口等,以下为当前数据采集的数据流向图:
采集能力完善
数据归一配置示例:
(4)规则计算层
事件的采集与计算层,我们在设计上将其独立开,采集层通过分布式消息将事件上报到计算层,经过计算最终将结果行为异步通知到任务层。
规则配置示例:
(5)表达式引擎
再回到最初的业务场景需要“要求付费指定类型的游戏,且奖励的积分值根据付费金额而定(不同的区间给予不同的奖励,不足1元按1元计算)”,为了满足业务层灵活多变的逻辑需要,我们引入了表达式引擎,便于业务灵活动态调整。
从多个维度的技术调研,最终我们选择AviatorScript做为我们的表达式引擎。
AviatorScript是一个高性能、轻量级的java语言实现的表达式求值引擎,主要用于各种表达式的动态求值。现在已经有很多开源可用的java表达式求值引擎,为什么还需要Avaitor呢?
简单来说,Aviator的定位是介于Groovy这样的重量级脚本语言和IKExpression这样的轻量级表达式引擎之间。
表达式引擎使用示例
// 数据清洗过滤originEvent.pay_status == 1 && string.contains("11,12,13,14,15,16,92,93,95", originEvent.product_type + "")// 规则计算let value = eventObject.value / 100;let success = value >= 1;return seq.map('success',success,'data',value);
(6)任务层
在应用层,用户直观感觉的任务层,主要包括以下逻辑:任务与行为的关联配置、任务的投放、任务的奖励发放、用户的触达、用户任务的状态。
(7)触达层
触达交互示意图:
大系统根据业务模块拆分,整个积分任务系统按业务职责主要拆分为如下几个系统:
附:
1、关于用户行为数据采集的私密性
很多人普遍认为SDK采集数据会涉及个人隐私,这主要还是不了解SDK数据采集的技术原理。
SDK:Software Development Kit,直译过来就是软件开发包,用N行软件代码采集数据。SDK采集的任何数据都来自用户的主观行为,企业在正常商业活动中获取的个人隐私数据并不违反法规,而我们积分的任务其实是用户有意主动去完成行为而获得一定的收益,同时我们也通过隐私声明明确告知用户且获得用户同意。
责任编辑:庞桂玉 来源: vivo互联网技术 vivo积分体系(责任编辑:探索)
合丰集团(02320.HK)发布公告:年度公司拥有人应占亏损1.72亿港元
和泓服务(06093.HK)年度净利5635.7万元 每股基本盈利为12.76分