I have read in an article https://chatbotsmagazine.com/3-things-to-know-before-building-a-bot-aa333996572a#.xc6nwyyiz that bot kit is not very scalable. Is it true? I want to use Botkit with Microsoft bot framework.
Good question! Someone knows?
Most people haven't seen performance loss at scale with botkit (that I am aware of at least!), because most bot's haven't pushed it that far yet. Unless you are doing something that just happens to have massive scale built into the problem, or are launching the most popular bot seen yet to instant user adoption, you will be just fine with botkit. Especially if using a webhook based API like Slack Events API or Facebook Send/Receive API, or the Spark API. Those are pretty lightweight, compared to the Slack RTM connection.
Some of the biggest bots out there have devs in the dev4slack Slack channel and that would be a great place to talk to real people supporting popular bots.
The conversation management system not persisting is the biggest issue that I'm aware of currently. Routing messages across multiple servers could be messy, because convos are stored in memory after being started until they are ended currently. People have reported tackling this with persisting the convos to a db, and looking for them each time a message comes in. (Botkit already checks a list of active convos whenever a message is received to see if the user is responding to a message in progress)
I'm convinced you can do most interactions serverless, using a lambda function, AWS API gateways, and rethinking the conversation management system (or not using it, and making use of callback buttons with a specific payload to trigger the next message through a hears(), I am doing this for a side project currently). You could run a bot for practically nothing doing it this way.
I'll certainly share some code when I make progress on it!
@jonchurch convo argument in call back is a function not an object. Could you please share some code for persisting the convos to a db, and looking for them each time a message comes in.
Old topic but we've since posted a few articles on using data with Botkit:
https://blog.howdy.ai/build-a-bot-store-data-for-your-users-2e91fe7023d7
https://blog.howdy.ai/build-a-bot-data-powered-conversations-d14991714ac1
Most helpful comment
Most people haven't seen performance loss at scale with botkit (that I am aware of at least!), because most bot's haven't pushed it that far yet. Unless you are doing something that just happens to have massive scale built into the problem, or are launching the most popular bot seen yet to instant user adoption, you will be just fine with botkit. Especially if using a webhook based API like Slack Events API or Facebook Send/Receive API, or the Spark API. Those are pretty lightweight, compared to the Slack RTM connection.
Some of the biggest bots out there have devs in the dev4slack Slack channel and that would be a great place to talk to real people supporting popular bots.
The conversation management system not persisting is the biggest issue that I'm aware of currently. Routing messages across multiple servers could be messy, because convos are stored in memory after being started until they are ended currently. People have reported tackling this with persisting the convos to a db, and looking for them each time a message comes in. (Botkit already checks a list of active convos whenever a message is received to see if the user is responding to a message in progress)
I'm convinced you can do most interactions serverless, using a lambda function, AWS API gateways, and rethinking the conversation management system (or not using it, and making use of callback buttons with a specific payload to trigger the next message through a
hears(), I am doing this for a side project currently). You could run a bot for practically nothing doing it this way.I'll certainly share some code when I make progress on it!