Нет трафика в отчете об эксперименте

Я тестирую Optimizely и создал реализацию в моем проекте activjs. Скрипт optimizely загружается только при необходимости (lazyLoad), поэтому по этой причине при создании нового эксперимента в Dashboard я получаю сообщение об ошибке "фрагмент отсутствует на странице", который можно игнорировать.

При проведении эксперимента через приложение я могу получить доступ к активному варианту и т. Д. В журнале не отображаются и не отображаются ошибки.

Текущая реализация или тестирование происходит на нашем частном сервере, но мы не уверены, связано ли это с проблемой; поэтому, если вы не подключены к VPN, вы не сможете увидеть страницу.

В настоящее время только я должен был получить к нему доступ, но я должен увидеть некоторый трафик в отчете, но пока было 0.

В журнале нет ошибок

4678891099.js:212 Optimizely / Main / Started, revision 99 [time 0 +0]
4678891099.js:212 Optimizely / Query / Blocked request to load unsafe script: null [time 9 +9]
4678891099.js:212 Optimizely / Segmenter / Loading segments cookie. [time 13 +4]
4678891099.js:212 Optimizely / Segmenter / Segments cookie contains segment id: 4680143815 [time 13 +0]
4678891099.js:212 Optimizely / Segmenter / Segments cookie contains segment id: 4650727160 [time 13 +0]
4678891099.js:212 Optimizely / Segmenter / Segments cookie contains segment id: 4679173736 [time 13 +0]
4678891099.js:212 Optimizely / Activator / Triaging 3 segments. [time 13 +0]
4678891099.js:212 Optimizely / Condition / Testing segment 4680143815 [time 14 +1]
4678891099.js:212 Optimizely / Activator / Passed conditions for segment 4680143815 [time 14 +0]
4678891099.js:212 Optimizely / Condition / Testing segment 4650727160 [time 14 +0]
4678891099.js:212 Optimizely / Activator / Passed conditions for segment 4650727160 [time 14 +0]
4678891099.js:212 Optimizely / Condition / Testing segment 4679173736 [time 14 +0]
4678891099.js:212 Optimizely / Activator / Passed conditions for segment 4679173736 [time 14 +0]
4678891099.js:212 Optimizely / Segmenter / Evaluating Segment 4680143815 [time 14 +0]
4678891099.js:212 Optimizely / Segmenter / Evaluating Segment 4650727160 [time 14 +0]
4678891099.js:212 Optimizely / Segmenter / Evaluating Segment 4679173736 [time 14 +0]
4678891099.js:212 Optimizely / Integrator / Loading third-party segments. [time 18 +4]
4678891099.js:212 Optimizely / Visitor / Initializing [time 18 +0]
4678891099.js:212 Optimizely / Visitor / Found segment 4680143815 [time 19 +1]
4678891099.js:212 Optimizely / Visitor / Found segment 4650727160 [time 19 +0]
4678891099.js:212 Optimizely / Visitor / Found segment 4679173736 [time 19 +0]
4678891099.js:212 Optimizely / Info / Is Classic Optimizely enabled: true [time 20 +1]
4678891099.js:212 Optimizely / Info / Diagnostic enabled: false [time 20 +0]
4678891099.js:212 Optimizely / Info / Force variation enabled: false [time 20 +0]
4678891099.js:212 Optimizely / Info / Browser type: gc [time 20 +0]
4678891099.js:212 Optimizely / Info / Browser version: 61.0.3163.100 [time 20 +0]
4678891099.js:212 Optimizely / Info / Mobile browser type: android [time 20 +0]
4678891099.js:212 Optimizely / Info / New vs returning: returning [time 20 +0]
4678891099.js:212 Optimizely / Info / Source type: null [time 21 +1]
4678891099.js:212 Optimizely / Info / User ID: oeu1507206204323r0.4361859226305451 [time 22 +1]
4678891099.js:212 Optimizely / Condition / Testing experiment 8931711070 [time 22 +0]
4678891099.js:212 Optimizely / Condition / Testing URLs for experiment 8931711070 [time 22 +0]
4678891099.js:212 Optimizely / Condition / Failed to match any URL for experiment 8931711070 [time 24 +2]
4678891099.js:212 Optimizely / Condition / Testing experiment 8785608124 [time 24 +0]
4678891099.js:212 Optimizely / Condition / Testing URLs for experiment 8785608124 [time 24 +0]
4678891099.js:212 Optimizely / Distributor / Going to distribute experiment "Question variation for "Is investing for you?"" (8785608124) [time 24 +0]
4678891099.js:212 Optimizely / Distributor / Not distributing experiment 8785608124 (already in plan) [time 24 +0]
4678891099.js:212 Optimizely / Tracker / Queued tracking event 'https://foobarbeta.xyz/msl-1353-optimizely-screener-q2/risk/suitability' [time 29 +5]
4678891099.js:212 Optimizely / Tracker / Making a log request. [time 32 +3]
4678891099.js:212 Optimizely / Evaluator / 0 times waited [time 36 +4]
4678891099.js:212 Optimizely / Evaluator / 0 total times waited [time 36 +0]
4678891099.js:212 Optimizely / API / Finalizing API. [time 36 +0]
4678891099.js:212 Optimizely / Main / End of main [time 38 +2]
4678891099.js:212 Optimizely / API / Error for unknown function "page" [time 42 +4]
4678891099.js:212 Optimizely / Tracker / Removed a pending log event from the pending events cookie. [time 393 +351]
4678891099.js:212 Optimizely / Activator / Timeout: will not act on future async info. [time 2041 +1648]
4678891099.js:212 Optimizely / API / Called function "log" [time 3235 +1194]

