You need to enable JavaScript to run this app.
导航

被动和关系事件

最近更新时间2023.06.19 15:16:02

首次发布时间2023.06.19 15:16:02

1.概述

主被动事件是基于「用户」的主动触发和被动受影响的行为描述。在一些业务场景中,用户既有可能是行为的发起者,也有可能是行为的影响者。行为发起者所触发产生的行为称为「主动事件」,行为影响者所受影响的行为称为「被动事件」,当主动事件和被动事件存在对应关系、成对出现时称为「关系事件」。
image.png

典型场景:社交应用

场景1:  用户A关注了用户B。
用户A是关注行为的发起者,触发了一个主动事件,用户B是关注行为的影响者,被动接受了一个事件。
主动事件:用户A关注了用户B
被动事件:用户B被用户A关注
主动事件和被动事件存在对应关系,并在这个场景中成对出现,于是产生了「关系事件」。
image.png
场景2:  用户A给用户B发送了一条消息。
主动事件:用户A发送1条消息
被动事件:用户B接收1条消息
场景3:  用户A给用户B发了一个红包
主动事件:用户A发了1个红包
被动事件:用户B收到一个红包
更多场景 :喜欢与被喜欢、评论与被评论、投诉与被投诉、分享内容与接收内容...

特殊场景

场景描述:  系统给用户推送通知,客服解决投诉过程中给用户推送了一个优惠券,程序触发了给用户发送了消息。
因为主被动事件是基于「用户」的,所以这种场景下不存在主动事件,主动触发行为的不是用户;
用户是行为的接受者,被动受到影响,只有被动事件。
被动事件:用户收到通知/用户收到优惠券/用户收到推送消息

2.分析

转化分析

用户互关的场景

关系事件

事件ID事件名称用户ID目标对象ID发起对象ID是否被动是否关系语义
1subscribeABnullA关注B
2$inactive_subscribeBnullAB被A关注
3subscribeBAnullB关注A

当我们想统计回关的比例时,需用到被动事件,构建漏斗如下:
第一步:$inactive_subscribe,关联发起对象ID
第二步:subscribe,关联目标对象ID(由于目前不支持list类型的关联属性,本场景下需要用户自己上报一个目标对象的ID)
其他条件:按用户ID分组。

3.事件和属性变更

关系事件和被动事件比主动事件多出一些预置属性用来加以区分,主要区别见下表:

事件名称预置属性展示名预置属性类型取值说明
主动事件(关系)event_name$target_uuid_list被动事件UUIDlist手动上报用户ID
$inline是否为关系事件stringtrue,及其它任意值
被动事件(关系)$inactive_{event_name}$inactive是否为被动事件stringtrue,及其它任意值
$inline是否为关系事件stringtrue,及其它任意值
$source_uuid主动事件UUIDstring对应的关联事件的 UUID
被动事件(手动)自定义$inactive是否为被动事件stringtrue,及其它任意值

用户通过在主动事件中标记当前事件为关系事件($inline 为 "true")时,系统会自动生成对应的被动事件。系统生成的被动事件会额外设置一个预置属性: "$source_uuid", 为主动事件触发用户的 uuid。

4.常见问题

4.1 如何区分主被动事件?

被动事件的属性 $inactive 的值为 true,注意目前这个属性的数据类型为 string,而不是 boolean。
上报关系事件时,系统会自动生成被动事件。系统自动生成的被动事件不仅仅会拥有上述预置属性,还会包含 $inline = "true" 和 $source_uuid(值为对应主动事件 uuid)这两个属性,同时事件名称中还会自动添加“$inactive_”前缀。

4.2 被动事件是否会对账单数据计算产生影响?

被动事件在计算事件量消耗时默认会被计算在内,但在计算MAU和DAU时不会被计算在内。被禁用的被动事件一样不会产生消耗。

4.3 上报关系事件时,如果$target_uuid_list中包含多个 uuid,是否会生成多个被动事件?

是的。$target_uuid_list 是 list 属性,支持传入多个 uuid。系统会自动为每个受该事件影响的用户生成一个对应的被动事件。

5.数据上报

我们提供用户触发主动事件时自动生成对应的被动事件的方法。

为区分主被动事件,我们新增了事件公共属性 $inactive,当 $inactive 为 true 时对应的事件是被动事件。

属性名称

数据类型

取值范围

$inactive

string

"true" 被动事件
"false" 主动事件
其它时,为非被动事件,也可以认为是主动事件

Android

自动生成关系事件

示例代码:"关联事件"

