@@ -13,6 +13,7 @@ import { ChatwootService } from '../services/chatwoot.service';
1313import { WAMonitoringService } from '../services/monitor.service' ;
1414import { SettingsService } from '../services/settings.service' ;
1515import { WebhookService } from '../services/webhook.service' ;
16+ import { WebsocketService } from '../services/websocket.service' ;
1617import { WAStartupService } from '../services/whatsapp.service' ;
1718import { wa } from '../types/wa.types' ;
1819
@@ -26,6 +27,7 @@ export class InstanceController {
2627 private readonly webhookService : WebhookService ,
2728 private readonly chatwootService : ChatwootService ,
2829 private readonly settingsService : SettingsService ,
30+ private readonly websocketService : WebsocketService ,
2931 private readonly cache : RedisCache ,
3032 ) { }
3133
@@ -51,6 +53,8 @@ export class InstanceController {
5153 always_online,
5254 read_messages,
5355 read_status,
56+ websocket_enabled,
57+ websocket_events,
5458 } : InstanceDto ) {
5559 try {
5660 this . logger . verbose ( 'requested createInstance from ' + instanceName + ' instance' ) ;
@@ -77,7 +81,7 @@ export class InstanceController {
7781
7882 this . logger . verbose ( 'hash: ' + hash + ' generated' ) ;
7983
80- let getEvents : string [ ] ;
84+ let webhookEvents : string [ ] ;
8185
8286 if ( webhook ) {
8387 if ( ! isURL ( webhook , { require_tld : false } ) ) {
@@ -121,7 +125,51 @@ export class InstanceController {
121125 webhook_by_events,
122126 } ) ;
123127
124- getEvents = ( await this . webhookService . find ( instance ) ) . events ;
128+ webhookEvents = ( await this . webhookService . find ( instance ) ) . events ;
129+ } catch ( error ) {
130+ this . logger . log ( error ) ;
131+ }
132+ }
133+
134+ let websocketEvents : string [ ] ;
135+
136+ if ( websocket_enabled ) {
137+ this . logger . verbose ( 'creating websocket' ) ;
138+ try {
139+ let newEvents : string [ ] = [ ] ;
140+ if ( websocket_events . length === 0 ) {
141+ newEvents = [
142+ 'APPLICATION_STARTUP' ,
143+ 'QRCODE_UPDATED' ,
144+ 'MESSAGES_SET' ,
145+ 'MESSAGES_UPSERT' ,
146+ 'MESSAGES_UPDATE' ,
147+ 'MESSAGES_DELETE' ,
148+ 'SEND_MESSAGE' ,
149+ 'CONTACTS_SET' ,
150+ 'CONTACTS_UPSERT' ,
151+ 'CONTACTS_UPDATE' ,
152+ 'PRESENCE_UPDATE' ,
153+ 'CHATS_SET' ,
154+ 'CHATS_UPSERT' ,
155+ 'CHATS_UPDATE' ,
156+ 'CHATS_DELETE' ,
157+ 'GROUPS_UPSERT' ,
158+ 'GROUP_UPDATE' ,
159+ 'GROUP_PARTICIPANTS_UPDATE' ,
160+ 'CONNECTION_UPDATE' ,
161+ 'CALL' ,
162+ 'NEW_JWT_TOKEN' ,
163+ ] ;
164+ } else {
165+ newEvents = events ;
166+ }
167+ this . websocketService . create ( instance , {
168+ enabled : true ,
169+ events : newEvents ,
170+ } ) ;
171+
172+ websocketEvents = ( await this . websocketService . find ( instance ) ) . events ;
125173 } catch ( error ) {
126174 this . logger . log ( error ) ;
127175 }
@@ -157,9 +205,15 @@ export class InstanceController {
157205 status : 'created' ,
158206 } ,
159207 hash,
160- webhook,
161- webhook_by_events,
162- events : getEvents ,
208+ webhook : {
209+ webhook,
210+ webhook_by_events,
211+ events : webhookEvents ,
212+ } ,
213+ websocker : {
214+ enabled : websocket_enabled ,
215+ events : websocketEvents ,
216+ } ,
163217 settings,
164218 qrcode : getQrcode ,
165219 } ;
@@ -230,9 +284,15 @@ export class InstanceController {
230284 status : 'created' ,
231285 } ,
232286 hash,
233- webhook,
234- webhook_by_events,
235- events : getEvents ,
287+ webhook : {
288+ webhook,
289+ webhook_by_events,
290+ events : webhookEvents ,
291+ } ,
292+ websocker : {
293+ enabled : websocket_enabled ,
294+ events : websocketEvents ,
295+ } ,
236296 settings,
237297 chatwoot : {
238298 enabled : true ,
0 commit comments