mangrove-botkit
Version:
Building blocks for Building Bots
131 lines (106 loc) • 3.61 kB
JavaScript
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;
}