chatbot-constructor
Version:
A chatbot constructor/builder that can help you develop chatbots in no time either using javascript and nodejs or without programming using excel sheet or JSON format. And it can also easily integrate with AI services like LUIS, Watson, Lex, Octane.AI, Wi
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;
}