UNPKG

mangrove-botkit

Version:

Building blocks for Building Bots

131 lines (106 loc) 3.61 kB
var Botkit = require('../lib/Botkit.js'); var os = require('os'); var controller = Botkit.twilioipmbot({ debug: false, }); var bot = controller.spawn({ TWILIO_IPM_SERVICE_SID: process.env.TWILIO_IPM_SERVICE_SID, TWILIO_ACCOUNT_SID: process.env.TWILIO_ACCOUNT_SID, TWILIO_API_KEY: process.env.TWILIO_API_KEY, TWILIO_API_SECRET: process.env.TWILIO_API_SECRET, identity: 'Botkit', autojoin: true }); controller.setupWebserver(process.env.port || 3000, function(err, server) { server.get('/', function(req, res) { res.send(':)'); }); controller.createWebhookEndpoints(server, bot); }); controller.on('bot_channel_join', function(bot, message) { bot.reply(message, 'Here I am!'); }); controller.on('user_channel_join', function(bot,message) { bot.reply(message, 'Welcome, ' + message.user + '!'); }); controller.on('user_channel_leave', function(bot,message) { bot.reply(message, 'Bye, ' + message.user + '!'); }); controller.hears(['hello', 'hi'], 'message_received', function(bot, message) { controller.storage.users.get(message.user, function(err, user) { if (user && user.name) { bot.reply(message, 'Hello ' + user.name + '!!'); } else { bot.reply(message, 'Hello.'); } }); }); controller.hears(['call me (.*)'], 'message_received', function(bot, message) { var matches = message.text.match(/call me (.*)/i); var name = matches[1]; controller.storage.users.get(message.user, function(err, user) { if (!user) { user = { id: message.user, }; } user.name = name; controller.storage.users.save(user, function(err, id) { bot.reply(message, 'Got it. I will call you ' + user.name + ' from now on.'); }); }); }); controller.hears(['what is my name', 'who am i'], 'message_received', function(bot, message) { controller.storage.users.get(message.user, function(err, user) { if (user && user.name) { bot.reply(message,'Your name is ' + user.name); } else { bot.reply(message,'I don\'t know yet!'); } }); }); controller.hears(['shutdown'],'message_received',function(bot, message) { bot.startConversation(message,function(err, convo) { convo.ask('Are you sure you want me to shutdown?',[ { pattern: bot.utterances.yes, callback: function(response, convo) { convo.say('Bye!'); convo.next(); setTimeout(function() { process.exit(); },3000); } }, { pattern: bot.utterances.no, default: true, callback: function(response, convo) { convo.say('*Phew!*'); convo.next(); } } ]); }); }); controller.hears(['uptime','identify yourself','who are you','what is your name'],'message_received',function(bot, message) { var hostname = os.hostname(); var uptime = formatUptime(process.uptime()); bot.reply(message,'I am a bot! I have been running for ' + uptime + ' on ' + hostname + '.'); }); function formatUptime(uptime) { var unit = 'second'; if (uptime > 60) { uptime = uptime / 60; unit = 'minute'; } if (uptime > 60) { uptime = uptime / 60; unit = 'hour'; } if (uptime != 1) { unit = unit + 's'; } uptime = uptime + ' ' + unit; return uptime; }