@@ -33,23 +33,57 @@ export class TypebotService {
3333 }
3434 }
3535
36+ public async changeStatus ( instance : InstanceDto , data : any ) {
37+ const remoteJid = data . remoteJid ;
38+ const status = data . status ;
39+
40+ const findData = await this . find ( instance ) ;
41+
42+ const session = findData . sessions . find ( ( session ) => session . remoteJid === remoteJid ) ;
43+
44+ if ( session ) {
45+ if ( status === 'closed' ) {
46+ findData . sessions . splice ( findData . sessions . indexOf ( session ) , 1 ) ;
47+
48+ const typebotData = {
49+ enabled : true ,
50+ url : findData . url ,
51+ typebot : findData . typebot ,
52+ expire : findData . expire ,
53+ sessions : findData . sessions ,
54+ } ;
55+
56+ this . create ( instance , typebotData ) ;
57+
58+ return { typebot : { ...instance , typebot : typebotData } } ;
59+ }
60+
61+ findData . sessions . map ( ( session ) => {
62+ if ( session . remoteJid === remoteJid ) {
63+ session . status = status ;
64+ }
65+ } ) ;
66+ }
67+
68+ const typebotData = {
69+ enabled : true ,
70+ url : findData . url ,
71+ typebot : findData . typebot ,
72+ expire : findData . expire ,
73+ sessions : findData . sessions ,
74+ } ;
75+
76+ this . create ( instance , typebotData ) ;
77+
78+ return { typebot : { ...instance , typebot : typebotData } } ;
79+ }
80+
3681 private getTypeMessage ( msg : any ) {
3782 this . logger . verbose ( 'get type message' ) ;
3883
3984 const types = {
4085 conversation : msg . conversation ,
41- imageMessage : msg . imageMessage ?. caption ,
42- videoMessage : msg . videoMessage ?. caption ,
4386 extendedTextMessage : msg . extendedTextMessage ?. text ,
44- messageContextInfo : msg . messageContextInfo ?. stanzaId ,
45- stickerMessage : undefined ,
46- documentMessage : msg . documentMessage ?. caption ,
47- documentWithCaptionMessage : msg . documentWithCaptionMessage ?. message ?. documentMessage ?. caption ,
48- audioMessage : msg . audioMessage ?. caption ,
49- contactMessage : msg . contactMessage ?. vcard ,
50- contactsArrayMessage : msg . contactsArrayMessage ,
51- locationMessage : msg . locationMessage ,
52- liveLocationMessage : msg . liveLocationMessage ,
5387 } ;
5488
5589 this . logger . verbose ( 'type message: ' + types ) ;
@@ -86,6 +120,10 @@ export class TypebotService {
86120 sessionId : id ,
87121 startParams : {
88122 typebot : data . typebot ,
123+ prefilledVariables : {
124+ remoteJid : data . remoteJid ,
125+ pushName : data . pushName ,
126+ } ,
89127 } ,
90128 } ;
91129
@@ -95,6 +133,7 @@ export class TypebotService {
95133 data . sessions . push ( {
96134 remoteJid : data . remoteJid ,
97135 sessionId : `${ id } -${ request . data . sessionId } ` ,
136+ status : 'opened' ,
98137 createdAt : Date . now ( ) ,
99138 updateAt : Date . now ( ) ,
100139 } ) ;
@@ -114,23 +153,9 @@ export class TypebotService {
114153 }
115154
116155 public async sendWAMessage ( instance : InstanceDto , remoteJid : string , messages : any [ ] , input : any [ ] ) {
117- processMessages ( this . waMonitor . waInstances [ instance . instanceName ] , messages , input )
118- . then ( async ( ) => {
119- if ( ! input ) {
120- const typebotData = await this . find ( instance ) ;
121-
122- const session = typebotData . sessions . find ( ( session ) => session . remoteJid === remoteJid ) ;
123-
124- if ( session ) {
125- typebotData . sessions . splice ( typebotData . sessions . indexOf ( session ) , 1 ) ;
126-
127- this . create ( instance , typebotData ) ;
128- }
129- }
130- } )
131- . catch ( ( err ) => {
132- console . error ( 'Erro ao processar mensagens:' , err ) ;
133- } ) ;
156+ processMessages ( this . waMonitor . waInstances [ instance . instanceName ] , messages , input ) . catch ( ( err ) => {
157+ console . error ( 'Erro ao processar mensagens:' , err ) ;
158+ } ) ;
134159
135160 async function processMessages ( instance , messages , input ) {
136161 for ( const message of messages ) {
@@ -174,7 +199,7 @@ export class TypebotService {
174199 await instance . textMessage ( {
175200 number : remoteJid . split ( '@' ) [ 0 ] ,
176201 options : {
177- delay : 1200 ,
202+ delay : instance . localTypebot . delay_message || 1000 ,
178203 presence : 'composing' ,
179204 linkPreview : linkPreview ,
180205 } ,
@@ -188,7 +213,7 @@ export class TypebotService {
188213 await instance . mediaMessage ( {
189214 number : remoteJid . split ( '@' ) [ 0 ] ,
190215 options : {
191- delay : 1200 ,
216+ delay : instance . localTypebot . delay_message || 1000 ,
192217 presence : 'composing' ,
193218 } ,
194219 mediaMessage : {
@@ -202,7 +227,7 @@ export class TypebotService {
202227 await instance . mediaMessage ( {
203228 number : remoteJid . split ( '@' ) [ 0 ] ,
204229 options : {
205- delay : 1200 ,
230+ delay : instance . localTypebot . delay_message || 1000 ,
206231 presence : 'composing' ,
207232 } ,
208233 mediaMessage : {
@@ -216,7 +241,7 @@ export class TypebotService {
216241 await instance . audioWhatsapp ( {
217242 number : remoteJid . split ( '@' ) [ 0 ] ,
218243 options : {
219- delay : 1200 ,
244+ delay : instance . localTypebot . delay_message || 1000 ,
220245 presence : 'recording' ,
221246 encoding : true ,
222247 } ,
@@ -279,6 +304,7 @@ export class TypebotService {
279304 expire : expire ,
280305 sessions : sessions ,
281306 remoteJid : remoteJid ,
307+ pushName : msg . pushName ,
282308 } ) ;
283309
284310 await this . sendWAMessage ( instance , remoteJid , data . messages , data . input ) ;
@@ -287,13 +313,18 @@ export class TypebotService {
287313 }
288314 }
289315
316+ if ( session && session . status !== 'opened' ) {
317+ return ;
318+ }
319+
290320 if ( ! session ) {
291321 const data = await this . createNewSession ( instance , {
292322 url : url ,
293323 typebot : typebot ,
294324 expire : expire ,
295325 sessions : sessions ,
296326 remoteJid : remoteJid ,
327+ pushName : msg . pushName ,
297328 } ) ;
298329
299330 await this . sendWAMessage ( instance , remoteJid , data . messages , data . input ) ;
@@ -320,22 +351,18 @@ export class TypebotService {
320351 const content = this . getConversationMessage ( msg . message ) ;
321352
322353 if ( ! content ) {
323- return ;
324- }
325-
326- if ( content . toLowerCase ( ) === 'sair' ) {
327- sessions . splice ( sessions . indexOf ( session ) , 1 ) ;
328-
329- const typebotData = {
330- enabled : true ,
331- url : url ,
332- typebot : typebot ,
333- expire : expire ,
334- sessions,
335- } ;
336-
337- this . create ( instance , typebotData ) ;
338-
354+ if ( this . waMonitor . waInstances [ instance . instanceName ] . localTypebot . unknown_message ) {
355+ this . waMonitor . waInstances [ instance . instanceName ] . textMessage ( {
356+ number : remoteJid . split ( '@' ) [ 0 ] ,
357+ options : {
358+ delay : this . waMonitor . waInstances [ instance . instanceName ] . localTypebot . delay_message || 1000 ,
359+ presence : 'composing' ,
360+ } ,
361+ textMessage : {
362+ text : this . waMonitor . waInstances [ instance . instanceName ] . localTypebot . unknown_message ,
363+ } ,
364+ } ) ;
365+ }
339366 return ;
340367 }
341368
@@ -346,18 +373,6 @@ export class TypebotService {
346373
347374 const request = await axios . post ( url + '/api/v1/sendMessage' , reqData ) ;
348375
349- if ( ! request . data . input ) {
350- sessions . splice ( sessions . indexOf ( session ) , 1 ) ;
351-
352- await this . createNewSession ( instance , {
353- url : url ,
354- typebot : typebot ,
355- expire : expire ,
356- sessions : sessions ,
357- remoteJid : remoteJid ,
358- } ) ;
359- }
360-
361376 await this . sendWAMessage ( instance , remoteJid , request . data . messages , request . data . input ) ;
362377
363378 return ;
0 commit comments