2021-03-28 11:15:57 +08:00
|
|
|
const { getUserDefaultMethod } = require('./token');
|
2021-01-17 14:26:33 +08:00
|
|
|
const { pushWeChatMessage } = require('./wechat');
|
2021-03-28 11:15:57 +08:00
|
|
|
const { pushWeChatCorpMessage } = require('./wechat-corp');
|
2021-01-31 15:30:22 +08:00
|
|
|
const { pushEmailMessage } = require('./email');
|
2021-01-31 16:00:01 +08:00
|
|
|
const { Message } = require('../models');
|
2021-01-17 14:26:33 +08:00
|
|
|
|
|
|
|
|
async function processMessage(userPrefix, message) {
|
2021-01-31 15:30:22 +08:00
|
|
|
if (message.email) {
|
|
|
|
|
// If message has the attribute "email", override its type.
|
2021-03-28 11:15:57 +08:00
|
|
|
message.type = 'email';
|
2021-01-31 15:30:22 +08:00
|
|
|
}
|
2021-03-28 11:15:57 +08:00
|
|
|
if (!message.type) {
|
|
|
|
|
message.type = getUserDefaultMethod(userPrefix);
|
2021-01-17 14:26:33 +08:00
|
|
|
}
|
2021-03-28 11:15:57 +08:00
|
|
|
if (message.content && message.type !== 'email') {
|
|
|
|
|
// If message is not email type, we should save it because we have to serve the page.
|
|
|
|
|
message = await Message.create(message, { raw: true });
|
|
|
|
|
}
|
|
|
|
|
let result;
|
2021-01-17 14:26:33 +08:00
|
|
|
switch (message.type) {
|
2021-03-28 11:15:57 +08:00
|
|
|
case 'test': // WeChat message
|
2021-01-17 14:26:33 +08:00
|
|
|
result = await pushWeChatMessage(userPrefix, message);
|
|
|
|
|
break;
|
2021-03-28 11:15:57 +08:00
|
|
|
case 'email': // Email message
|
2021-01-31 15:30:22 +08:00
|
|
|
result = await pushEmailMessage(userPrefix, message);
|
2021-01-17 14:26:33 +08:00
|
|
|
break;
|
2021-03-28 11:15:57 +08:00
|
|
|
case 'corp': // WeChar corp message
|
|
|
|
|
result = await pushWeChatCorpMessage(userPrefix, message);
|
2021-01-17 14:26:33 +08:00
|
|
|
break;
|
|
|
|
|
default:
|
2021-03-28 11:15:57 +08:00
|
|
|
result = {
|
|
|
|
|
success: false,
|
|
|
|
|
message: `unsupported message type ${message.type}`,
|
|
|
|
|
};
|
2021-01-17 14:26:33 +08:00
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
2021-01-17 10:49:19 +08:00
|
|
|
|
|
|
|
|
module.exports = {
|
2021-01-17 14:26:33 +08:00
|
|
|
processMessage,
|
2021-01-17 10:49:19 +08:00
|
|
|
};
|