Martin Dimitrov 07881e907d
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 22s
fix when greeting is missing
2024-11-12 22:11:15 -08:00

88 lines
2.6 KiB
JavaScript

/**
* Try to get door info
*/
exports.handler = async function(context, event, callback) {
const response = new Twilio.Response();
let door = event.door;
const buzzer = event.buzzer?.slice(-10);
if (!door && !buzzer) {
response.setStatusCode(400);
return callback(null, response);
}
const ddbPath = Runtime.getFunctions()['common/ddb'].path;
const ddb = require(ddbPath);
const client = ddb.createDDBClient(context);
if (buzzer) {
door = await client.send(ddb.getDoorAliasCommand(buzzer))
.then(async (alias) => {
if (!alias.Item) {
response
.setStatusCode(404)
.appendHeader('Content-Type', 'application/json')
.setBody({ err: "This buzzer is not registered" });
return undefined;
}
return alias.Item.name.S;
});
}
if (door) {
const config = await client.send(ddb.getDoorConfigCommand(door));
if (!config.Item) {
response
.setStatusCode(404)
.appendHeader('Content-Type', 'application/json')
.setBody({ err: "This buzzer is not registered properly" });
} else {
if (buzzer) {
// respond to twilio CLIENT
response
.setStatusCode(200)
.appendHeader('Content-Type', 'application/json')
.setBody({
buzzer,
door,
fallbackNumbers: config.Item.fallbackNumbers.SS,
pressKey: config.Item.pressKey.S,
discordUsers: config.Item?.discordUsers?.SS || [],
});
} else {
await client.send(ddb.getLockStatusCommand(door))
.then(async (lock) => {
const status = ddb.isLockOpen(lock) ? "OPEN": "CLOSED";
// respond to UI
response
.setStatusCode(200)
.appendHeader('Content-Type', 'application/json')
.setBody({
id: door,
timeout: config.Item.timeout.N,
buzzer: config.Item.buzzer.S,
status,
buzzerCode: config.Item.buzzerCode.S,
fallbackNumbers: config.Item.fallbackNumbers.SS,
pressKey: config.Item.pressKey.S,
discordUsers: config.Item?.discordUsers?.SS || [],
greeting: config.Item?.greeting?.S || "",
});
}).catch((e) => {
console.log(e);
response
.setStatusCode(500)
.appendHeader('Content-Type', 'application/json')
.setBody({ err: e });
});
}
}
}
await client.destroy();
return callback(null, response);
};