вы можете увидеть активный вариант и т. д.

результат журнала, когда событие вызвано

и отчет

Вы также можете увидеть customEvent или цель ниже:

Реактив JS компонент:

import React, { PropTypes } from 'react'

class OptimizelyExperiment extends React.Component {
  constructor (props) {
    super(props)
    window.optimizely = window.optimizely || []
    this.onReadyRecallMs = 10
    this.defaultState = {
      variantName: null,
      result: null,
    }
    this.state = Object.assign({}, this.defaultState)
    this.mapVariantToState = this.mapVariantToState.bind(this)
  }

  componentWillMount () {
    if (!this.isReady()) {
      this.insertScript()
      this.observeReady(this.mapVariantToState)
    }
  }

  componentDidMount () {
    if (this.isReady()) {
      this.mapVariantToState()
    }
  }

  componentDidUpdate (prevProps, prevState) {
    if (this.isReady() && prevState.variantName !== this.state.variantName) {
      this.setResult()
    }
  }

  observeReady (cb) {
    const { allExperiments } = window.optimizely
    if (allExperiments && typeof allExperiments[this.props.experimentId] !== 'undefined') {
      this.triggerPageActivation()
      this.props.customEvents.forEach(({selector, eventType, eventName}) =>
        this.attachEventHandler(selector, eventType, eventName))
      if (typeof cb === 'function') cb()
    } else {
      const t = setTimeout(() => {
        clearTimeout(t)
        this.observeReady(cb)
      }, this.onReadyRecallMs)
    }
  }

  mapVariantToState () {
    const { activeExperiments, variationIdsMap, allVariations } = window.optimizely
    activeExperiments.forEach(experimentId => {
      const variationId = variationIdsMap[experimentId][0] // simple AB test, not multiple
      const { name } = allVariations[variationId]
      this.setState({ variantName: name })
    })
  }

  insertScript () {
    const { projectId } = this.props
    const protocol = `${document.location.protocol}//`
    const scriptTag = document.createElement('script')
    scriptTag.type = 'text/javascript'
    scriptTag.async = true
    scriptTag.src = `${protocol}cdn.optimizely.com/js/${projectId}.js`
    document.getElementsByTagName('head')[0].appendChild(scriptTag)
  }

  runExperiment () {
    const { variantName } = this.state
    const { experimentsMap } = this.props
    let result = experimentsMap[variantName] || false
    if (typeof result === 'function') {
      result = result()
    }
    return result
  }

  isReady () {
    return typeof window.optimizely === 'object' &&
            typeof window.optimizely.data === 'object' &&
            typeof window.optimizely.allExperiments === 'object'
  }

  setResult () {
    this.setState({
      result: this.runExperiment(),
    })
  }

  triggerPageActivation () {
    window.optimizely.push({
      type: 'page',
      pageName: this.props.pageName,
    })
  }

  attachEventHandler (selector, eventType, eventName) {
    const target = document.querySelector(selector)
    const handler = () => {
      window.optimizely.push({
        type: 'event',
        eventName: eventName,
      })
      target.removeEventListener(eventType, handler)
    }
    target.addEventListener(eventType, handler)
  }

  render () {
    return this.state.result
  }
}

OptimizelyExperiment.propTypes = {
  projectId: PropTypes.string.isRequired,
  experimentId: PropTypes.string.isRequired,
  name: PropTypes.string.isRequired,
  experimentsMap: PropTypes.object.isRequired,
  pageName: PropTypes.string,
  customEvents: PropTypes.array,
}

export default OptimizelyExperiment

Теперь я решил изменить URL Target (чтобы вызвать сбой) и сравнить с предыдущим результатом (в котором нет ошибки в журнале консоли). Что приводит к:

Optimizely / Condition / Failed to match any URL for experiment 8785608124 [time 15 +0]

Таким образом, если проблема не связана с VPN или если репортеру требуются долгие часы для получения каких-либо данных, я не знаю, где проблема.

1 ответ

Создан новый эксперимент, с новыми целями и т. Д. Сохранена цель по умолчанию "Задание", которую я удалил ранее, и теперь я вижу посетителей и цель CustomEvent, которая была запущена из приложения.

"Участие / процент посетителей, которые нажали на любую часть экспериментальной страницы".

Это, кажется, причина, почему это не работало.

Другие вопросы по тегам