In Bottender v1.1, we made two remarkable improvements in:

Multi-Channel Routing

In Bottender v1.0, we first introduced the idea of Routing to help bot developers organize the path of bot actions.

When we come to Bottender v1.1, we are glad to announce Multi-Channel Routing , which enable bot developers to have a dedicated path control cross multiple chat channels.

const { router, messenger, line, slack, telegram, viber, } = require ( 'bottender/router' ); async function MessengerAction ( context ) { } async function LineAction ( context ) { } async function SlackAction ( context ) { } async function TelegramAction ( context ) { } async function ViberAction ( context ) { } function App ( ) { return router([ messenger(MessengerAction), line(LineAction), slack(SlackAction), telegram(TelegramAction), viber(ViberAction), ]); }

More Events for Routing

Besides, Bottender v1.1 adds chat channel specific events for Routing , which allows you to write better modular code in your product codebase.

For example, you can use the same action to update your customer database while a bot user follows/unfollows your bot either on Messenger, LINE or Viber.

const { router, payload, line, telegram } = require ( 'bottender/router' ); async function Follow ( context ) { console .log( `insert ${context.session.user.id} into database` ); await context.sendText( 'Welcome to my bot!' ); } async function Unfollow ( context ) { console .log( `delete ${context.session.user.id} from database` ); } function App ( ) { return router([ payload( 'GET_STARTED' , Follow), line.follow(Follow), line.unfollow(Unfollow), line.join(Follow), line.leave(Unfollow), viber.subscribed(Follow), viber.unsubscribed(Unfollow), ]); }

Note: Please refer to v1.1.0 Change Log to see the whole list of support events for Routing .

Better Slack APIs Support in Chat, View, Block Kits

Since we have observed the increasing needs of Slack Bots, Bottender 1.1 now supports Slack Chat and View APIs. Slack bot developers, can use Slack Native APIs on Bottender without adaptions. Check out our new doc, Sending Slack Messages for more info.

context.chat.postMessage( ); context.chat.postEphemeral( ); context.chat.update( ); context.chat.delete( ); context.chat.meMessage( ); context.chat.getPermalink( ); context.chat.scheduleMessage( ); context.chat.deleteScheduledMessage( ); context.chat.scheduledMessages.list( );

Plus, we also improved Block Kit and Modal support. Thanks to static type-checking, you can have a pleasant experience when building block kits UIs. For more info, please see our new doc, Slack Block Kit.