Bottender
-
Flexible - Declare handlers as any JavaScript function.
-
Modern - Source written with ES6/ES7 syntax and great async await
supports.
-
Modular - Use session stores, server framework adapters and platform
connectors with same interface.
-
Learn Once, Write Anywhere - Handle multiple platforms with consistent
development experience.
Bottender is built on top of
Messaging APIs.
Installation
You can install Bottender globally to use the cli tools:
npm install -g bottender
Or install it locally to use it programmatically:
npm install bottender
Documentation
You can find the Bottender documentation on the website.
Examples
We have a bunch of examples in the
examples folder.
Here is the first one to get you started:
const { ConsoleBot } = require('bottender');
const bot = new ConsoleBot();
bot.onEvent(async context => {
await context.sendText('Hello World');
});
bot.createRuntime();
This will create and run a bot which always reply "Hello World" in the console.
You'll notice that there is an async function to be passed to the onEvent
method, we call it handler. You can put your bot logic in there.
Notable Features
Messenger
- Messenger Profile Sync
- Attachment Upload
- Handover Protocol
- Targeting Broadcast Messages
- Built-in NLP
- Multiple Pages
LINE
- Reply, Push, Multicast
- Imagemap
- Rich Menu
- Room, Group Chat
- Beacon
Slack
- Channel Chat
- Interactive Message
Telegram
- Update, Delete Messages
- Keyboard
- Message Live Location
- Payment
Viber
- Subscribed, Unsubscribed Event
- Delivered, Seen Event
Introduction Video
Contributing
Pull Requests and issue reports are welcome. You can follow steps below to
submit your pull requests:
Fork, then clone the repo:
git clone git@github.com:your-username/bottender.git
Install the dependencies:
cd bottender
yarn
Make sure the tests pass (including eslint, flow checks and jest tests):
yarn test
Make your changes and tests, and make sure the tests pass.
License
MIT © Yoctol
0.14.10 / 2017-12-14
Introducing Viber Support to Bottender!
const { ViberBot } = require('bottender');
const { createServer } = require('bottender/express');
const bot = new ViberBot({
accessToken: '__FILL_YOUR_TOKEN_HERE__',
});
bot.onEvent(async (context) => {
if (context.event.isMessage) {
await context.sendText('Hello World');
}
});
const server = createServer(bot);
server.listen(5000, () => {
console.log('server is running on 5000 port...');
});
See viber-hello-world for more details.
- [new] Add
update-notifier
in CLI #99 - [deps] Update messaging API clients to
v0.6.x
.
messenger
- [fix] Fix domain whitelisting usage
- [fix] Check messenger menu item length #71
line
- [fix] Handle LINE webhook verify request in LineConnector #100
slack
- [new] Add Slack signature validation #94
- [improve] Let slack connector handle promises parallelly #105