Skip to content

Instantly share code, notes, and snippets.

@jarodreyes
Created June 28, 2017 16:41
Show Gist options
  • Save jarodreyes/78260e304bd4c3224045d1d70b24e91b to your computer and use it in GitHub Desktop.
Save jarodreyes/78260e304bd4c3224045d1d70b24e91b to your computer and use it in GitHub Desktop.
Slack to twilio Threads
...
rtm.on(RTM_EVENTS.MESSAGE, function handleRtmMessage(message) {
var isAdmin = _.contains(admins, message.user);
if (message.thread_ts) {
sendMessageToThread(message).then((message) => {
console.log('Message Sent to user.');
});
return;
}
if (message.subtype == 'message_replied' || message.subtype == 'message_changed') {
console.log('do nothing.');
} else if (~message.text.indexOf('<@U5CDHP0CR>') && isAdmin) {
processCommands(message);
}
});
function processCommands(message) {
if (s.include(message.text, 'admin')) {
assignAdmin(message);
} else if (s.include(message.text, 'broadcast')) {
broadcastAll(message);
} else if (s.include(message.text, 'abort')) {
clearBroadcast();
} else if (s.include(message.text, 'attendees')) {
printAttendees();
} else if (s.include(message.text, 'break0ut')) {
flashBreakout();
} else if (s.include(message.text, 'keyn0te')) {
flashKeynote();
}
}
function sendMessageToThread (message) {
console.log('Sending message to thread now!:', message.text)
return new Promise(function (resolve, reject) {
var thread = message.thread_ts;
User.findOne({threadId: thread})
.then(function(user) {
user.sendMessage(message.text);
console.log(message.text);
})
.catch(function (err) {
console.log(err);
});
})
}
slackBot.prototype.incoming = function (message, user) {
console.log('/incoming invoked with:', message);
var msg = {
"type": "message",
"channel": channel
};
return new Promise(function (resolve, reject) {
if (user.threadId) {
console.log('User is in a thread already');
msg.thread_ts = user.threadId;
if (user.name) {
msg.text = `${user.name}: ${message}`;
} else {
msg.text = message;
}
rtm.send(msg);
} else {
msg.text = `${user.phone}: ${message}`;
rtm.send(msg)
.then(function(response) {
user.threadId = response.ts;
user.save();
})
.catch(function(err) {
console.log(err);
});
}
})
}
slackBot.prototype.start = function() {
rtm.start();
}
module.exports = new slackBot();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment