Skip to content

Instantly share code, notes, and snippets.

@iamnewton
Forked from kmoe/highfive.js
Last active August 29, 2015 14:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save iamnewton/6b0fcb4a1e7b72fb72e4 to your computer and use it in GitHub Desktop.
Save iamnewton/6b0fcb4a1e7b72fb72e4 to your computer and use it in GitHub Desktop.
module.exports = function rubi( hook ) {
// hook.io has a range of node modules available - see
// https://hook.io/modules.
// We use request (https://www.npmjs.com/package/request) for an easy way to
// make the HTTP request.
var request = require( 'request' );
// The parameters passed in via the slash command POST request.
var params = hook.params;
// Check that the hook has been triggered from our slash command by
// matching the token against the one in our environment variables.
if( params.token === hook.env.rubi_token ) {
// @cnewton for writing this code
var regex = /(@\w+)(.*)/g
var user = params.text.replace( regex, '<$1>' );
var message = params.text.replace( regex, '$2');
// Set up the options for the HTTP request.
var options = {
// Use the Webhook URL from the Slack Incoming Webhooks integration.
uri: hook.env.rubi_url,
method: 'POST',
// Slack expects a JSON payload with a "text" property. Links should be
// enclosed in '<', '>' for correct formatting in Slack.
json: {
'text': '<@' + params.user_name + '> sent a Rubi to ' + user + message
}
};
// Make the POST request to the Slack incoming webhook.
request( options, function( error, response, body ) {
// Pass error back to client if request endpoint can't be reached.
if ( error ) {
hook.res.end( error.message );
}
// Finally, send the response. This will be displayed to the user after
// they submit the slash command.
hook.res.end('Success! Go to <#rubi> to see it :smile:');
});
} else {
// If the token didn't match, send a response anyway for debugging.
hook.res.end( 'Incorrect token.' );
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment