0.1.3 • Published 6 years ago

botbuilder-json v0.1.3

Weekly downloads
1
License
MIT
Repository
-
Last release
6 years ago

Bot Builder JSON Parser for Node.js

Bot Builder JSON is a Node.js framework designed for decoupled chat bots, interpreting JSON-based dialogs as Bot Builder features (like messages, prompts and much more).

High Level Features:

  • Built-in messages and prompts for simple things like Yes/No.
  • Store and receive state data associated with the context of a conversation through Redis cache.
  • Designed to run on all bot platforms supported by Microsoft Bot Framework (like WebChat, Facebook Messenger, Skype, Slack and much more).

Bot state with Redis cache

Get the required module using npm.

npm i --save botbuilder-json

In your main file (usually is app.js), create a new module instance.

var builderJson = require('botbuilder-json');

Create the Redis storage (it is recommended to store host, auth and port data within a .env file).

var options = {
    host: process.env.REDIS_HOST,
    auth: process.env.REDIS_AUTH,
    port: process.env.REDIS_PORT
};

var storage = builderJson.state.getRedisStorage(options);

If you have a Redis cache service on Microsoft Azure, the REDIS_HOST will be: <HOST_NAME>.redis.cache.windows.net

Set the Redis storage as the default bot state storage for your bot instance.

var bot = new builder.UniversalBot(connector, function (session) {
    // Your bot settings
}).set('storage', storage);

Bot instance settings

Save your JSON-based dialog in the state conversation data as a new property.

var bot = new builder.UniversalBot(connector, function (session) {
    session.conversationData['flow'] = 'YOUR JSON STRUCTURE';
    session.beginDialog('your-dialog');
}).set('storage', storage);

JSON-based dialog structure

To use the JSON-based conversation dialog successfully, it is assumed that your bot is using NLP (Natural Language Processing) through Microsoft LUIS service.

The main idea for decoupled chat bots is that each LUIS intent has a machine state in JSON format. The structure is under development and more info will be available soon.

This is a 'hello world' sample structure:

[
    {
        "component": "luis_intent",
        "connections": {
            "0": [
                {
                    "index": "0",
                    "id": "1524231759106"
                }
            ]
        },
        "id": "1524231707131",
        "name": "intent1"
    },
    {
        "component": "message",
        "connections": {
            "0": [
                {
                    "index": "0",
                    "id": "1524231886551"
                }
            ]
        },
        "id": "1524231759106",
        "name": "Hello world!"
    },
    {
        "component": "end_dialog",
        "connections": {},
        "id": "1524231886551",
        "name": "Thank you!"
    }
]

Dialogs

In your bot dialog file, create a new BotBuilderAdapter and build the adapter:

function (session, adapter) {
    var adapter = new builderJson.BotBuilderAdapter(session);
    adapter.build();
},
// Callback for prompts
function (session, results) {
    if (results.response) {
        var adapter = new builderJson.BotBuilderAdapter(session);
        adapter.handleResponse(results.response);
    }
}

References

Learn how to build great bots.