diff --git a/wai-server/.env.development b/wai-server/.env.development index 45152ff..5f34498 100644 --- a/wai-server/.env.development +++ b/wai-server/.env.development @@ -11,5 +11,5 @@ NODE_ENV='development' WEBHOOK_URL='https://p9axztuwd7x8a7.mycht.cn/whatsapp_server/wawebhook' -SERVER_DOMAIN='' +SERVER_DOMAIN='http://202.103.68.93:3031' SERVER_NAME='aliyun1' diff --git a/wai-server/api/channels/channel.controller.js b/wai-server/api/channels/channel.controller.js index bbf18a4..6b3b20b 100644 --- a/wai-server/api/channels/channel.controller.js +++ b/wai-server/api/channels/channel.controller.js @@ -9,7 +9,7 @@ const waInstance = { exports.newConnect = async ctx => { try { const { phone } = ctx.query; - const findSession = getConnection({ sesson_id: phone, status: 'open' }); + const findSession = await getConnection({ sesson_id: phone, status: 'open' }); if (findSession) { return findSession; } diff --git a/wai-server/api/index.js b/wai-server/api/index.js index 648510c..157f03b 100644 --- a/wai-server/api/index.js +++ b/wai-server/api/index.js @@ -21,6 +21,11 @@ function applyApiMiddleware(app) { }); app.use(router.routes()).use(router.allowedMethods()); + + // debug: Print out all registered routes + router.stack.forEach(layer => { + console.log(`${layer.methods} ${layer.path}`); + }); } module.exports = applyApiMiddleware; diff --git a/wai-server/api/users/index.js b/wai-server/api/users/index.js deleted file mode 100644 index 0c29102..0000000 --- a/wai-server/api/users/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./user.routes'); diff --git a/wai-server/api/users/user.controller.js b/wai-server/api/users/user.controller.js deleted file mode 100644 index 09b2206..0000000 --- a/wai-server/api/users/user.controller.js +++ /dev/null @@ -1,54 +0,0 @@ -'use strict'; - -const generateId = require('../../utils/generateId.util'); - -/** - * Mock database, replace this with your db models import, required to perform query to your database. - */ -const db = { - users: [ - { - id: 'bff28903-042e-47c2-b9ee-07c3954989ec', - name: 'Marco', - created_at: 1558536830937, - }, - { - id: 'dca01a32-36e6-4886-af75-8e7caa0162a9', - name: 'Leonardo', - created_at: 1558536843742, - }, - { - id: 'dca01a32-36e6-4886-af75-8e7caa0162a9', - name: 'Berta', - created_at: 1558536863550, - }, - ], -}; -function sleep(ms) { - return new Promise(resolve => setTimeout(resolve, ms)); -} -exports.getOne = async ctx => { - const { userId } = ctx.params; - const user = db.users.find(user => user.id === userId); - await sleep(500); - ctx.assert(user, 404, "The requested user doesn't exist"); - return user; -}; - -exports.getAll = async ctx => { - return db.users; -}; - -exports.createOne = async ctx => { - const { name } = ctx.request.body; - ctx.assert(name, 400, 'The user info is malformed!'); - const id = generateId(); - const newUser = { - id, - name, - timestamp: Date.now(), - }; - db.users.push(newUser); - const createdUser = db.users.find(user => user.id === id); - return createdUser; -}; diff --git a/wai-server/api/users/user.routes.js b/wai-server/api/users/user.routes.js deleted file mode 100644 index 03ca522..0000000 --- a/wai-server/api/users/user.routes.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -const controller = require('./user.controller'); - -module.exports = Router => { - const router = new Router({ - prefix: `/users`, - }); - - router - .get('/:userId', controller.getOne) - .get('/', controller.getAll) - .post('/', controller.createOne); - - return router; -}; diff --git a/wai-server/core/services/whatsappHandler.js b/wai-server/core/services/whatsappHandler.js index 12f7e78..6a55bbd 100644 --- a/wai-server/core/services/whatsappHandler.js +++ b/wai-server/core/services/whatsappHandler.js @@ -28,8 +28,8 @@ const webhookBodyBuilder = (messageData, messageType) => { const setupConnectionHandler = () => { // connectionEventNames.forEach(eventName => { - logger.info(`Setting up event ${'connection:added'}`); whatsappEvents.on('connection:added', async connectionData => { + logger.info(`Setting up event ${'connection:added'}`); try { await addConnection({ ...objectMapper(connectionData, { phone: [{ key: 'wa_id' }, { key: 'sesson_id' }], channelId: 'channel_id', createTimestamp: 'createtime' }), @@ -41,6 +41,7 @@ const setupConnectionHandler = () => { } }); whatsappEvents.on('connection:updated', async connectionData => { + logger.info(`Setting up event ${'connection:updated'}`); try { await updateConnection({ ...objectMapper(connectionData, { phone: [{ key: 'wa_id' }, { key: 'sesson_id' }], channelId: 'channel_id' }), diff --git a/wai-server/middleware/components/forward.middleware.js b/wai-server/middleware/components/forward.middleware.js new file mode 100644 index 0000000..b5d4d9b --- /dev/null +++ b/wai-server/middleware/components/forward.middleware.js @@ -0,0 +1,19 @@ +const { domain } = require('../../config').server; +const { isEmpty } = require('../../utils/commons.util'); +const { getConnection } = require('../../services/connections.service'); +const axios = require('axios'); + +module.exports = async (ctx, next) => { + try { + console.log('forward start ---------------'); + // console.log(/^\/wai-server\/v\d{1}\/(?!channels|messages)/.test(ctx.path)); + const { waisession } = ctx.headers; + const findSession = await getConnection({ sesson_id: waisession, status: 'open' }); + if (!isEmpty(findSession) && findSession.connect_domain === domain) { + await next(); + } + // todo: forward to target server + + console.log('forward End ---------------'); + } catch (err) {} +}; diff --git a/wai-server/middleware/components/request.middleware.js b/wai-server/middleware/components/request.middleware.js index 1ce8523..074f295 100644 --- a/wai-server/middleware/components/request.middleware.js +++ b/wai-server/middleware/components/request.middleware.js @@ -1,6 +1,5 @@ module.exports = async (ctx, next) => { try { - console.log('request handdle'); const data = await next(); ctx.body = { errcode: 0, diff --git a/wai-server/middleware/components/request_log.middleware.js b/wai-server/middleware/components/request_log.middleware.js index ac5fb67..b336951 100644 --- a/wai-server/middleware/components/request_log.middleware.js +++ b/wai-server/middleware/components/request_log.middleware.js @@ -1,8 +1,7 @@ const { createRequestLog } = require('../../services/requestLogs.service'); -const rlog = async (ctx, next) => { - try { - console.log('request log'); +module.exports = async (ctx, next) => { + try { await next(); } catch (err) { } finally { @@ -14,4 +13,3 @@ const rlog = async (ctx, next) => { }); } }; -module.exports = rlog; diff --git a/wai-server/middleware/index.js b/wai-server/middleware/index.js index b04dafc..48a3875 100644 --- a/wai-server/middleware/index.js +++ b/wai-server/middleware/index.js @@ -9,12 +9,13 @@ function applyMiddleware(app) { const components = fs.readdirSync(basePath); const nosorts = components.filter(item => item.indexOf('request.middleware') === -1); - nosorts.forEach(file => { + [...nosorts, 'request.middleware.js'].forEach(file => { const componentMiddleware = require(path.join(basePath, file)); app.use(componentMiddleware); }); - const requestHandler = require(path.join(basePath, 'request.middleware.js')); // 必须在最后 - app.use(requestHandler); + + // const requestHandler = require(path.join(basePath, 'request.middleware.js')); // 必须在最后 + // app.use(requestHandler); } module.exports = applyMiddleware; diff --git a/wai-server/models/connections.js b/wai-server/models/connections.js index 10a9fef..5218419 100644 --- a/wai-server/models/connections.js +++ b/wai-server/models/connections.js @@ -9,10 +9,6 @@ module.exports = function(sequelize, DataTypes) { allowNull: false, primaryKey: true, }, - opi_sn: { - type: DataTypes.INTEGER, - allowNull: true, - }, wa_id: { type: DataTypes.STRING(100), allowNull: true,