botbuilder-storage-redis
TypeScript icon, indicating that this package has built-in type declarations

1.1.2 • Public • Published

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

Package Sidebar

Install

npm i botbuilder-storage-redis

Weekly Downloads

55

Version

1.1.2

License

ISC

Unpacked Size

13.9 kB

Total Files

13

Last publish

Collaborators

  • mokeddes