botkit
Botkit is an open source developer tool for building chat bots, apps and custom integrations for major messaging platforms.
Top Related Projects
Bot Framework provides the most comprehensive experience for building conversation applications.
The open-source hub to build & deploy GPT/LLM Agents ⚡️
💬 Open source machine learning framework to automate text- and voice-based conversations: NLU, dialogue management, connect to Slack, Facebook, and more - Create chatbots and voice assistants
Create agents that monitor and act on your behalf. Your agents are standing by!
Quick Overview
Botkit is an open-source developer tool for building chat bots, apps, and custom integrations for major messaging platforms. It provides a consistent interface for creating conversational interfaces across various platforms, including Slack, Facebook Messenger, Twilio, and more.
Pros
- Easy to use and quick to get started with, thanks to its intuitive API and extensive documentation
- Supports multiple messaging platforms, allowing developers to create cross-platform bots with minimal effort
- Provides a wide range of built-in features, including natural language processing and conversation management
- Active community and regular updates, ensuring ongoing support and improvements
Cons
- Some users report occasional stability issues, especially with more complex bot implementations
- The learning curve can be steep for developers new to bot development or specific messaging platforms
- Limited customization options for advanced use cases compared to building bots from scratch
- Dependency on third-party services for certain features, which may impact performance or reliability
Code Examples
- Creating a simple Slack bot:
const { Botkit } = require('botkit');
const controller = new Botkit({
webhook_uri: '/api/messages',
});
controller.on('message', async(bot, message) => {
await bot.reply(message, 'I heard a message!');
});
- Adding a simple conversation flow:
controller.hears(['hello', 'hi'], ['message'], async(bot, message) => {
await bot.beginDialog(message, 'greeting');
});
controller.addDialog(new BotkitConversation('greeting', controller));
controller.dialogSet.dialogs.get('greeting').addQuestion('How are you?', async(response, convo, bot) => {
await bot.say(`Nice to meet you! You said: ${response}`);
}, 'feeling');
- Implementing a custom middleware:
controller.middleware.receive.use((bot, message, next) => {
message.timestamp = new Date();
next();
});
Getting Started
- Install Botkit:
npm install botkit
- Create a new bot file (e.g.,
mybot.js
):
const { Botkit } = require('botkit');
const controller = new Botkit({
webhook_uri: '/api/messages',
});
controller.on('message', async(bot, message) => {
await bot.reply(message, 'Hello, I am your bot!');
});
controller.webserver.get('/', (req, res) => {
res.send(`This app is running Botkit ${controller.version}.`);
});
- Run your bot:
node mybot.js
Competitor Comparisons
Bot Framework provides the most comprehensive experience for building conversation applications.
Pros of Bot Framework SDK
- More comprehensive and feature-rich, supporting multiple channels and languages
- Better integration with Azure services and Microsoft ecosystem
- Stronger enterprise-level support and documentation
Cons of Bot Framework SDK
- Steeper learning curve due to its complexity
- More resource-intensive and potentially slower development process
- Tighter coupling with Microsoft technologies, which may limit flexibility
Code Comparison
Bot Framework SDK:
public class EchoBot : ActivityHandler
{
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
var replyText = $"Echo: {turnContext.Activity.Text}";
await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText), cancellationToken);
}
}
Botkit:
controller.hears(['hello', 'hi'], ['direct_message', 'direct_mention', 'mention'], function(bot, message) {
bot.reply(message, 'Hello yourself.');
});
Bot Framework SDK offers a more structured approach with stronger typing and built-in activity handling, while Botkit provides a simpler, event-driven model for bot development. Bot Framework SDK is better suited for complex, enterprise-level projects, whereas Botkit excels in rapid prototyping and simpler bot implementations.
The open-source hub to build & deploy GPT/LLM Agents ⚡️
Pros of Botpress
- More comprehensive platform with built-in NLU, analytics, and visual flow builder
- Supports multiple channels out-of-the-box (e.g., web, Messenger, Slack)
- Active development and regular updates
Cons of Botpress
- Steeper learning curve due to more complex architecture
- Requires more system resources to run
- Less flexible for custom integrations compared to Botkit
Code Comparison
Botpress (JavaScript):
bp.hear(/hello/i, async (bp, event) => {
await bp.messaging.sendText(event.channel.id, 'Hello, human!')
})
Botkit (JavaScript):
controller.hears('hello', 'message', async(bot, message) => {
await bot.reply(message, 'Hello, human!')
})
Both frameworks use similar event-driven approaches, but Botpress offers more built-in functionality and a modular architecture. Botkit provides a simpler API for basic bot interactions, making it easier for beginners to get started. However, Botpress offers more advanced features and scalability for complex chatbot projects.
💬 Open source machine learning framework to automate text- and voice-based conversations: NLU, dialogue management, connect to Slack, Facebook, and more - Create chatbots and voice assistants
Pros of Rasa
- More advanced natural language understanding (NLU) capabilities
- Supports multiple languages out of the box
- Offers both open-source and enterprise versions
Cons of Rasa
- Steeper learning curve for beginners
- Requires more setup and configuration
- Less extensive documentation compared to Botkit
Code Comparison
Rasa example (Python):
from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher
class ActionHelloWorld(Action):
def name(self) -> str:
return "action_hello_world"
def run(self, dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: Dict[str, Any]) -> List[Dict[str, Any]]:
dispatcher.utter_message(text="Hello World!")
return []
Botkit example (JavaScript):
controller.hears(['hello', 'hi'], ['direct_message', 'direct_mention', 'mention'], function(bot, message) {
bot.reply(message, 'Hello!');
});
Rasa focuses on more complex NLU tasks and multi-language support, while Botkit provides a simpler approach for creating chatbots. Rasa's code structure is more verbose and requires more setup, but offers greater flexibility for advanced use cases. Botkit's code is more straightforward and easier to get started with, making it suitable for simpler chatbot implementations.
Create agents that monitor and act on your behalf. Your agents are standing by!
Pros of Huginn
- More versatile and can automate a wide range of tasks beyond just chatbots
- Supports multiple data sources and can create complex workflows
- Has a web-based interface for easier management and monitoring
Cons of Huginn
- Steeper learning curve due to its complexity and wide range of features
- Requires more setup and configuration compared to Botkit
- May be overkill for simple chatbot projects
Code Comparison
Huginn (Ruby):
agent = Agents::WebsiteAgent.new
agent.name = "My Website Agent"
agent.options = {
'url' => 'https://example.com',
'mode' => 'on_change'
}
agent.save!
Botkit (JavaScript):
const bot = controller.spawn({
token: process.env.TOKEN
});
controller.hears(['hello'], 'direct_message', (bot, message) => {
bot.reply(message, 'Hi there!');
});
Summary
Huginn is a powerful automation platform that can handle various tasks, including but not limited to chatbots. It offers more flexibility and can create complex workflows across different data sources. However, this versatility comes at the cost of a steeper learning curve and more complex setup.
Botkit, on the other hand, is specifically designed for building chatbots and conversational interfaces. It's more straightforward to use for chatbot development but lacks the broader automation capabilities of Huginn.
Choose Huginn for complex, multi-faceted automation tasks, and Botkit for focused chatbot development.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Botkit is an open source developer tool for building chat bots, apps and custom integrations for major messaging platforms.
This repository contains the core Botkit library, as well as a series of plugins and extensions for connecting Botkit to messaging and chat platforms and other tools in the bot building ecosystem.
Botkit is part of the Microsoft Bot Framework and is released under the MIT Open Source license
Use Botkit
Packages included in this repo
Package | Description | NPM Status |
---|---|---|
botkit | Botkit Core library | |
botbuilder-adapter-web | A platform adapter for the web | |
botbuilder-adapter-slack | A platform adapter for Slack | |
botbuilder-adapter-webex | A platform adapter for Webex Teams | |
botbuilder-adapter-hangouts | A platform adapter for Google | |
botbuilder-adapter-twilio-sms | A platform adapter for Twilio SMS | |
botbuilder-adapter-facebook | A platform adapter for Facebook Messenger | |
generator-botkit | A Yeoman generator for creating a new Botkit project | |
botkit-plugin-cms | A plugin that adds support for Botkit CMS |
Build Botkit locally
This repo contains multiple inter-linked packages containing Botkit Core, platform adapter packages, and some additional plugins and extensions. To build these locally, follow the instructions below.
Install lerna and TypeScript globally:
npm install -g typescript
npm install -g lerna
Clone the entire Botkit project from Github.
git clone git@github.com:howdyai/botkit.git
Enter the new folder and install the dependent packages:
cd botkit
npm install
Use lerna to set up the local packages:
lerna bootstrap --hoist
Now, build all of the libraries:
lerna run build
To build updated versions of the class reference documents found in packages/docs
, run:
lerna run build-docs
Top Related Projects
Bot Framework provides the most comprehensive experience for building conversation applications.
The open-source hub to build & deploy GPT/LLM Agents ⚡️
💬 Open source machine learning framework to automate text- and voice-based conversations: NLU, dialogue management, connect to Slack, Facebook, and more - Create chatbots and voice assistants
Create agents that monitor and act on your behalf. Your agents are standing by!
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot