Skip to content
/ borq Public

Makes it easy to create Botkit bots that push data into Ona and RapidPro

License

Notifications You must be signed in to change notification settings

goodbotai/borq

Repository files navigation

NPM

Build Status npm License

Borq

Short for Bot Orchestration, borq is a Bot orchestration framework aimed at making it easy for people to make bots that have register users and manage them in RapidPro and save bot and user conversations in Ona.

Target platforms

Current:

  • Facebook messenger

Todo:

  • Telegram

Run an example bot

$ FACEBOOK_PAGE_ACCESS_TOKEN= FACEBOOK_APP_SECRET= FACEBOOK_VERIFY_TOKEN= yarn dev

const borq = require('borq');
const {
  facebook,
  config
} = borq;

const {controller} = facebook;
const botty = controller.spawn({});

/*
* Set Messenger Profile API
* https://developers.facebook.com/docs/messenger-platform/reference/messenger-profile-api
*/
facebook.setMenu([
  {
    locale: 'default',
    composer_input_disabled: true,
    call_to_actions: [
         {
           title: 'Restart',
           type: 'postback',
           payload: 'restart',
         }, {
           title: 'Other',
           type: 'postback',
           payload: 'other',
         }, {
           type: 'web_url',
           title: 'FAQ',
           url: 'https://goodbotai.github.io/borq/',
           webview_height_ratio: 'full',
         }
       ],
  },
]);
facebook.setGetStarted('start');
facebook.setGreeting('Hello, I am a bot.');

controller.on('facebook_postback', (bot, message) => {
  if (message.payload === 'start') {
    bot.startConversation(message, (err, convo) => {
      convo.addMessage('Welcome to my lair!');
    });
  } else {
    bot.startConversation(message, (err, convo) => {
      convo.addMessage('Hello, you added a postback?');
    });
  }});

controller.hears(['talk'],
                 'message_received',
                 (bot, message) => {
                   bot.startConversation(message, (err, convo) => {
                     convo.addQuestion('Say something',
                                       (res, con) => con.next());
                     convo.addQuestion('Ok bye', (res, con) => con.next());
                   });
                 });

facebook.start(botty, (err, webserver) => {
  // Add routes for your bot to listen on
  webserver.get('/', (req, res) => {
    res.send('<h3>This is a bot</h3>');
  });
});

Documentation

License

BSD-2-Clause

About

Makes it easy to create Botkit bots that push data into Ona and RapidPro

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •