wa-chat-server-mluvii
Version:
Mluvii adapter for the modules wa-chat-server
69 lines (68 loc) • 3.88 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.WAChatServerMluvii = void 0;
const express_1 = __importDefault(require("express"));
const axios_1 = __importDefault(require("axios"));
const MluviiPublicAPI_1 = require("./class/MluviiPublicAPI");
const MluviiToWatsonConverter_1 = require("./class/MluviiToWatsonConverter");
const WatsonToMluviiConverter_1 = require("./class/WatsonToMluviiConverter");
let WAChatServerMluvii = /** @class */ (() => {
class WAChatServerMluvii {
constructor(config, waChatServer) {
this.config = config;
this.waChatServer = waChatServer;
this.log = waChatServer.getLogger();
this.api = new MluviiPublicAPI_1.MluviiPublicAPI(config, {
log: this.log,
axios: axios_1.default,
watsonToMluviiConverterClass: WatsonToMluviiConverter_1.WatsonToMluviiConverter,
});
}
getRouter() {
const router = express_1.default.Router();
router.use((req, res) => __awaiter(this, void 0, void 0, function* () {
const { path, method, headers, body } = req;
if (method === 'POST' && path === '/' && body.sessionId && body.activity) {
this.log.info(`WAChatServerMluvii - activity received`, { path, method, headers, body });
const mluviiSessionId = req.body.sessionId;
const waSessionId = WAChatServerMluvii.mluviiSessionIdToWaSessionId.get(mluviiSessionId);
const session = yield this.waChatServer.startSession(waSessionId);
const watsonRequest = new MluviiToWatsonConverter_1.MluviiToWatsonConverter(req.body, this.api.dependencies, session).convert();
this.log.info(`WAChatServerMluvii (${session.sessionId}) - watson request`, {
watsonRequest,
});
const response = yield this.waChatServer.getResponse(waSessionId, watsonRequest);
WAChatServerMluvii.mluviiSessionIdToWaSessionId.set(mluviiSessionId, response.session.sessionId);
if (!waSessionId) {
this.log.info(`WAChatServerMluvii (${session.sessionId}) - ` +
`Mapping to Mluvii session ${mluviiSessionId}`);
}
yield this.api.sendMessage(mluviiSessionId, response.watsonResponse, response.session);
response.session.end();
res.json({});
}
else {
this.log.warn(`WAChatServerMluvii - unexpected request`, { path, method, headers, body });
res.json({ error: 'Unexpected Request' });
}
}));
return router;
}
}
// TODO - this is a PoC solution
WAChatServerMluvii.mluviiSessionIdToWaSessionId = new Map();
return WAChatServerMluvii;
})();
exports.WAChatServerMluvii = WAChatServerMluvii;