You need to enable JavaScript to run this app.
导航
被动和关系事件
最近更新时间:2024.04.30 15:17:09首次发布时间:2024.04.30 15:17:09

1. 概述

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

1.1 典型场景:社交应用

  • 场景1: 用户A关注了用户B。
    用户A是关注行为的发起者,触发了一个主动事件,用户B是关注行为的影响者,被动接受了一个事件。
    • 主动事件:用户A关注了用户B。
    • 被动事件:用户B被用户A关注。
      主动事件和被动事件存在对应关系,并在这个场景中成对出现,于是产生了「关系事件」。

图片

  • 场景2: 用户A给用户B发送了一条消息。
    • 主动事件:用户A发送1条消息。
    • 被动事件:用户B接收1条消息。
  • 场景3: 用户A给用户B发了一个红包。
    • 主动事件:用户A发了1个红包。
    • 被动事件:用户B收到一个红包。

更多场景 :喜欢与被喜欢、评论与被评论、投诉与被投诉、分享内容与接收内容...

1.2 特殊场景

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

2. 转化分析

在用户互关的场景下,关系事件如下表所示。

事件ID

事件名称

用户ID

目标对象ID

发起对象ID

是否被动

是否关系

语义

1

subscribe

A

B

null

A关注B

2

$inactive_subscribe

B

null

A

B被A关注

3

subscribe

B

A

null

B关注A

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

3. 事件和属性变更

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

事件名称

预置属性

展示名

预置属性类型

取值说明

主动事件(关系)

event_name

$target_uuid_list

被动事件UUID

list

手动上报用户ID

$inline

是否为关系事件

string

true,及其它任意值

被动事件(关系)

$inactive_{event_name}

$inactive

是否为被动事件

string

true,及其它任意值

$inline

是否为关系事件

string

true,及其它任意值

$source_uuid

主动事件UUID

string

对应的关联事件的 UUID

被动事件(手动)

自定义

$inactive

是否为被动事件

string

true,及其它任意值

用户通过在主动事件中标记当前事件为关系事件($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" 主动事件。
其它时,为非被动事件,也可以认为是主动事件。

5.1 Android

5.1.1 自动生成关系事件

示例代码:"关联事件"

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 );
        }
    }
)

5.1.2 手动上报被动事件

示例代码: "被动事件"

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 );
        }
    }
)

5.2 iOS

5.2.1 示例代码:"主动事件"

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

5.2.2 自动生成关系事件

示例代码:"关联事件"

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

5.2.3 手动上报被动事件

示例代码:"被动事件"

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

5.3 JSSDK

5.3.1 示例代码:"主动事件"

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

5.3.2 自动生成关系事件

示例代码:"关联事件"

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

5.3.3 手动上报被动事件

示例代码:"被动事件"

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

5.4 小程序 SDK

5.4.1 示例代码:"主动事件"

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

5.4.2 自动生成关系事件

示例代码:"关联事件"

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

5.4.3 手动上报被动事件

示例代码:"被动事件"

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

5.5 Http Api 服务端上报

5.5.1 示例代码:"主动事件"

{
    "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   //事件发生的时间戳
        }
    ]
}

5.5.2 自动生成关系事件

示例代码:"关联事件"

{
    "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   //事件发生的时间戳
        }
    ]
}

5.5.3 手动上报被动事件

示例代码:"被动事件"

{
    "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   //事件发生的时间戳
        }
    ]
}