# botmeter-logger

> A Botmeter logger wrapper for Node.js

Latest version **1.11.0** (published 2018-11-28) · Apache-2.0 license · 0 weekly downloads

## Install

```sh
npm install botmeter-logger
pnpm add botmeter-logger
yarn add botmeter-logger
bun add botmeter-logger
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.11.0 |
| Published | 2018-11-28 |
| First published | 2017-07-19 |
| Weekly downloads | 0 |
| License | Apache-2.0 |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 3 |
| Unpacked size | 37.4 KB |
| Known vulnerabilities | 0 (+2 in 2 direct dependencies) |
| Install scripts | no |
| GitHub stars | 7 |
| Author | Botfuel |
| Maintainers | botfueladmin |

## Links

- npm: https://www.npmjs.com/package/botmeter-logger
- Repository: https://github.com/Botfuel/botmeter-logger
- Homepage: https://github.com/Botfuel/botmeter-logger#readme
- Issues: https://github.com/Botfuel/botmeter-logger/issues
- npm.io page: https://npm.io/package/botmeter-logger

## Dependencies (3)

- [log4js](https://npm.io/package/log4js.md) ^3.0.6
- [request](https://npm.io/package/request.md) ^2.79.0
- [url-join](https://npm.io/package/url-join.md) ^2.0.2

## Recent versions

- 1.11.0 (latest) — 2018-11-28
- 1.10.0 — 2018-05-15
- 1.9.4 — 2017-09-22
- 1.9.3 — 2017-09-05
- 1.9.2 — 2017-08-03
- 1.9.1 — 2017-07-19
- 1.9.0 — 2017-07-19

## README

# botmeter-logger

This library allows to log your bot conversations in the Botmeter analytics platform.

It is currently designed to be used with:
- Messenger bots ([doc here](https://dev.botmeter.io/botmeter-logger-facebook)),
- Microsoft Botbuilder bots ([doc here](https://dev.botmeter.io/botmeter-logger-microsoft)) or,
- Botfuel bots (included in the Botfuel bot SDK).

## How to setup

Install:
```
npm install --save botmeter-logger
```

## How to use

There are 3 ways you can use botmeter-logger:

- generic
- messenger
- botbuilder


### Using the API

```javascript
const BotmeterLogger = require('botmeter-logger');

const genericLogger = new BotmeterLogger({
  appId: 'id',
  appKey: 'key',
}).generic;

const document = {
  bot_version: '1.0.2',
  timestamp: 1491475013000,
  channel: 'Webchat',
  user_id: 'JohnDoe',
  user: {
    first_name: 'John',
    last_name: 'Doe',
  },
  body: 'Hello',
  body_type: 'text',
  responses: ['Hi !', 'How are you ?'],
  state_in: 'Root',
  state_out: 'Root',
  intent: {
    name: 'Greetings',
    score: 0.8,
  }
};

genericLogger.indexDocument(document, function(error, body) {
  // Body will equal 'ok' if logging is successful
  ...
});
```

### With Messenger

Log the message inside the POST request callback made when the bot replies (the user message and bot response(s) must be logged in the same document).

```javascript
const BotmeterLogger = require('botmeter-logger');
const request = require('request');

const messengerLogger = new BotmeterLogger({
  appId: '<APP_ID>',
  appKey: '<APP_KEY>',
}).messenger;

// User message
const requestBody = 'Hello';

// Bot response
const responseJson = {
    recipient: {
      id: senderId,
    },
    message: {
      text: 'Hello World',
    },
  };


// POST bot reponse to facebook
request({
  uri: 'https://graph.facebook.com/v2.6/me/messages',
  qs: { access_token: process.env.PAGE_ACCESS_TOKEN },
  method: 'POST',
  json: responseJson
}, () => {
    // The user message and bot response(s) must be logged in the same document
    messengerLogger.logDocument(requestBody, responseJson, (e, r) => {
        if (e) {
          console.log('Botmeter error: ', e);
        } else {
          console.log('Botmeter logging: ', r);
        }
    })
});
```


### With Bot builder

We provide a middleware that you can easily plug to Microsoft bot builder (see right pane).

```javascript
const BotmeterLogger = require('botmeter-logger');
const builder = require('botbuilder');
const restify = require('restify');

// Create a server
const server = restify.createServer();
server.listen(process.env.PORT || 3978, function () {
  console.log('%s listening to %s', server.name, server.url);
});

// Instantiate the Bot builder connector and bot
const connector = new builder.ChatConnector({
  // can be left undefined when testing with emulator
  appId: process.env.MICROSOFT_APP_ID,
  // can be left undefined when testing with emulator
  appPassword: process.env.MICROSOFT_APP_PASSWORD,
});

const bot = new builder.UniversalBot(connector);

// Instantiate Bot builder logger
const builderLogger = new BotmeterLogger({
  appId: '<APP_ID>',
  appKey: '<APP_KEY>',
}).botbuilder;

// Plug it
server.post('/api/messages', connector.listen());

bot.use(builderLogger);

bot.dialog('/', (session) => session.send('Hello World'));
```

## License

See the [LICENSE](LICENSE.md) file.

---
_Source: https://npm.io/package/botmeter-logger · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
