message.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. const { getUserDefaultMethod } = require('./token');
  2. const { pushWeChatMessage } = require('./wechat');
  3. const { pushWeChatCorpMessage } = require('./wechat-corp');
  4. const { pushEmailMessage } = require('./email');
  5. const { Message } = require('../models');
  6. async function processMessage(userPrefix, message) {
  7. if (message.email) {
  8. // If message has the attribute "email", override its type.
  9. message.type = 'email';
  10. }
  11. if (!message.type) {
  12. message.type = getUserDefaultMethod(userPrefix);
  13. }
  14. if (message.content && message.type !== 'email') {
  15. // If message is not email type, we should save it because we have to serve the page.
  16. message = await Message.create(message, { raw: true });
  17. }
  18. let result;
  19. switch (message.type) {
  20. case 'test': // WeChat message
  21. result = await pushWeChatMessage(userPrefix, message);
  22. break;
  23. case 'email': // Email message
  24. result = await pushEmailMessage(userPrefix, message);
  25. break;
  26. case 'corp': // WeChar corp message
  27. result = await pushWeChatCorpMessage(userPrefix, message);
  28. break;
  29. default:
  30. result = {
  31. success: false,
  32. message: `unsupported message type ${message.type}`,
  33. };
  34. break;
  35. }
  36. return result;
  37. }
  38. module.exports = {
  39. processMessage,
  40. };