ringcentral-personal-chatbot
Version:
RingCentral personal chatbot framework
117 lines (94 loc) • 3.55 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _isEmpty2 = _interopRequireDefault(require("lodash/isEmpty"));
var _pick2 = _interopRequireDefault(require("lodash/pick"));
var _ringcentral = require("../models/ringcentral");
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
const supportedActions = ['bot-signature-switch', 'bot-switch', 'get-user', 'switch-reply-without-mention-in-team'];
const validProps = ['id', 'name', 'firstName', 'lastName', 'email', 'enabled', 'signed', 'privateChatOnly', 'lastUseTime', 'tokenUpdateTime', 'data'];
var _default = async (req, res) => {
const {
user
} = req;
if (!user) {
res.status(401);
return res.send('please login first');
}
const {
body = {}
} = req;
const {
action,
update
} = body;
if (!supportedActions.includes(action)) {
res.status(400);
return res.send('not supported');
}
const {
id
} = user;
let result;
if (action === 'get-user') {
result = await _ringcentral.User.findByPk(id).catch(console.error);
result = (0, _pick2.default)(result || {}, validProps);
if ((0, _isEmpty2.default)(result)) {
res.status(401);
return res.send('user not exist');
}
} else if (action === 'bot-signature-switch') {
result = await _ringcentral.User.update({
signed: update.signed
}, {
where: {
id
}
}).catch(console.error);
} else if (action === 'bot-switch') {
const enabled = !!update.enabled;
const user = await _ringcentral.User.findByPk(id).catch(console.error);
if (enabled || !user) {
res.status(401);
return res.send('user not find');
}
if (user.enabled && !enabled) {
await _ringcentral.User.update({
enabled: false,
turnOffDesc: 'self'
}, {
where: {
id: user.id
}
});
await user.ensureWebHook(true);
}
result = user;
} else if (action === 'switch-reply-without-mention-in-team') {
const enabled = !!update;
const user = await _ringcentral.User.findByPk(id).catch(console.error);
if (!user) {
res.status(401);
return res.send('user not find');
}
result = await _ringcentral.User.update({
data: _objectSpread(_objectSpread({}, user.data), {}, {
replyWithoutMentionInTeam: enabled
})
}, {
where: {
id
}
}).catch(console.error);
}
res.send({
status: 0,
result
});
};
exports.default = _default;