new ActionButton (
    "关联事件",
    new Action ()
    {
        @Override public void doAction ()
        {
            JSONObject param = new JSONObject ();
            try {
                param.put ( "video_id", Generator.getRandomNum ( 0, 10000000 ) );
                param.put ( "category", "主动被动事件" );
                param.put ( "author_id", Generator.getRandomNum ( 0, 10000 ) );
                param.put ( "$inline", "true" );
                JSONArray uuid_list = new JSONArray ();
                for (int i = 0; i < Generator.getRandomNum ( 0, 10 ); i++)
                {
                    uuid_list.put ( Generator.getRandomNum ( 10000, 99999 ) );
                }
                param.put ( "$target_uuid_list", uuid_list );
            }
            catch (JSONException e)
            { e.printStackTrace (); }
            AppLog.onEventV3 ( "like", param );
        }
    }
)

手动上报被动事件

示例代码: "被动事件"

new ActionButton (
    "被动事件",
    new Action ()
    {
        @Override public void doAction ()
        {
            JSONObject param = new JSONObject ();
            try {
                param.put ( "video_id", Generator.getRandomNum ( 0, 10000000 ) );
                param.put ( "category", "主动被动事件" );
                param.put ( "author_id", Generator.getRandomNum ( 0, 10000 ) );
                param.put ( "$inactive", "true" );
            }
            catch (JSONException e)
            { e.printStackTrace (); }
            AppLog.onEventV3 ( "like", param );
        }
    }
)

iOS

示例代码:"主动事件"

[BDAutoTrack eventV3:@"like" params:@{
    @"video_title": @"Lady Gaga on Oscar",
    @"category" : @"主动被动事件",
    @"$inactive" : @"false"
}];

自动生成关系事件

示例代码:"关联事件"

[BDAutoTrack eventV3:@"like" params:@{
    @"video_title": @"Lady Gaga on Oscar",
    @"category" : @"主动被动事件",
    @"$inactive" : @"true",
    @"$inline": @"true",
    @"$target_uuid_list" : @[@"123", @"456", @"789"]
}];

手动上报被动事件

示例代码:"被动事件"

[BDAutoTrack eventV3:@"like" params:@{
    @"video_title": @"Lady Gaga on Oscar",
    @"category" : @"主动被动事件",
    @"$inactive" : @"true"
}];

JSSDK

示例代码:"主动事件"

window.collectEvent('like', {
   from: "index",
   category: "主动被动事件",
   $inactive: "false" 
});

自动生成关系事件

示例代码:"关联事件"

window.collectEvent('like', {
   from: "index",
   category: "主动被动事件",
   $inactive: "true" ,
   $inline: "true",
   $target_uuid_list: ["123","456","789"]
});

手动上报被动事件

示例代码:"被动事件"

window.collectEvent('like', {
   from: "index",
   category: "主动被动事件",
   $inactive: "true" ,
});

小程序 SDK

示例代码:"主动事件"

app.$$Rangers.event('like', {
    from: "index",
   category: "主动被动事件",
   $inactive: "false",
})

自动生成关系事件

示例代码:"关联事件"

app.$$Rangers.event('like', {
   from: "index",
   category: "主动被动事件",
   $inactive: "true" ,
   $inline: "true",
   $target_uuid_list: ["123","456","789"]
});

手动上报被动事件

示例代码:"被动事件"

app.$$Rangers.event('like', {
   from: "index",
   category: "主动被动事件",
   $inactive: "true" 
});

Http Api 服务端上报

示例代码:"主动事件"

{
    "user": {
        // 建议先在客户端上报用户的user_unique_id,然后再在服务端使用
        "user_unique_id": " 74481585297"   //用户唯一标示
    },
    "header": {
        "app_channel": "App Store"   //App渠道
    },
    "events": [
        {
            "event": "like",    //事件名称
            "params": "{
                \"category\":\"主动被动事件\",
                \"$inactive\":\"false\"
             }",    //事件属性
            "local_time_ms": 1489573628001   //事件发生的时间戳
        }
    ]
}

自动生成关系事件

示例代码:"关联事件"

{
    "user": {
        // 建议先在客户端上报用户的user_unique_id,然后再在服务端使用
        "user_unique_id": " 74481585297"   //用户唯一标示
    },
    "header": {
        "app_channel": "App Store"   //App渠道
    },
    "events": [
        {
            "event": "like",    //事件名称
            "params": "{
                \"category\":\"主动被动事件\",
                \"$inactive\":\"true\",
                \\"$inline\\":\\"true\\",
                \"$target_uuid_list\":[\"123\",\"456\",\"789\"]
             }",    //事件属性
            "local_time_ms": 1489573628001   //事件发生的时间戳
        }
    ]
}

手动上报被动事件

示例代码:"被动事件"

{
    "user": {
        // 建议先在客户端上报用户的user_unique_id,然后再在服务端使用
        "user_unique_id": " 74481585297"   //用户唯一标示
    },
    "header": {
        "app_channel": "App Store"    //App渠道
    },
    "events": [
        {
            "event": "like",    //事件名称
            "params": "{
                \"category\":\"主动被动事件\",
                \"$inactive\":\"true\"
             }",    //事件属性
            "local_time_ms": 1489573628001   //事件发生的时间戳
        }
    ]
}