Martin Dimitrov 321ace5b4a
All checks were successful
Build and push image for doorman-homeassistant / docker (push) Successful in 24s
Build and push Doorman UI / API / docker (push) Successful in 1m22s
Build and push image for doorman-homeassistant / deploy-gitainer (push) Successful in 23s
add logging and error when notify errors
2024-11-11 19:58:05 -08:00

52 lines
1.3 KiB
JavaScript

function jsonMsgSuffix(jsonString) {
if (jsonString === undefined) {
return "";
}
try {
const fingerprint = JSON.parse(jsonString);
return `\`\`\`# Unlocked by\n${JSON.stringify(fingerprint, null, 4)}\`\`\``;
} catch (e) {
return `\`\`\`# Unlocked by\n# WARN: Unknown or corrupt raw fingerprint:\n ${jsonString}\`\`\``;
}
}
exports.handler = async function(context, event, callback) {
const response = new Twilio.Response();
const discordPath = Runtime.getFunctions()['common/discord'].path;
const discord = require(discordPath);
let users = event.discordUser;
let msgs = event.msg;
let jsons = event.json;
let promises = [];
try {
users = JSON.parse(users);
msgs = JSON.parse(msgs);
jsons = JSON.parse(jsons);
promises = msgs.map((msg, i) =>
discord.sendMessageToUser(
context,
users[i],
msg + jsonMsgSuffix(jsons[i])
).catch(e => console.error(e))
);
} catch (e) {
console.error(e);
response
.setStatusCode(500)
.appendHeader('Content-Type', 'application/json')
.setBody({ err: e, event });
return callback(null, response);
}
setTimeout(() => {
console.log("Ungraceful finish: running out of time");
callback(null, response);
}, 9500);
await Promise.all(promises);
return callback(null, response);
};