| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- const {
- getUserDefaultMethod,
- checkAccessToken,
- checkPrefix,
- } = require('./token');
- const { pushWeChatMessage } = require('./wechat');
- const { pushWeChatCorpMessage } = require('./wechat-corp');
- const { pushEmailMessage } = require('./email');
- const { pushClientMessage } = require('./client');
- const { Message } = require('../models');
- async function processMessage(userPrefix, message) {
- if (!checkPrefix(userPrefix)) {
- return {
- success: false,
- message: `不存在的用户前缀:${userPrefix}`,
- };
- }
- if (!checkAccessToken(userPrefix, message.token)) {
- return {
- success: false,
- message: `无效的访问凭证,请检查 token 参数是否正确`,
- };
- }
- if (message.email) {
- // If message has the attribute "email", override its type.
- message.type = 'email';
- }
- if (!message.type) {
- message.type = getUserDefaultMethod(userPrefix);
- }
- 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;
- switch (message.type) {
- case 'test': // WeChat message
- result = await pushWeChatMessage(userPrefix, message);
- break;
- case 'email': // Email message
- result = await pushEmailMessage(userPrefix, message);
- break;
- case 'corp': // WeChat corp message
- result = await pushWeChatCorpMessage(userPrefix, message);
- break;
- case 'client': // Client message
- result = await pushClientMessage(userPrefix, message);
- break;
- default:
- result = {
- success: false,
- message: `不支持的消息类型:${message.type}`,
- };
- break;
- }
- return result;
- }
- module.exports = {
- processMessage,
- };
|