Skip to content

VoxaAI/voxa-ga

Folders and files

NameName
Last commit message
Last commit date

Latest commit

71c4a93 · Feb 7, 2020

History

42 Commits
Feb 7, 2020
Feb 7, 2020
Feb 7, 2020
Feb 7, 2020
May 24, 2018
Apr 3, 2017
Apr 3, 2017
Mar 5, 2018
Apr 3, 2017
Feb 7, 2020
Feb 7, 2020
Feb 7, 2020
Apr 3, 2017

Repository files navigation

Voxa Google Analytics

Build Status Coverage Status

A Google Analytics plugin for voxa

Installation

Just install from npm

npm install --save voxa-ga

Important! As of version 1.0, this plugin is designed to work with Analytic properties that are setup as Websites. Previously it was the opposite, working only with Mobile Analytics Properties.

Usage

require('voxa-ga')(skill,config.google_analytics);

Options

{
  trackingId: "UA-XXXXXX-X", // Your app's tracking id

  appName: "hamurabi", // The application name. If not provided, an attempt will be made to derive it
  appVersion: "1.1", // The applications current version number. If not provided, an attempt will be made to derive it.

  ignoreUsers: [], // An array of users that will be ignored. Useful for blacklisting dev or monitoring accounts from analytics
  suppressSending: false, // A flag to supress sending hits. Useful while developing on the website
  suppressSlots: ['phonenumber'], // An array of slots that shouldn't be logged automatically. Use to remove PII slots.
}

What You Get

By attaching the plugin, for free you get the following

  • Track users by their Alexa user id
  • The paths of each response will be logged as a page view (e.g. Welcome.FirstTimeUser)
  • Events will be logged to track each
    • Intent (category: "Intents", action: "IntentName")
    • State (category: "States", action: "state-name")
    • Slot (category: "Slots", action: "slot-nmae", label: "slot-value")
  • User timings will be logged for
    • Request processing time (how much time your code takes)
    • Each state's occupancy time
  • The device's capabilities (e.g. AudioPlayer) are logged it the flash-version variable
  • Session start/stop bookends
  • The user's locale
  • Exceptions (fatal or caught) are captured

Additionally a ga object is attached to the alexaEvent object, allowing you to log custom events.

Suppressing State Events

Sometimes smaller intermediary states are just not interesting to log. Suppress a state from logging as follows:

skill.onState('my-state', alexaEvent => {
  alexaEvent.ga.ignore();
  return { reply: 'Greeting', to: 'my-next-state' };
})

Custom Events

Log a custom event by invoking .event on the ga object

skill.onState('my-state', alexaEvent => {
  alexaEvent.ga.event('Category', 'Action', 'Label', Value)
  return {reply: 'Greeting', to: 'my-next-state'};
})

Timing

Have something to time? Use the ga object. Remember that the request and each state is already timed for you.

skill.onState('my-state', alexaEvent => {
  alexaEvent.ga.time('Category', 'Variable');
  return longRunningOperation().then(() => {
    alexaEvent.ga.timeEnd('Category', 'Variable');
  }).then(finishIt);
})

Anything Else

Use the visitor object to get access to a universal analytics object.

skill.onState('my-state', alexaEvent => {
  alexaEvent.ga.visitor.transaction('213');
})

Sending events

The plugin will automatically send hits at the end of each request.