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.' ); } };