The functionality of Botkit can be extended using middleware functions. These functions can plugin to the core bot running processes at several useful places and make changes to both a bot's configuration and the incoming or outgoing message. Anyone can add their own middleware to the Botkit documentation, for more information please read this.
Currently the following types of middleware are available for Botkit:
Natural language processing allows for bots to understand conversational human inputs and interpt your users desires into actionable functions of your application. Once properly trained, these add-ons can dramtiacally improve the UX for your bot application.
Storage middlewares can be used for storing attributes about a user or channel or team. Botkit supports most major storage methods.
These plugins help you measure the success of your bots, across a variety of measurable methods.
|Microsoft Luis||https://github.com/Stevenic/botkit-middleware-luis||The Luis middleware with Botkit causes every message sent to your bot to be first sent through Luis.ai's NLP services for processing. This middleware has deep integration with Botkit Studio
|Amazon Lex||https://github.com/jonchurch/botkit-middleware-lex||This middleware allows you to send user input to AWS Lex. This gives you access to intent mapping, data slots, NLP, and other capabilites of the Lex service. You can use this middleware to extend your bots capabilites, add an interaction that lives in Lex to an existing bot, or to run a Lex bot with Botkit as the connector.|
|Google Dialogflow||https://github.com/jschnurr/botkit-middleware-dialogflow||This middleware plugin for Botkit allows you to utilize Dialogflow (formerly Api.ai), a natural language classifier service directly into the Botkit corebot.
|IBM Watson||https://github.com/watson-developer-cloud/botkit-middleware||This middleware plugin for Botkit allows developers to easily integrate a Watson Conversation workspace with multiple social channels like Slack, Facebook, and Twilio. Customers can have simultaneous, independent conversations with a single workspace through different channels.
|Recast.ai||https://github.com/ouadie-lahdioui/botkit-middleware-recastai||You can use the Recast.AI API to analyse your text or your audio file, and extract useful informations from it, to personalize your IoT, classify your data or create bots.
|Wit.ai||https://github.com/howdyai/botkit-middleware-witai||Wit.ai provides a service that uses machine learning to help developers handle natural language input. The Wit API receives input from the user, and translates it into one or more "intents" which map to known actions or choices. The power of Wit is that it can continually be trained to understand more and more responses without changing the underlying bot code!
|Rasa||https://github.com/howdyai/botkit-rasa||This plugin provides Botkit developers a way to use the rasa NLU open source, self hosted natural language API.
|https://github.com/pinkku/botkit-middleware-facebookuser||This plugin allows you to collect Facebook Messenger user info to populate a Botkit message
|Mongo||https://github.com/howdyai/botkit-storage-mongo||A Mongo storage module for Botkit|
|Redis||https://github.com/howdyai/botkit-storage-redis||A redis storage module for Botkit|
|Datastore||https://github.com/fabito/botkit-storage-datastore||A Google Cloud Datastore storage module for Botkit|
|Firebase||https://github.com/howdyai/botkit-storage-firebase||A Firebase storage module for Botkit.|
|Postgres||https://github.com/lixhq/botkit-storage-postgres||Postgres storage module for Botkit
|CouchDB||https://github.com/mbarlock/botkit-storage-couchdb/||A Couchdb storage module for botkit|
|MySQL||https://github.com/getforgex/botkit-storage-mysql/||A MySQL storage module for botkit|
|Botimize||https://github.com/botimize/botimize-botkit-middleware||Optimize your bot for happier customers, scientifically.|
|Botkit Studio Metrics||https://github.com/howdyai/botkit-studio-metrics||This module enables the advanced analytics and extended metrics available in Botkit Studio.|
|Botmetrics||https://github.com/botmetrics/botkit-middleware-botmetrics||Botmetrics is an analytics and engagement platform for chatbots.|
|Chatbase||https://github.com/asopinka/chatbase-botkit||A middleware package for Botkit that easily logs your convos in Chatbase|
|Dashbot Facebook||https://www.dashbot.io/sdk/slack/botkit||Increase user engagement, acquisition, and monetization through actionable bots analytics.|
|Dashbot Slack||https://www.dashbot.io/sdk/facebook/botkit||Increase user engagement, acquisition, and monetization through actionable bots analytics.|
|Keen||https://github.com/keen/keen-botkit||This middleware allows you to to understand how many messages are going through your system, run cohorts to measure retention, set up funnels to measure task completion, and any key metric unique to your bot. More information about the Keen platform can be found on their website|
|Mixpanel||https://github.com/shishirsharma/botkit-mixpanel||This module enables the basic Mixpanel analytics. With this module installed and enabled, your Botkit application will automatically send a copy of any message your bot receives to Mixpanel's analytics API, as well as user profile information.|
This file is managed on Github. click here to view the source, and send us a pull request with your improvements!