ac-koa-hipchat-keenio
Version:
Simple Keen.io-based analytics capture for AC Koa HipChat
68 lines (52 loc) • 2.15 kB
Markdown
# What is this?
This is a simple Keen.io analytics wrapper for
[ac-koa-hipchat](https://bitbucket.org/atlassianlabs/ac-koa-hipchat)
(ack) add-on projects. It lets you easily track standard ack webhook events, as well as
capture custom events through a common interface.
This uses [KeenClient-Node](https://github.com/keenlabs/KeenClient-node)
under the hood, though it is not meant to be a general-purpose wrapper for
Keen.io -- if you need the full power of the Keen.io client, please use
KeenClient-Node directly instead.
# How do I set it up?
First, add it to your project like so:
```
$ npm install --save ac-koa-hipchat-keenio
```
For this module to work, you will need the following environment variables
to be set, at a minimum: `KEEN_PROJECT_ID` and `KEEN_WRITE_KEY`. The
optional environment variable `LOG_ANALYTICS` can be set to `true` to
also add analytics logging to the target `addon` object's logger. If none
of these variables are set, calls to the analytics module simply no-op.
# How do I use it?
Usage in an `ac-koa-hipchat` app is simple -- just require and initialize
in a typical app as follows:
```
// require this package
var analytics = require('ac-koa-hipchat-keenio');
// standard ac-koa-hipchat addon setup
var ack = require('ac-koa').require('hipchat');
var pkg = require('./package.json');
var app = ack(pkg);
var addon = app.addon()
.hipchat()
.allowRoom(true)
.scopes('send_notification', 'view_group');
// create a tracker object for the given addon
var tracker = analytics.track(addon);
```
That much alone will start tracking analytics events for these standard
addon webhooks:
* `install`
* `uninstall`
* `room_enter`
* `room_exit`
* `room_message`
* `room_notification`
* `room_topic_change`
If you'd like to use this module to capture additional data using the
same keen.io client, the `tracker` object also exposes a basic `capture`
method for doing so:
```
// capture accepts an event name and an optional, JSON-compatible data object
tracker.capture('email-received', {to: toAddress, from: fromAddress});
```