# BuryingPoint 埋点

# 使用方式

import Vue from 'vue';
import { BuryingPoint } from '@polyv/polyv-ui';

Vue.use(BuryingPoint, {
  Sensors: true,
});

# 一、指令式埋点

通过自定义指令的修饰符来进行各种交互的埋点。

# 1.1 使用点击事件埋点

<template>
  <div>
    <plv-button v-burying-point.click="'点击了创建直播'">直接传入字符串</plv-button>
    <plv-button v-burying-point.click="clickCreateChannel1BP">使用变量</plv-button>
    <plv-button v-burying-point.click="clickCreateChannel2BP">使用变量且传入属性</plv-button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      clickCreateChannel1BP: '点击了创建直播',

      clickCreateChannel2BP: {
        event: '点击了创建直播',
        // 传入属性
        data: {
          a: 1,
          b: 2,
        },
      },
    };
  },
};
</script>

# 1.2 组件的回调事件埋点

通过 v-burying-point.emit-* 来根据自定义组件的回调事件进行埋点,emitKey 为发送埋点时的属性名,emitFilter 为事件的回调参数过滤值,如在 Select 组件的 change 回调事件中发送埋点。

<template>
  <div>
    <plv-select
      v-model="value"
      v-burying-point.emit-change="choicePetBP"
      :options="options"
    />
  </div>
</template>

<script>
export default {
  data() {
    return {
      value: 'cat',
      options: [
        { label: '猫', value: 'cat' },
        { label: '狗', value: 'dog' },
      ],
      choicePetBP: {
        event: '选择了宠物',
        emitKey: '宠物',
        emitFilter: {
          cat: '猫',
          dog: '狗',
        },
      },
    };
  },
};
/**
 * 此时发送的埋点数据为
 * 事件:选择了宠物
 * 属性:宠物
 * 值:猫/狗
 */
</script>

# 1.3 发送指令前的周期函数

在埋点配置中,传入 beforeSend 方法进行在发送埋点前的数据过滤,例子中 config.emitValue 为自定义组件 change 事件的回调参数,方法中返回新的埋点配置信息时将会使用返回的结果进行发送。

<template>
  <div>
    <plv-select
      v-model="value"
      v-burying-point.emit-change="choicePetBP"
      :options="options"
    />
  </div>
</template>

<script>
export default {
  data() {
    return {
      value: 'cat',
      options: [
        { label: '猫', value: 'cat' },
        { label: '狗', value: 'dog' },
      ],
      choicePetBP: {
        event: '选择了宠物',
        beforeSend: (event, data, config) => {
          console.log(config);
          config.data = {
            '宠物': config.emitValue === 'cat' ? '猫' : '狗',
          };
          return config;
        },
      },
    };
  },
};
</script>

# 1.4 埋点配置类型

type buryingPointConfig = {
  event?: string,
  data?: Record<string, any>,
  beforeSend?: (event?: string, data?: Record<string, any>, config?: Omit<config, 'beforeSend'>) => any,
  emitKey?: string,
  emitFilter?: Record<string, any> | ((value: any) => any),
};

# 二、JS式发送埋点

<template>
  <plv-button @click="sendBuryingPoint">创建直播</plv-button>
</template>

<script>
export default {
  methods: {
    sendBuryingPoint() {
      this.$buryingPoint.track('保存并创建直播', {
        '停留时长': 180,
        '是否选择直播时间': true,
        '场景': '大班课',
        '是否有上传直播封面': false,
        '连麦人数': 12,
      })
    }
  }
};
</script>

# 开启神策调试模式

在页面链接中传入 query 参数 buryingPointDebug=1,即可开启神策控制台打印模式。

例如:https://console.polyv.net/live/?buryingPointDebug=1#/channel

Install Options
参数 说明 类型 可选值 默认值
Sensors 是否开启神策埋点,传入true时使用内置的init配置,传入对象时使用传入的init配置 Object Boolean -
platformType 平台类型 String - -
platformName 平台名称 String - -