Last active
February 25, 2025 08:25
-
-
Save hcgatewood/1827bfb26a3d0738742aef9953afeb4c to your computer and use it in GitHub Desktop.
Create a Dropbox file with contents from a Twilio-forwarded SMS
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const isoFetch = require('isomorphic-fetch'); | |
const Dropbox = require('dropbox').Dropbox; | |
const util = require('util'); | |
exports.handler = function(context, event, callback) { | |
log(context); | |
log(event); | |
const whitelisted_numbers = [ | |
context.HCG_NUM_1, | |
context.HCG_NUM_2, | |
]; | |
if (!whitelisted_numbers.includes(event.From)) { | |
callback(`Received text from non-whitelisted ${event.From}`); | |
} | |
const twilioClient = context.getTwilioClient(); | |
const dbx = new Dropbox({ | |
accessToken: context.DROPBOX_ACCESS_TOKEN, | |
fetch: isoFetch, | |
}); | |
const todoFilename = `todo_${dateFilename()}.txt`; | |
const todoFilepath = `/${todoFilename}`; | |
dbx.filesUpload({ | |
path: todoFilepath, | |
contents: event.Body, | |
mute: true, | |
// mode: 'overwrite', | |
// Upload success | |
}).then(function(response) { | |
console.log('dropbox upload response...'); | |
console.log(response); | |
dbx.sharingCreateSharedLink({ | |
path: todoFilepath, | |
// Share success | |
}).then(function(response) { | |
console.log('dropbox link response...'); | |
log(response); | |
twilioClient.messages.create({ | |
from: event.To, | |
to: event.From, | |
body: `${response.url}`, | |
}, twilio_err(null, callback)); | |
// Share fail | |
}).catch(function(err) { | |
console.log('dropbox link err...'); | |
log(err); | |
twilioClient.messages.create({ | |
from: event.To, | |
to: event.From, | |
body: `❌ Dropbox link fail.\n${fmtObject(err.error)}`, | |
}, twilio_err(err, callback)); | |
}) | |
// Upload fail | |
}).catch(function(err) { | |
console.log('dropbox upload err...'); | |
log(err); | |
twilioClient.messages.create({ | |
from: event.To, | |
to: event.From, | |
body: `❌ Dropbox upload fail.\n${fmtObject(err.error)}`, | |
}, twilio_err(err, callback)); | |
}); | |
}; | |
function twilio_err(err, callback) { | |
return function(err_twilio, result) { | |
if (err_twilio === null) { | |
callback(err); | |
} else { | |
console.log('twilio err...'); | |
log(err_twilio); | |
callback(err_twilio); | |
} | |
} | |
} | |
function fmtObject(obj) { | |
return util.inspect(obj, {showHidden: false, depth: null}); | |
} | |
function log(obj) { | |
console.log(fmtObject(obj)); | |
} | |
function dateFilename() { | |
var dt = new Date(); | |
filename = `${ | |
dt.getFullYear().toString().padStart(4, '0')}-${ | |
(dt.getMonth()+1).toString().padStart(2, '0')}-${ | |
dt.getDate().toString().padStart(2, '0')}_${ | |
dt.getHours().toString().padStart(2, '0')}-${ | |
dt.getMinutes().toString().padStart(2, '0')}-${ | |
dt.getSeconds().toString().padStart(2, '0')}_${ | |
dt.getTime().toString() | |
}`; | |
return filename; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment