Ebony Framework

npm Node CI

An easy to use, module-based, multi-channel chatbot framework.


  • Separation in independent, portable, easy to customize modules
  • Separate adapters for interfacing with communication channels (Facebook Messenger, Slack, Viber, SMS etc.)
  • Dialogue context management system
  • Route-based rules, with middlewares
  • Uses MongoDB for storing user information

Getting Started

For now, there is no detailed documentation for Ebony Framework. You can easily create an ebony-based Facebook Messenger Bot with the Messenger Bot Template. If you have any questions and/or suggestions feel free to open an issue, or create a pull request.


You'll need to have NodeJS/NPM on your system, as well as Typescript installed either in your node_modules folder or globally in your system.

Install Ebony Framework

$ npm i @ebenos/framework

Install an adapter

(For now only a Messenger Platform adapter is available)

$ npm i @ebenos/framework

Initialize the bot

import { Bot } from '@ebenos/framework';

// Import the adapter (for example the Messenger Adapter) as well as the user model
import { MessengerAdapter, MessengerUser } from '@ebenos/messenger-adapter';

// ... Here import the modules you'll use...
import botModule from './modules/botModule';

// Here you initialize the adapter.
// For example the Messenger Adapter:
const adapter =
    new MessengerAdapter({
        pageId: /* Your FB Page ID */,
        pageToken: /* Your Page Token */ ,
        appSecret: /* Your App Secret */,
        webhookKey: /* Your Webhook Key */

export const bot = new Bot<MessengerUser>(adapter, {
    mongodbUri: /* Your MongoDB Connection URI */


    port: 3000 // You can substitute "3000" with the PORT of your choice.

Channel Adapters

For now, only a Messenger Platform adapter is publicly available. If you want to use the Ebony Framework for another channel, open an issue to discuss the development of a new adapter.


A module is a portable collection of actions, rules and middlewares that is imported into the chatbot on runtime.

See Modules.md for more information.


An action is a function that when triggered, sends a message to the user.


There are multiple types of rules inside a module. A rule could be context based (ContextRouter), postback based (PostbackRouter) or even a regex (TextMatcher). These rules, work similarly to routes in a web framework. They point to an action that is triggered when the rule is satisfied.


Middlewares run before (preMiddlewares) and after (postMiddlewares) an action is triggered.

Next Steps

  • Use redis for user context storing
  • Decouple database logic from framework (add support for multiple databases)
  • Create Slack Adapter
  • Refine the User model, support true extendable user models
  • Add tests



This project is licensed under the MIT License - see the LICENSE file for details.


🤖 💬 A module-based, multi-channel chatbot framework (aka ebenos)

Ebony Info

⭐ Stars56
🔗 Source Codegithub.com
🕒 Last Updatea year ago
🕒 Created4 years ago
🐞 Open Issues2
➗ Star-Issue Ratio28
😎 Authorchrispanag