voxa-cli
Version:
The Voxa CLI tools
80 lines (74 loc) • 1.8 kB
text/typescript
import chalk from "chalk";
import * as express from "express";
import * as _ from "lodash";
import { VoxaPlatform } from "voxa";
import {
{{#if usesAlexa}}
alexaSkill,
{{/if}}
{{#if usesGoogleAssistant}}
assistantAction,
{{/if}}
{{#if usesFacebook}}
facebookBot,
{{/if}}
{{#if usesTelegram}}
telegramBot,
{{/if}}
} from "./src/app";
import * as config from "./src/config";
{{#if accountLinking}}
import accountLinkingRoutes from "./web/routes";
{{/if}}
export const expressApp = express();
expressApp.use(express.json());
{{#if accountLinking}}
expressApp.use(express.urlencoded({ extended: true }));
expressApp.use(express.static(__dirname + "/web/public"));
expressApp.set("views", __dirname + "/web/views");
expressApp.set("view engine", "ejs");
{{/if}}
const routes = {
{{#if usesAlexa}}
"/alexa": alexaSkill,
{{/if}}
{{#if usesFacebook}}
"/facebook": facebookBot,
{{/if}}
{{#if usesGoogleAssistant}}
"/googleAction": assistantAction,
{{/if}}
{{#if usesTelegram}}
"/telegram": telegramBot,
{{/if}}
};
if (config.server.hostSkill) {
_.map(routes, (handler: VoxaPlatform, route: string) => {
expressApp.post(
route,
async (
req: express.Request,
res: express.Response,
next: express.NextFunction
) => {
try {
const reply = await handler.execute(req.body);
res.json(reply);
} catch (e) {
next(e);
}
}
);
});
}
{{#if accountLinking}}
expressApp.use(accountLinkingRoutes);
{{/if}}
expressApp.listen(config.server.port, () => {
console.log("");
console.log(chalk.green("Listening on:"));
console.log("");
Object.keys(routes).forEach((route) => {
console.log(chalk.green(`localhost:${config.server.port}${route}`));
});
});