1.1.2 • Published 2 years ago

botbuilder-storage-redis v1.1.2

Weekly downloads
118
License
ISC
Repository
github
Last release
2 years ago

State Storage for Bot Framework using Redis

This project provides a Redis storage mechanism for Bot Framework-JS SDK V4..

It allows you to store bot state in Redis, so that you can scale out your bot, and be more resilient to bot server failures.

Coverage

100%

Requirements

  • NodeJS 12.x or greater is a requirement to install dependencies, build and run tests.
  • Redis database.

Installation

npm i botbuilder-storage-redis

Sample Usage

The storage depends on a redis client instance.

const redis = require('redis');
const { RedisDbStorage } = require('botbuilder-storage-redis');
const builder = require('botbuilder');

const redisOptions = {
    prefix: 'bot-storage:'
};
const redisClient = redis.createClient(process.env.REDIS_URL, redisOptions);
/**
 *  You can assign a life time for conversations. When enabling this feature,
 *  conversations that take longer than the give TTL will be deleted automatically.
 *  Be aware that future interactions with the bot after starting the conversation
 *  won't change the TTL of the conversation.
 *  Use this feature with caution.
 */
const ttlInSeconds = 10;

const storage = new RedisDbStorage(redisClient, ttlInSeconds);

const connector = new builder.ChatConnector();
const bot = new builder.UniversalBot(connector);

// Configure bot to use the RedisStorage
bot.set('storage', storage);

Similarly with Botkit:

import redis from 'redis';
import { RedisDbStorage } from 'botbuilder-storage-redis';

// Redis config
const redisOptions = {
  prefix: 'bot-storage:',
};

const redisClient = redis.createClient(
    process.env.REDIS_PORT,
    process.env.REDIS_URL,
    redisOptions
);

/**
 *  You can assign a life time for conversations. When enabling this feature,
 *  conversations that take longer than the give TTL will be deleted automatically.
 *  Be aware that future interactions with the bot after starting the conversation
 *  won't change the TTL of the conversation.
 *  Use this feature with caution.
 */
const ttlInSeconds = 10;

const redisStorage = new RedisDbStorage(redisClient, ttlInSeconds);

// Botkit init
const controller = new Botkit({
  storage: redisStorage,
  adapter: fbAdapter,
  disable_console: false,
  webhook_uri: '/bot/web-messages',
  webserver_middlewares: [
    (req: Request, res: Response, next: NextFunction) => {
      console.info('Request >', req.url);
      next();
    },
  ],
});

Contact

1.1.2

2 years ago

1.1.1

2 years ago

1.1.1-beta.5

2 years ago

1.1.1-beta.2

2 years ago

1.1.1-beta.0

2 years ago

1.1.1-beta.1

2 years ago

1.0.10

4 years ago

1.0.9

4 years ago

1.0.8

4 years ago

1.0.7

4 years ago

1.0.6

4 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago