11import { RequestHandler , Router } from 'express' ;
22
3+ import { ConfigService , WaBusiness } from '../../config/env.config' ;
34import { Logger } from '../../config/logger.config' ;
45import { instanceNameSchema , webhookSchema } from '../../validate/validate.schema' ;
56import { RouterBroker } from '../abstract/abstract.router' ;
@@ -11,7 +12,7 @@ import { HttpStatus } from './index.router';
1112const logger = new Logger ( 'WebhookRouter' ) ;
1213
1314export class WebhookRouter extends RouterBroker {
14- constructor ( ...guards : RequestHandler [ ] ) {
15+ constructor ( readonly configService : ConfigService , ...guards : RequestHandler [ ] ) {
1516 super ( ) ;
1617 this . router
1718 . post ( this . routerPath ( 'set' ) , ...guards , async ( req , res ) => {
@@ -45,6 +46,31 @@ export class WebhookRouter extends RouterBroker {
4546 } ) ;
4647
4748 res . status ( HttpStatus . OK ) . json ( response ) ;
49+ } )
50+ . post ( this . routerPath ( 'whatsapp' ) , async ( req , res ) => {
51+ logger . verbose ( 'request received in webhook' ) ;
52+ logger . verbose ( 'request body: ' ) ;
53+ logger . verbose ( req . body ) ;
54+
55+ logger . verbose ( 'request query: ' ) ;
56+ logger . verbose ( req . query ) ;
57+ const response = await this . dataValidate < InstanceDto > ( {
58+ request : req ,
59+ schema : instanceNameSchema ,
60+ ClassRef : InstanceDto ,
61+ execute : ( instance , data ) => webhookController . receiveWebhook ( instance , data ) ,
62+ } ) ;
63+
64+ res . status ( HttpStatus . OK ) . json ( response ) ;
65+ } )
66+ . get ( this . routerPath ( 'whatsapp' ) , async ( req , res ) => {
67+ logger . verbose ( 'request received in webhook' ) ;
68+ logger . verbose ( 'request query: ' ) ;
69+ logger . verbose ( req . query ) ;
70+ if ( req . query [ 'hub.verify_token' ] === this . configService . get < WaBusiness > ( 'WA_BUSINESS' ) . TOKEN_WEBHOOK )
71+ res . send ( req . query [ 'hub.challenge' ] ) ;
72+ else res . send ( 'Error, wrong validation token' ) ;
73+ logger . verbose ( 'Error, wrong validation token' ) ;
4874 } ) ;
4975 }
5076
0 commit comments