diff --git a/src/alice.ts b/src/alice.ts index 596f298..0002462 100644 --- a/src/alice.ts +++ b/src/alice.ts @@ -114,8 +114,6 @@ export default class Alice { * @param {Function} sendResponse — Express res function while listening on port. */ public async handleRequestBody(req, sendResponse) { - const requestedCommandName = selectCommand(req) - /* clear old sessions */ if (this.sessions.length > (this.config.sessionsLimit || DEFAULT_SESSIONS_LIMIT)) { this.sessions.flush() @@ -238,11 +236,19 @@ export default class Alice { req: WebhookRequest, sendResponse?: (res: WebhookResponse) => void, ): Promise { + const executors = [ + /* proxy request to dev server, if enabled */ + this.config.devServerUrl + ? this.handleProxyRequest(req, this.config.devServerUrl) + : this.handleRequestBody(req, sendResponse), + await this.timeoutCallback(new Ctx({ req, sendResponse })), + ].filter(Boolean) + return await Promise.race(executors) return await this.handleRequestBody(req, sendResponse) } - /* * Метод создаёт сервер, который слушает указанный порт. + * Когда на указанный URL приходит POST запрос, управление * передаётся в @handleRequestBody * @@ -269,11 +275,7 @@ export default class Alice { responseAlreadySent = true } try { - const executors = [ - this.handleRequestBody(req.body, handleResponseCallback), - await this.timeoutCallback(new Ctx({ req: req.body, sendResponse: handleResponseCallback })), - ].filter(Boolean) - return await Promise.race(executors) + return await this.handleRequest(req.body, handleResponseCallback) } catch (error) { throw new Error(error) } @@ -320,4 +322,8 @@ export default class Alice { protected _handleLeaveScene() { this.currentScene = null } + + private async handleProxyRequest(request: WebhookRequest, devServerUrl: string) { + return + } } diff --git a/src/types/alice.d.ts b/src/types/alice.d.ts index d413e44..36f47bb 100644 --- a/src/types/alice.d.ts +++ b/src/types/alice.d.ts @@ -3,4 +3,5 @@ export interface configInterface { sessionsLimit?: number oAuthToken?: string skillId?: string + devServerUrl?: string } \ No newline at end of file