@tiledesk/tiledesk-whatsapp-connector 1.0.3 → 1.0.4-rc2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/logs/app.log CHANGED
@@ -5197,3 +5197,423 @@ info: (wab) KVBaseMongo successfully connected.
5197
5197
  info: (wab) Mongoose DB Connected
5198
5198
  info: (wab) Connect Redis Error Error: Redis connection to redis-19030.c226.eu-west-1-3.ec2.cloud.redislabs.com:19030 failed - read ETIMEDOUT
5199
5199
  info: (wab) Redis ready!
5200
+ error: uncaughtException: Missing variables: FB_APP_ID, FB_APP_SECRET, META_GRAPH_URL
5201
+ Error: Missing variables: FB_APP_ID, FB_APP_SECRET, META_GRAPH_URL
5202
+ at new WhatsappService (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/tiledesk/WhatsappService.js:12:19)
5203
+ at Object.<anonymous> (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/tiledesk/WhatsappService.js:148:25)
5204
+ at Module._compile (node:internal/modules/cjs/loader:1126:14)
5205
+ at Object.Module._extensions..js (node:internal/modules/cjs/loader:1180:10)
5206
+ at Module.load (node:internal/modules/cjs/loader:1004:32)
5207
+ at Function.Module._load (node:internal/modules/cjs/loader:839:12)
5208
+ at Module.require (node:internal/modules/cjs/loader:1028:19)
5209
+ at require (node:internal/modules/cjs/helpers:102:18)
5210
+ at Object.<anonymous> (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/index.js:33:25)
5211
+ at Module._compile (node:internal/modules/cjs/loader:1126:14) {"date":"Thu Aug 07 2025 14:53:57 GMT+0200 (Ora legale dell’Europa centrale)","error":{},"exception":true,"os":{"loadavg":[5.49755859375,4.41064453125,3.74365234375],"uptime":278040},"process":{"argv":["/Users/johnny/.nvm/versions/node/v16.17.0/bin/node","/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/index.js"],"cwd":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute","execPath":"/Users/johnny/.nvm/versions/node/v16.17.0/bin/node","gid":20,"memoryUsage":{"arrayBuffers":19204003,"external":23466020,"heapTotal":57245696,"heapUsed":30120000,"rss":81494016},"pid":6010,"uid":501,"version":"v16.17.0"},"stack":"Error: Missing variables: FB_APP_ID, FB_APP_SECRET, META_GRAPH_URL\n at new WhatsappService (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/tiledesk/WhatsappService.js:12:19)\n at Object.<anonymous> (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/tiledesk/WhatsappService.js:148:25)\n at Module._compile (node:internal/modules/cjs/loader:1126:14)\n at Object.Module._extensions..js (node:internal/modules/cjs/loader:1180:10)\n at Module.load (node:internal/modules/cjs/loader:1004:32)\n at Function.Module._load (node:internal/modules/cjs/loader:839:12)\n at Module.require (node:internal/modules/cjs/loader:1028:19)\n at require (node:internal/modules/cjs/helpers:102:18)\n at Object.<anonymous> (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/index.js:33:25)\n at Module._compile (node:internal/modules/cjs/loader:1126:14)","trace":[{"column":19,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/tiledesk/WhatsappService.js","function":"new WhatsappService","line":12,"method":null,"native":false},{"column":25,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/tiledesk/WhatsappService.js","function":null,"line":148,"method":null,"native":false},{"column":14,"file":"node:internal/modules/cjs/loader","function":"Module._compile","line":1126,"method":"_compile","native":false},{"column":10,"file":"node:internal/modules/cjs/loader","function":"Module._extensions..js","line":1180,"method":".js","native":false},{"column":32,"file":"node:internal/modules/cjs/loader","function":"Module.load","line":1004,"method":"load","native":false},{"column":12,"file":"node:internal/modules/cjs/loader","function":"Module._load","line":839,"method":"_load","native":false},{"column":19,"file":"node:internal/modules/cjs/loader","function":"Module.require","line":1028,"method":"require","native":false},{"column":18,"file":"node:internal/modules/cjs/helpers","function":"require","line":102,"method":null,"native":false},{"column":25,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/index.js","function":null,"line":33,"method":null,"native":false},{"column":14,"file":"node:internal/modules/cjs/loader","function":"Module._compile","line":1126,"method":"_compile","native":false}]}
5212
+ info: (wab) Starting Whatsapp App
5213
+ info: (wab) API_URL: https://tiledesk-server-pre.herokuapp.com
5214
+ info: (wab) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5215
+ info: (wab) BASE_URL: https://3f2a5d6f5bef.ngrok-free.app
5216
+ info: (wab) GRAPH_URL: https://graph.facebook.com/v23.0/
5217
+ info: (wab) APPS_API_URL: https://tiledesk-apps.herokuapp.com
5218
+ info: (wab) AMQP_MANAGER_URL is present
5219
+ info: (wab) JOB_TOPIC_EXCHANGE is present
5220
+ info: (wab) FB_APP_ID is present
5221
+ info: (wab) CONFIGURATION_ID is present
5222
+ info: (wab api) Starting api route
5223
+ info: (wab api) GRAPH_URL: https://graph.facebook.com/v23.0/
5224
+ info: (wab api) API_URL: https://tiledesk-server-pre.herokuapp.com
5225
+ info: (wab api) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5226
+ info: (wab api) AMQP_MANAGER_URL is present
5227
+ info: (wab api) JOB_TOPIC_EXCHANGE is present
5228
+ info: (wab) Redis ready!
5229
+ info: (wab) KVBaseMongo successfully connected.
5230
+ info: (wab) Mongoose DB Connected
5231
+ info: (wab) Starting Whatsapp App
5232
+ info: (wab) API_URL: https://tiledesk-server-pre.herokuapp.com
5233
+ info: (wab) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5234
+ info: (wab) BASE_URL: https://3f2a5d6f5bef.ngrok-free.app
5235
+ info: (wab) GRAPH_URL: https://graph.facebook.com/v23.0/
5236
+ info: (wab) APPS_API_URL: https://tiledesk-apps.herokuapp.com
5237
+ info: (wab) AMQP_MANAGER_URL is present
5238
+ info: (wab) JOB_TOPIC_EXCHANGE is present
5239
+ info: (wab) FB_APP_ID is present
5240
+ info: (wab) CONFIGURATION_ID is present
5241
+ info: (wab api) Starting api route
5242
+ info: (wab api) GRAPH_URL: https://graph.facebook.com/v23.0/
5243
+ info: (wab api) API_URL: https://tiledesk-server-pre.herokuapp.com
5244
+ info: (wab api) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5245
+ info: (wab api) AMQP_MANAGER_URL is present
5246
+ info: (wab api) JOB_TOPIC_EXCHANGE is present
5247
+ info: (wab) Redis ready!
5248
+ info: (wab) KVBaseMongo successfully connected.
5249
+ info: (wab) Mongoose DB Connected
5250
+ error: uncaughtException: Cannot read properties of undefined (reading 'startsWith')
5251
+ TypeError: Cannot read properties of undefined (reading 'startsWith')
5252
+ at /Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js:224:45
5253
+ at Array.map (<anonymous>)
5254
+ at Parser.<anonymous> (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js:220:35)
5255
+ at Parser.emit (node:events:513:28)
5256
+ at endReadableNT (node:internal/streams/readable:1358:12)
5257
+ at processTicksAndRejections (node:internal/process/task_queues:83:21) {"date":"Thu Aug 07 2025 16:51:58 GMT+0200 (Ora legale dell’Europa centrale)","error":{},"exception":true,"os":{"loadavg":[5.93701171875,4.60791015625,4.275390625],"uptime":285121},"process":{"argv":["/Users/johnny/.nvm/versions/node/v16.17.0/bin/node","/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/index.js"],"cwd":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector","execPath":"/Users/johnny/.nvm/versions/node/v16.17.0/bin/node","gid":20,"memoryUsage":{"arrayBuffers":36350720,"external":38772799,"heapTotal":39141376,"heapUsed":36126656,"rss":39256064},"pid":6500,"uid":501,"version":"v16.17.0"},"stack":"TypeError: Cannot read properties of undefined (reading 'startsWith')\n at /Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js:224:45\n at Array.map (<anonymous>)\n at Parser.<anonymous> (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js:220:35)\n at Parser.emit (node:events:513:28)\n at endReadableNT (node:internal/streams/readable:1358:12)\n at processTicksAndRejections (node:internal/process/task_queues:83:21)","trace":[{"column":45,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js","function":null,"line":224,"method":null,"native":false},{"column":null,"file":null,"function":"Array.map","line":null,"method":"map","native":false},{"column":35,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js","function":null,"line":220,"method":null,"native":false},{"column":28,"file":"node:events","function":"Parser.emit","line":513,"method":"emit","native":false},{"column":12,"file":"node:internal/streams/readable","function":"endReadableNT","line":1358,"method":null,"native":false},{"column":21,"file":"node:internal/process/task_queues","function":"processTicksAndRejections","line":83,"method":null,"native":false}]}
5258
+ info: (wab) Starting Whatsapp App
5259
+ info: (wab) API_URL: https://tiledesk-server-pre.herokuapp.com
5260
+ info: (wab) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5261
+ info: (wab) BASE_URL: https://3f2a5d6f5bef.ngrok-free.app
5262
+ info: (wab) GRAPH_URL: https://graph.facebook.com/v23.0/
5263
+ info: (wab) APPS_API_URL: https://tiledesk-apps.herokuapp.com
5264
+ info: (wab) AMQP_MANAGER_URL is present
5265
+ info: (wab) JOB_TOPIC_EXCHANGE is present
5266
+ info: (wab) FB_APP_ID is present
5267
+ info: (wab) CONFIGURATION_ID is present
5268
+ info: (wab api) Starting api route
5269
+ info: (wab api) GRAPH_URL: https://graph.facebook.com/v23.0/
5270
+ info: (wab api) API_URL: https://tiledesk-server-pre.herokuapp.com
5271
+ info: (wab api) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5272
+ info: (wab api) AMQP_MANAGER_URL is present
5273
+ info: (wab api) JOB_TOPIC_EXCHANGE is present
5274
+ info: (wab) Redis ready!
5275
+ info: (wab) Mongoose DB Connected
5276
+ info: (wab) KVBaseMongo successfully connected.
5277
+ error: uncaughtException: Cannot read properties of undefined (reading 'startsWith')
5278
+ TypeError: Cannot read properties of undefined (reading 'startsWith')
5279
+ at /Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js:225:45
5280
+ at Array.map (<anonymous>)
5281
+ at Parser.<anonymous> (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js:220:35)
5282
+ at Parser.emit (node:events:513:28)
5283
+ at endReadableNT (node:internal/streams/readable:1358:12)
5284
+ at processTicksAndRejections (node:internal/process/task_queues:83:21) {"date":"Thu Aug 07 2025 17:00:25 GMT+0200 (Ora legale dell’Europa centrale)","error":{},"exception":true,"os":{"loadavg":[5.60986328125,5.17529296875,4.65966796875],"uptime":285628},"process":{"argv":["/Users/johnny/.nvm/versions/node/v16.17.0/bin/node","/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/index.js"],"cwd":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector","execPath":"/Users/johnny/.nvm/versions/node/v16.17.0/bin/node","gid":20,"memoryUsage":{"arrayBuffers":36321990,"external":37324790,"heapTotal":36519936,"heapUsed":33932896,"rss":44367872},"pid":10128,"uid":501,"version":"v16.17.0"},"stack":"TypeError: Cannot read properties of undefined (reading 'startsWith')\n at /Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js:225:45\n at Array.map (<anonymous>)\n at Parser.<anonymous> (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js:220:35)\n at Parser.emit (node:events:513:28)\n at endReadableNT (node:internal/streams/readable:1358:12)\n at processTicksAndRejections (node:internal/process/task_queues:83:21)","trace":[{"column":45,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js","function":null,"line":225,"method":null,"native":false},{"column":null,"file":null,"function":"Array.map","line":null,"method":"map","native":false},{"column":35,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js","function":null,"line":220,"method":null,"native":false},{"column":28,"file":"node:events","function":"Parser.emit","line":513,"method":"emit","native":false},{"column":12,"file":"node:internal/streams/readable","function":"endReadableNT","line":1358,"method":null,"native":false},{"column":21,"file":"node:internal/process/task_queues","function":"processTicksAndRejections","line":83,"method":null,"native":false}]}
5285
+ info: (wab) Starting Whatsapp App
5286
+ info: (wab) API_URL: https://tiledesk-server-pre.herokuapp.com
5287
+ info: (wab) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5288
+ info: (wab) BASE_URL: https://3f2a5d6f5bef.ngrok-free.app
5289
+ info: (wab) GRAPH_URL: https://graph.facebook.com/v23.0/
5290
+ info: (wab) APPS_API_URL: https://tiledesk-apps.herokuapp.com
5291
+ info: (wab) AMQP_MANAGER_URL is present
5292
+ info: (wab) JOB_TOPIC_EXCHANGE is present
5293
+ info: (wab) FB_APP_ID is present
5294
+ info: (wab) CONFIGURATION_ID is present
5295
+ info: (wab api) Starting api route
5296
+ info: (wab api) GRAPH_URL: https://graph.facebook.com/v23.0/
5297
+ info: (wab api) API_URL: https://tiledesk-server-pre.herokuapp.com
5298
+ info: (wab api) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5299
+ info: (wab api) AMQP_MANAGER_URL is present
5300
+ info: (wab api) JOB_TOPIC_EXCHANGE is present
5301
+ info: (wab) Redis ready!
5302
+ info: (wab) Mongoose DB Connected
5303
+ info: (wab) KVBaseMongo successfully connected.
5304
+ error: uncaughtException: Cannot read properties of undefined (reading 'startsWith')
5305
+ TypeError: Cannot read properties of undefined (reading 'startsWith')
5306
+ at /Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js:226:45
5307
+ at Array.map (<anonymous>)
5308
+ at Parser.<anonymous> (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js:221:37)
5309
+ at Parser.emit (node:events:513:28)
5310
+ at endReadableNT (node:internal/streams/readable:1358:12)
5311
+ at processTicksAndRejections (node:internal/process/task_queues:83:21) {"date":"Thu Aug 07 2025 17:04:18 GMT+0200 (Ora legale dell’Europa centrale)","error":{},"exception":true,"os":{"loadavg":[8.58447265625,10.154296875,7.2060546875],"uptime":285861},"process":{"argv":["/Users/johnny/.nvm/versions/node/v16.17.0/bin/node","/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/index.js"],"cwd":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector","execPath":"/Users/johnny/.nvm/versions/node/v16.17.0/bin/node","gid":20,"memoryUsage":{"arrayBuffers":36249954,"external":37210653,"heapTotal":36519936,"heapUsed":33472672,"rss":74022912},"pid":10453,"uid":501,"version":"v16.17.0"},"stack":"TypeError: Cannot read properties of undefined (reading 'startsWith')\n at /Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js:226:45\n at Array.map (<anonymous>)\n at Parser.<anonymous> (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js:221:37)\n at Parser.emit (node:events:513:28)\n at endReadableNT (node:internal/streams/readable:1358:12)\n at processTicksAndRejections (node:internal/process/task_queues:83:21)","trace":[{"column":45,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js","function":null,"line":226,"method":null,"native":false},{"column":null,"file":null,"function":"Array.map","line":null,"method":"map","native":false},{"column":37,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js","function":null,"line":221,"method":null,"native":false},{"column":28,"file":"node:events","function":"Parser.emit","line":513,"method":"emit","native":false},{"column":12,"file":"node:internal/streams/readable","function":"endReadableNT","line":1358,"method":null,"native":false},{"column":21,"file":"node:internal/process/task_queues","function":"processTicksAndRejections","line":83,"method":null,"native":false}]}
5312
+ info: (wab) Starting Whatsapp App
5313
+ info: (wab) API_URL: https://tiledesk-server-pre.herokuapp.com
5314
+ info: (wab) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5315
+ info: (wab) BASE_URL: https://3f2a5d6f5bef.ngrok-free.app
5316
+ info: (wab) GRAPH_URL: https://graph.facebook.com/v23.0/
5317
+ info: (wab) APPS_API_URL: https://tiledesk-apps.herokuapp.com
5318
+ info: (wab) AMQP_MANAGER_URL is present
5319
+ info: (wab) JOB_TOPIC_EXCHANGE is present
5320
+ info: (wab) FB_APP_ID is present
5321
+ info: (wab) CONFIGURATION_ID is present
5322
+ info: (wab api) Starting api route
5323
+ info: (wab api) GRAPH_URL: https://graph.facebook.com/v23.0/
5324
+ info: (wab api) API_URL: https://tiledesk-server-pre.herokuapp.com
5325
+ info: (wab api) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5326
+ info: (wab api) AMQP_MANAGER_URL is present
5327
+ info: (wab api) JOB_TOPIC_EXCHANGE is present
5328
+ info: (wab) Redis ready!
5329
+ info: (wab) Mongoose DB Connected
5330
+ info: (wab) KVBaseMongo successfully connected.
5331
+ error: uncaughtException: Cannot read properties of undefined (reading 'startsWith')
5332
+ TypeError: Cannot read properties of undefined (reading 'startsWith')
5333
+ at /Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js:227:45
5334
+ at Array.map (<anonymous>)
5335
+ at Parser.<anonymous> (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js:222:37)
5336
+ at Parser.emit (node:events:513:28)
5337
+ at endReadableNT (node:internal/streams/readable:1358:12)
5338
+ at processTicksAndRejections (node:internal/process/task_queues:83:21) {"date":"Thu Aug 07 2025 17:04:55 GMT+0200 (Ora legale dell’Europa centrale)","error":{},"exception":true,"os":{"loadavg":[7.46826171875,9.70751953125,7.16064453125],"uptime":285898},"process":{"argv":["/Users/johnny/.nvm/versions/node/v16.17.0/bin/node","/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/index.js"],"cwd":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector","execPath":"/Users/johnny/.nvm/versions/node/v16.17.0/bin/node","gid":20,"memoryUsage":{"arrayBuffers":36399213,"external":46210976,"heapTotal":67190784,"heapUsed":41393048,"rss":95371264},"pid":10619,"uid":501,"version":"v16.17.0"},"stack":"TypeError: Cannot read properties of undefined (reading 'startsWith')\n at /Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js:227:45\n at Array.map (<anonymous>)\n at Parser.<anonymous> (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js:222:37)\n at Parser.emit (node:events:513:28)\n at endReadableNT (node:internal/streams/readable:1358:12)\n at processTicksAndRejections (node:internal/process/task_queues:83:21)","trace":[{"column":45,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js","function":null,"line":227,"method":null,"native":false},{"column":null,"file":null,"function":"Array.map","line":null,"method":"map","native":false},{"column":37,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js","function":null,"line":222,"method":null,"native":false},{"column":28,"file":"node:events","function":"Parser.emit","line":513,"method":"emit","native":false},{"column":12,"file":"node:internal/streams/readable","function":"endReadableNT","line":1358,"method":null,"native":false},{"column":21,"file":"node:internal/process/task_queues","function":"processTicksAndRejections","line":83,"method":null,"native":false}]}
5339
+ info: (wab) Starting Whatsapp App
5340
+ info: (wab) API_URL: https://tiledesk-server-pre.herokuapp.com
5341
+ info: (wab) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5342
+ info: (wab) BASE_URL: https://3f2a5d6f5bef.ngrok-free.app
5343
+ info: (wab) GRAPH_URL: https://graph.facebook.com/v23.0/
5344
+ info: (wab) APPS_API_URL: https://tiledesk-apps.herokuapp.com
5345
+ info: (wab) AMQP_MANAGER_URL is present
5346
+ info: (wab) JOB_TOPIC_EXCHANGE is present
5347
+ info: (wab) FB_APP_ID is present
5348
+ info: (wab) CONFIGURATION_ID is present
5349
+ info: (wab api) Starting api route
5350
+ info: (wab api) GRAPH_URL: https://graph.facebook.com/v23.0/
5351
+ info: (wab api) API_URL: https://tiledesk-server-pre.herokuapp.com
5352
+ info: (wab api) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5353
+ info: (wab api) AMQP_MANAGER_URL is present
5354
+ info: (wab api) JOB_TOPIC_EXCHANGE is present
5355
+ info: (wab) Redis ready!
5356
+ info: (wab) KVBaseMongo successfully connected.
5357
+ info: (wab) Mongoose DB Connected
5358
+ error: uncaughtException: csv.parseString is not a function
5359
+ TypeError: csv.parseString is not a function
5360
+ at /Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js:201:22
5361
+ at Layer.handle [as handle_request] (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/express/lib/router/layer.js:95:5)
5362
+ at next (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/express/lib/router/route.js:144:13)
5363
+ at done (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/multer/lib/make-middleware.js:47:7)
5364
+ at indicateDone (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/multer/lib/make-middleware.js:51:68)
5365
+ at Multipart.<anonymous> (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/multer/lib/make-middleware.js:168:7)
5366
+ at Multipart.emit (node:events:513:28)
5367
+ at emitCloseNT (node:internal/streams/destroy:138:10)
5368
+ at processTicksAndRejections (node:internal/process/task_queues:82:21) {"date":"Thu Aug 07 2025 17:06:29 GMT+0200 (Ora legale dell’Europa centrale)","error":{},"exception":true,"os":{"loadavg":[4.8056640625,8.22412109375,6.8544921875],"uptime":285992},"process":{"argv":["/Users/johnny/.nvm/versions/node/v16.17.0/bin/node","/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/index.js"],"cwd":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector","execPath":"/Users/johnny/.nvm/versions/node/v16.17.0/bin/node","gid":20,"memoryUsage":{"arrayBuffers":36393691,"external":46210989,"heapTotal":66666496,"heapUsed":40973752,"rss":109019136},"pid":10841,"uid":501,"version":"v16.17.0"},"stack":"TypeError: csv.parseString is not a function\n at /Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js:201:22\n at Layer.handle [as handle_request] (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/express/lib/router/layer.js:95:5)\n at next (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/express/lib/router/route.js:144:13)\n at done (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/multer/lib/make-middleware.js:47:7)\n at indicateDone (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/multer/lib/make-middleware.js:51:68)\n at Multipart.<anonymous> (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/multer/lib/make-middleware.js:168:7)\n at Multipart.emit (node:events:513:28)\n at emitCloseNT (node:internal/streams/destroy:138:10)\n at processTicksAndRejections (node:internal/process/task_queues:82:21)","trace":[{"column":22,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js","function":null,"line":201,"method":null,"native":false},{"column":5,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/express/lib/router/layer.js","function":"Layer.handle [as handle_request]","line":95,"method":"handle [as handle_request]","native":false},{"column":13,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/express/lib/router/route.js","function":"next","line":144,"method":null,"native":false},{"column":7,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/multer/lib/make-middleware.js","function":"done","line":47,"method":null,"native":false},{"column":68,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/multer/lib/make-middleware.js","function":"indicateDone","line":51,"method":null,"native":false},{"column":7,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/multer/lib/make-middleware.js","function":null,"line":168,"method":null,"native":false},{"column":28,"file":"node:events","function":"Multipart.emit","line":513,"method":"emit","native":false},{"column":10,"file":"node:internal/streams/destroy","function":"emitCloseNT","line":138,"method":null,"native":false},{"column":21,"file":"node:internal/process/task_queues","function":"processTicksAndRejections","line":82,"method":null,"native":false}]}
5369
+ info: (wab) Starting Whatsapp App
5370
+ info: (wab) API_URL: https://tiledesk-server-pre.herokuapp.com
5371
+ info: (wab) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5372
+ info: (wab) BASE_URL: https://3f2a5d6f5bef.ngrok-free.app
5373
+ info: (wab) GRAPH_URL: https://graph.facebook.com/v23.0/
5374
+ info: (wab) APPS_API_URL: https://tiledesk-apps.herokuapp.com
5375
+ info: (wab) AMQP_MANAGER_URL is present
5376
+ info: (wab) JOB_TOPIC_EXCHANGE is present
5377
+ info: (wab) FB_APP_ID is present
5378
+ info: (wab) CONFIGURATION_ID is present
5379
+ info: (wab api) Starting api route
5380
+ info: (wab api) GRAPH_URL: https://graph.facebook.com/v23.0/
5381
+ info: (wab api) API_URL: https://tiledesk-server-pre.herokuapp.com
5382
+ info: (wab api) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5383
+ info: (wab api) AMQP_MANAGER_URL is present
5384
+ info: (wab api) JOB_TOPIC_EXCHANGE is present
5385
+ info: (wab) Redis ready!
5386
+ info: (wab) Mongoose DB Connected
5387
+ info: (wab) KVBaseMongo successfully connected.
5388
+ error: uncaughtException: write after end
5389
+ Error [ERR_STREAM_WRITE_AFTER_END]: write after end
5390
+ at new NodeError (node:internal/errors:387:5)
5391
+ at _write (node:internal/streams/writable:321:11)
5392
+ at CsvParserStream.Writable.write (node:internal/streams/writable:336:10)
5393
+ at Readable.ondata (node:internal/streams/readable:754:22)
5394
+ at Readable.emit (node:events:513:28)
5395
+ at Readable.read (node:internal/streams/readable:527:10)
5396
+ at flow (node:internal/streams/readable:1011:34)
5397
+ at emitReadable_ (node:internal/streams/readable:592:3)
5398
+ at processTicksAndRejections (node:internal/process/task_queues:82:21) {"date":"Thu Aug 07 2025 17:11:41 GMT+0200 (Ora legale dell’Europa centrale)","error":{"code":"ERR_STREAM_WRITE_AFTER_END"},"exception":true,"os":{"loadavg":[9.2958984375,9.7119140625,7.9541015625],"uptime":286304},"process":{"argv":["/Users/johnny/.nvm/versions/node/v16.17.0/bin/node","/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/index.js"],"cwd":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector","execPath":"/Users/johnny/.nvm/versions/node/v16.17.0/bin/node","gid":20,"memoryUsage":{"arrayBuffers":36260185,"external":37263649,"heapTotal":36782080,"heapUsed":33288560,"rss":73170944},"pid":12143,"uid":501,"version":"v16.17.0"},"stack":"Error [ERR_STREAM_WRITE_AFTER_END]: write after end\n at new NodeError (node:internal/errors:387:5)\n at _write (node:internal/streams/writable:321:11)\n at CsvParserStream.Writable.write (node:internal/streams/writable:336:10)\n at Readable.ondata (node:internal/streams/readable:754:22)\n at Readable.emit (node:events:513:28)\n at Readable.read (node:internal/streams/readable:527:10)\n at flow (node:internal/streams/readable:1011:34)\n at emitReadable_ (node:internal/streams/readable:592:3)\n at processTicksAndRejections (node:internal/process/task_queues:82:21)","trace":[{"column":5,"file":"node:internal/errors","function":"new NodeError","line":387,"method":null,"native":false},{"column":11,"file":"node:internal/streams/writable","function":"_write","line":321,"method":null,"native":false},{"column":10,"file":"node:internal/streams/writable","function":"CsvParserStream.Writable.write","line":336,"method":"write","native":false},{"column":22,"file":"node:internal/streams/readable","function":"Readable.ondata","line":754,"method":"ondata","native":false},{"column":28,"file":"node:events","function":"Readable.emit","line":513,"method":"emit","native":false},{"column":10,"file":"node:internal/streams/readable","function":"Readable.read","line":527,"method":"read","native":false},{"column":34,"file":"node:internal/streams/readable","function":"flow","line":1011,"method":null,"native":false},{"column":3,"file":"node:internal/streams/readable","function":"emitReadable_","line":592,"method":null,"native":false},{"column":21,"file":"node:internal/process/task_queues","function":"processTicksAndRejections","line":82,"method":null,"native":false}]}
5399
+ info: (wab) Starting Whatsapp App
5400
+ info: (wab) API_URL: https://tiledesk-server-pre.herokuapp.com
5401
+ info: (wab) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5402
+ info: (wab) BASE_URL: https://3f2a5d6f5bef.ngrok-free.app
5403
+ info: (wab) GRAPH_URL: https://graph.facebook.com/v23.0/
5404
+ info: (wab) APPS_API_URL: https://tiledesk-apps.herokuapp.com
5405
+ info: (wab) AMQP_MANAGER_URL is present
5406
+ info: (wab) JOB_TOPIC_EXCHANGE is present
5407
+ info: (wab) FB_APP_ID is present
5408
+ info: (wab) CONFIGURATION_ID is present
5409
+ info: (wab api) Starting api route
5410
+ info: (wab api) GRAPH_URL: https://graph.facebook.com/v23.0/
5411
+ info: (wab api) API_URL: https://tiledesk-server-pre.herokuapp.com
5412
+ info: (wab api) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5413
+ info: (wab api) AMQP_MANAGER_URL is present
5414
+ info: (wab api) JOB_TOPIC_EXCHANGE is present
5415
+ info: (wab) Redis ready!
5416
+ info: (wab) KVBaseMongo successfully connected.
5417
+ info: (wab) Mongoose DB Connected
5418
+ error: uncaughtException: write after end
5419
+ Error [ERR_STREAM_WRITE_AFTER_END]: write after end
5420
+ at new NodeError (node:internal/errors:387:5)
5421
+ at _write (node:internal/streams/writable:321:11)
5422
+ at CsvParserStream.Writable.write (node:internal/streams/writable:336:10)
5423
+ at Readable.ondata (node:internal/streams/readable:754:22)
5424
+ at Readable.emit (node:events:513:28)
5425
+ at Readable.read (node:internal/streams/readable:527:10)
5426
+ at flow (node:internal/streams/readable:1011:34)
5427
+ at emitReadable_ (node:internal/streams/readable:592:3)
5428
+ at processTicksAndRejections (node:internal/process/task_queues:82:21) {"date":"Thu Aug 07 2025 17:13:07 GMT+0200 (Ora legale dell’Europa centrale)","error":{"code":"ERR_STREAM_WRITE_AFTER_END"},"exception":true,"os":{"loadavg":[30.20166015625,15.85107421875,10.4296875],"uptime":286390},"process":{"argv":["/Users/johnny/.nvm/versions/node/v16.17.0/bin/node","/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/index.js"],"cwd":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector","execPath":"/Users/johnny/.nvm/versions/node/v16.17.0/bin/node","gid":20,"memoryUsage":{"arrayBuffers":36419152,"external":46318473,"heapTotal":66928640,"heapUsed":42320352,"rss":94339072},"pid":12375,"uid":501,"version":"v16.17.0"},"stack":"Error [ERR_STREAM_WRITE_AFTER_END]: write after end\n at new NodeError (node:internal/errors:387:5)\n at _write (node:internal/streams/writable:321:11)\n at CsvParserStream.Writable.write (node:internal/streams/writable:336:10)\n at Readable.ondata (node:internal/streams/readable:754:22)\n at Readable.emit (node:events:513:28)\n at Readable.read (node:internal/streams/readable:527:10)\n at flow (node:internal/streams/readable:1011:34)\n at emitReadable_ (node:internal/streams/readable:592:3)\n at processTicksAndRejections (node:internal/process/task_queues:82:21)","trace":[{"column":5,"file":"node:internal/errors","function":"new NodeError","line":387,"method":null,"native":false},{"column":11,"file":"node:internal/streams/writable","function":"_write","line":321,"method":null,"native":false},{"column":10,"file":"node:internal/streams/writable","function":"CsvParserStream.Writable.write","line":336,"method":"write","native":false},{"column":22,"file":"node:internal/streams/readable","function":"Readable.ondata","line":754,"method":"ondata","native":false},{"column":28,"file":"node:events","function":"Readable.emit","line":513,"method":"emit","native":false},{"column":10,"file":"node:internal/streams/readable","function":"Readable.read","line":527,"method":"read","native":false},{"column":34,"file":"node:internal/streams/readable","function":"flow","line":1011,"method":null,"native":false},{"column":3,"file":"node:internal/streams/readable","function":"emitReadable_","line":592,"method":null,"native":false},{"column":21,"file":"node:internal/process/task_queues","function":"processTicksAndRejections","line":82,"method":null,"native":false}]}
5429
+ info: (wab) Starting Whatsapp App
5430
+ info: (wab) API_URL: https://tiledesk-server-pre.herokuapp.com
5431
+ info: (wab) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5432
+ info: (wab) BASE_URL: https://3f2a5d6f5bef.ngrok-free.app
5433
+ info: (wab) GRAPH_URL: https://graph.facebook.com/v23.0/
5434
+ info: (wab) APPS_API_URL: https://tiledesk-apps.herokuapp.com
5435
+ info: (wab) AMQP_MANAGER_URL is present
5436
+ info: (wab) JOB_TOPIC_EXCHANGE is present
5437
+ info: (wab) FB_APP_ID is present
5438
+ info: (wab) CONFIGURATION_ID is present
5439
+ info: (wab api) Starting api route
5440
+ info: (wab api) GRAPH_URL: https://graph.facebook.com/v23.0/
5441
+ info: (wab api) API_URL: https://tiledesk-server-pre.herokuapp.com
5442
+ info: (wab api) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5443
+ info: (wab api) AMQP_MANAGER_URL is present
5444
+ info: (wab api) JOB_TOPIC_EXCHANGE is present
5445
+ info: (wab) Redis ready!
5446
+ info: (wab) KVBaseMongo successfully connected.
5447
+ info: (wab) Mongoose DB Connected
5448
+ info: (wab) Starting Whatsapp App
5449
+ info: (wab) API_URL: https://tiledesk-server-pre.herokuapp.com
5450
+ info: (wab) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5451
+ info: (wab) BASE_URL: https://3f2a5d6f5bef.ngrok-free.app
5452
+ info: (wab) GRAPH_URL: https://graph.facebook.com/v23.0/
5453
+ info: (wab) APPS_API_URL: https://tiledesk-apps.herokuapp.com
5454
+ info: (wab) AMQP_MANAGER_URL is present
5455
+ info: (wab) JOB_TOPIC_EXCHANGE is present
5456
+ info: (wab) FB_APP_ID is present
5457
+ info: (wab) CONFIGURATION_ID is present
5458
+ info: (wab api) Starting api route
5459
+ info: (wab api) GRAPH_URL: https://graph.facebook.com/v23.0/
5460
+ info: (wab api) API_URL: https://tiledesk-server-pre.herokuapp.com
5461
+ info: (wab api) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5462
+ info: (wab api) AMQP_MANAGER_URL is present
5463
+ info: (wab api) JOB_TOPIC_EXCHANGE is present
5464
+ info: (wab) Redis ready!
5465
+ info: (wab) Mongoose DB Connected
5466
+ info: (wab) KVBaseMongo successfully connected.
5467
+ info: (wab) Connect Redis Error Error: Redis connection to redis-19030.c226.eu-west-1-3.ec2.cloud.redislabs.com:19030 failed - read ETIMEDOUT
5468
+ info: (wab) Redis ready!
5469
+ info: (wab) Connect Redis Error Error: Redis connection to redis-19030.c226.eu-west-1-3.ec2.cloud.redislabs.com:19030 failed - read ETIMEDOUT
5470
+ info: (wab) Redis ready!
5471
+ info: (wab) Connect Redis Error Error: Redis connection to redis-19030.c226.eu-west-1-3.ec2.cloud.redislabs.com:19030 failed - read ETIMEDOUT
5472
+ info: (wab) Redis ready!
5473
+ info: (wab) Connect Redis Error Error: Redis connection to redis-19030.c226.eu-west-1-3.ec2.cloud.redislabs.com:19030 failed - read ETIMEDOUT
5474
+ info: (wab) Redis ready!
5475
+ info: (wab) Connect Redis Error Error: Redis connection to redis-19030.c226.eu-west-1-3.ec2.cloud.redislabs.com:19030 failed - read ETIMEDOUT
5476
+ info: (wab) Redis ready!
5477
+ info: (wab) Connect Redis Error Error: Redis connection to redis-19030.c226.eu-west-1-3.ec2.cloud.redislabs.com:19030 failed - read ETIMEDOUT
5478
+ info: (wab) Redis ready!
5479
+ info: (wab) Connect Redis Error Error: Redis connection to redis-19030.c226.eu-west-1-3.ec2.cloud.redislabs.com:19030 failed - read ETIMEDOUT
5480
+ info: (wab) Redis ready!
5481
+ info: (wab) Starting Whatsapp App
5482
+ info: (wab) API_URL: https://tiledesk-server-pre.herokuapp.com
5483
+ info: (wab) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5484
+ info: (wab) BASE_URL: https://3f2a5d6f5bef.ngrok-free.app
5485
+ info: (wab) GRAPH_URL: https://graph.facebook.com/v23.0/
5486
+ info: (wab) APPS_API_URL: https://tiledesk-apps.herokuapp.com
5487
+ info: (wab) AMQP_MANAGER_URL is present
5488
+ info: (wab) JOB_TOPIC_EXCHANGE is present
5489
+ info: (wab) FB_APP_ID is present
5490
+ info: (wab) CONFIGURATION_ID is present
5491
+ info: (wab api) Starting api route
5492
+ info: (wab api) GRAPH_URL: https://graph.facebook.com/v23.0/
5493
+ info: (wab api) API_URL: https://tiledesk-server-pre.herokuapp.com
5494
+ info: (wab api) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5495
+ info: (wab api) AMQP_MANAGER_URL is present
5496
+ info: (wab api) JOB_TOPIC_EXCHANGE is present
5497
+ info: (wab) Redis ready!
5498
+ info: (wab) KVBaseMongo successfully connected.
5499
+ info: (wab) Mongoose DB Connected
5500
+ error: uncaughtException: Parse Error: expected: ';' OR new line got: ''. at 'gennaio"'
5501
+ Error: Parse Error: expected: ';' OR new line got: ''. at 'gennaio"'
5502
+ at QuotedColumnParser.checkForMalformedColumn (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/parser/column/QuotedColumnParser.js:89:23)
5503
+ at QuotedColumnParser.parse (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/parser/column/QuotedColumnParser.js:29:14)
5504
+ at ColumnParser.parse (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/parser/column/ColumnParser.js:20:44)
5505
+ at RowParser.parse (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/parser/RowParser.js:37:48)
5506
+ at Parser.parseRow (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/parser/Parser.js:66:36)
5507
+ at Parser.parseWithoutComments (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/parser/Parser.js:37:35)
5508
+ at Parser.parse (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/parser/Parser.js:31:21)
5509
+ at CsvParserStream.parse (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/CsvParserStream.js:91:44)
5510
+ at CsvParserStream._transform (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/CsvParserStream.js:65:31)
5511
+ at CsvParserStream.Transform._write (node:internal/streams/transform:205:23) {"date":"Mon Aug 25 2025 10:14:46 GMT+0200 (Ora legale dell’Europa centrale)","error":{},"exception":true,"os":{"loadavg":[17.24072265625,7.1279296875,5.5966796875],"uptime":1527186},"process":{"argv":["/Users/johnny/.nvm/versions/node/v16.17.0/bin/node","/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/index.js"],"cwd":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector","execPath":"/Users/johnny/.nvm/versions/node/v16.17.0/bin/node","gid":20,"memoryUsage":{"arrayBuffers":36702989,"external":38707605,"heapTotal":38518784,"heapUsed":35295520,"rss":75563008},"pid":53561,"uid":501,"version":"v16.17.0"},"stack":"Error: Parse Error: expected: ';' OR new line got: '\u0007'. at '\u0007gennaio\"\b'\n at QuotedColumnParser.checkForMalformedColumn (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/parser/column/QuotedColumnParser.js:89:23)\n at QuotedColumnParser.parse (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/parser/column/QuotedColumnParser.js:29:14)\n at ColumnParser.parse (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/parser/column/ColumnParser.js:20:44)\n at RowParser.parse (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/parser/RowParser.js:37:48)\n at Parser.parseRow (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/parser/Parser.js:66:36)\n at Parser.parseWithoutComments (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/parser/Parser.js:37:35)\n at Parser.parse (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/parser/Parser.js:31:21)\n at CsvParserStream.parse (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/CsvParserStream.js:91:44)\n at CsvParserStream._transform (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/CsvParserStream.js:65:31)\n at CsvParserStream.Transform._write (node:internal/streams/transform:205:23)","trace":[{"column":23,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/parser/column/QuotedColumnParser.js","function":"QuotedColumnParser.checkForMalformedColumn","line":89,"method":"checkForMalformedColumn","native":false},{"column":14,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/parser/column/QuotedColumnParser.js","function":"QuotedColumnParser.parse","line":29,"method":"parse","native":false},{"column":44,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/parser/column/ColumnParser.js","function":"ColumnParser.parse","line":20,"method":"parse","native":false},{"column":48,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/parser/RowParser.js","function":"RowParser.parse","line":37,"method":"parse","native":false},{"column":36,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/parser/Parser.js","function":"Parser.parseRow","line":66,"method":"parseRow","native":false},{"column":35,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/parser/Parser.js","function":"Parser.parseWithoutComments","line":37,"method":"parseWithoutComments","native":false},{"column":21,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/parser/Parser.js","function":"Parser.parse","line":31,"method":"parse","native":false},{"column":44,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/CsvParserStream.js","function":"CsvParserStream.parse","line":91,"method":"parse","native":false},{"column":31,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/CsvParserStream.js","function":"CsvParserStream._transform","line":65,"method":"_transform","native":false},{"column":23,"file":"node:internal/streams/transform","function":"CsvParserStream.Transform._write","line":205,"method":"_write","native":false}]}
5512
+ info: (wab) Starting Whatsapp App
5513
+ info: (wab) API_URL: https://tiledesk-server-pre.herokuapp.com
5514
+ info: (wab) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5515
+ info: (wab) BASE_URL: https://3f2a5d6f5bef.ngrok-free.app
5516
+ info: (wab) GRAPH_URL: https://graph.facebook.com/v23.0/
5517
+ info: (wab) APPS_API_URL: https://tiledesk-apps.herokuapp.com
5518
+ info: (wab) AMQP_MANAGER_URL is present
5519
+ info: (wab) JOB_TOPIC_EXCHANGE is present
5520
+ info: (wab) FB_APP_ID is present
5521
+ info: (wab) CONFIGURATION_ID is present
5522
+ info: (wab api) Starting api route
5523
+ info: (wab api) GRAPH_URL: https://graph.facebook.com/v23.0/
5524
+ info: (wab api) API_URL: https://tiledesk-server-pre.herokuapp.com
5525
+ info: (wab api) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5526
+ info: (wab api) AMQP_MANAGER_URL is present
5527
+ info: (wab api) JOB_TOPIC_EXCHANGE is present
5528
+ info: (wab) Redis ready!
5529
+ info: (wab) Mongoose DB Connected
5530
+ info: (wab) KVBaseMongo successfully connected.
5531
+ error: (wab) Error parsing csv Cannot set headers after they are sent to the client {"code":"ERR_HTTP_HEADERS_SENT","stack":"Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client\n at new NodeError (node:internal/errors:387:5)\n at ServerResponse.setHeader (node:_http_outgoing:603:11)\n at ServerResponse.header (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/node_modules/express/lib/response.js:794:10)\n at ServerResponse.send (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/node_modules/express/lib/response.js:174:12)\n at ServerResponse.json (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/node_modules/express/lib/response.js:278:15)\n at ServerResponse.send (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/node_modules/express/lib/response.js:162:21)\n at CsvParserStream.<anonymous> (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js:211:21)\n at CsvParserStream.emit (node:events:513:28)\n at CsvParserStream.emit (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/CsvParserStream.js:54:22)\n at addChunk (node:internal/streams/readable:315:12)"}
5532
+ error: uncaughtException: Cannot set headers after they are sent to the client
5533
+ Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
5534
+ at new NodeError (node:internal/errors:387:5)
5535
+ at ServerResponse.setHeader (node:_http_outgoing:603:11)
5536
+ at ServerResponse.header (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/node_modules/express/lib/response.js:794:10)
5537
+ at ServerResponse.send (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/node_modules/express/lib/response.js:174:12)
5538
+ at ServerResponse.json (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/node_modules/express/lib/response.js:278:15)
5539
+ at ServerResponse.send (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/node_modules/express/lib/response.js:162:21)
5540
+ at CsvParserStream.<anonymous> (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js:206:28)
5541
+ at CsvParserStream.emit (node:events:525:35)
5542
+ at CsvParserStream.emit (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/CsvParserStream.js:54:22)
5543
+ at emitErrorNT (node:internal/streams/destroy:157:8) {"date":"Mon Aug 25 2025 10:17:01 GMT+0200 (Ora legale dell’Europa centrale)","error":{"code":"ERR_HTTP_HEADERS_SENT"},"exception":true,"os":{"loadavg":[5.78564453125,6.10693359375,5.39404296875],"uptime":1527321},"process":{"argv":["/Users/johnny/.nvm/versions/node/v16.17.0/bin/node","/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/index.js"],"cwd":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector","execPath":"/Users/johnny/.nvm/versions/node/v16.17.0/bin/node","gid":20,"memoryUsage":{"arrayBuffers":36404179,"external":46319146,"heapTotal":66666496,"heapUsed":42674176,"rss":105906176},"pid":54390,"uid":501,"version":"v16.17.0"},"stack":"Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client\n at new NodeError (node:internal/errors:387:5)\n at ServerResponse.setHeader (node:_http_outgoing:603:11)\n at ServerResponse.header (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/node_modules/express/lib/response.js:794:10)\n at ServerResponse.send (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/node_modules/express/lib/response.js:174:12)\n at ServerResponse.json (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/node_modules/express/lib/response.js:278:15)\n at ServerResponse.send (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/node_modules/express/lib/response.js:162:21)\n at CsvParserStream.<anonymous> (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js:206:28)\n at CsvParserStream.emit (node:events:525:35)\n at CsvParserStream.emit (/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/CsvParserStream.js:54:22)\n at emitErrorNT (node:internal/streams/destroy:157:8)","trace":[{"column":5,"file":"node:internal/errors","function":"new NodeError","line":387,"method":null,"native":false},{"column":11,"file":"node:_http_outgoing","function":"ServerResponse.setHeader","line":603,"method":"setHeader","native":false},{"column":10,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/node_modules/express/lib/response.js","function":"ServerResponse.header","line":794,"method":"header","native":false},{"column":12,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/node_modules/express/lib/response.js","function":"ServerResponse.send","line":174,"method":"send","native":false},{"column":15,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/node_modules/express/lib/response.js","function":"ServerResponse.json","line":278,"method":"json","native":false},{"column":21,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/node_modules/express/lib/response.js","function":"ServerResponse.send","line":162,"method":"send","native":false},{"column":28,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/routes/api.js","function":null,"line":206,"method":null,"native":false},{"column":35,"file":"node:events","function":"CsvParserStream.emit","line":525,"method":"emit","native":false},{"column":22,"file":"/Users/johnny/Documents/Tiledesk/tiledesk-whatsapp-connector/whatsappRoute/node_modules/@fast-csv/parse/build/src/CsvParserStream.js","function":"CsvParserStream.emit","line":54,"method":"emit","native":false},{"column":8,"file":"node:internal/streams/destroy","function":"emitErrorNT","line":157,"method":null,"native":false}]}
5544
+ info: (wab) Starting Whatsapp App
5545
+ info: (wab) API_URL: https://tiledesk-server-pre.herokuapp.com
5546
+ info: (wab) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5547
+ info: (wab) BASE_URL: https://3f2a5d6f5bef.ngrok-free.app
5548
+ info: (wab) GRAPH_URL: https://graph.facebook.com/v23.0/
5549
+ info: (wab) APPS_API_URL: https://tiledesk-apps.herokuapp.com
5550
+ info: (wab) AMQP_MANAGER_URL is present
5551
+ info: (wab) JOB_TOPIC_EXCHANGE is present
5552
+ info: (wab) FB_APP_ID is present
5553
+ info: (wab) CONFIGURATION_ID is present
5554
+ info: (wab api) Starting api route
5555
+ info: (wab api) GRAPH_URL: https://graph.facebook.com/v23.0/
5556
+ info: (wab api) API_URL: https://tiledesk-server-pre.herokuapp.com
5557
+ info: (wab api) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5558
+ info: (wab api) AMQP_MANAGER_URL is present
5559
+ info: (wab api) JOB_TOPIC_EXCHANGE is present
5560
+ info: (wab) Redis ready!
5561
+ info: (wab) Mongoose DB Connected
5562
+ info: (wab) KVBaseMongo successfully connected.
5563
+ info: (wab) Starting Whatsapp App
5564
+ info: (wab) API_URL: https://tiledesk-server-pre.herokuapp.com
5565
+ info: (wab) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5566
+ info: (wab) BASE_URL: https://3f2a5d6f5bef.ngrok-free.app
5567
+ info: (wab) GRAPH_URL: https://graph.facebook.com/v23.0/
5568
+ info: (wab) APPS_API_URL: https://tiledesk-apps.herokuapp.com
5569
+ info: (wab) AMQP_MANAGER_URL is present
5570
+ info: (wab) JOB_TOPIC_EXCHANGE is present
5571
+ info: (wab) FB_APP_ID is present
5572
+ info: (wab) CONFIGURATION_ID is present
5573
+ info: (wab api) Starting api route
5574
+ info: (wab api) GRAPH_URL: https://graph.facebook.com/v23.0/
5575
+ info: (wab api) API_URL: https://tiledesk-server-pre.herokuapp.com
5576
+ info: (wab api) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5577
+ info: (wab api) AMQP_MANAGER_URL is present
5578
+ info: (wab api) JOB_TOPIC_EXCHANGE is present
5579
+ info: (wab) Redis ready!
5580
+ info: (wab) KVBaseMongo successfully connected.
5581
+ info: (wab) Mongoose DB Connected
5582
+ info: (wab) Starting Whatsapp App
5583
+ info: (wab) API_URL: https://tiledesk-server-pre.herokuapp.com
5584
+ info: (wab) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5585
+ info: (wab) BASE_URL: https://3f2a5d6f5bef.ngrok-free.app
5586
+ info: (wab) GRAPH_URL: https://graph.facebook.com/v23.0/
5587
+ info: (wab) APPS_API_URL: https://tiledesk-apps.herokuapp.com
5588
+ info: (wab) AMQP_MANAGER_URL is present
5589
+ info: (wab) JOB_TOPIC_EXCHANGE is present
5590
+ info: (wab) FB_APP_ID is present
5591
+ info: (wab) CONFIGURATION_ID is present
5592
+ info: (wab api) Starting api route
5593
+ info: (wab api) GRAPH_URL: https://graph.facebook.com/v23.0/
5594
+ info: (wab api) API_URL: https://tiledesk-server-pre.herokuapp.com
5595
+ info: (wab api) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5596
+ info: (wab api) AMQP_MANAGER_URL is present
5597
+ info: (wab api) JOB_TOPIC_EXCHANGE is present
5598
+ info: (wab) Redis ready!
5599
+ info: (wab) Mongoose DB Connected
5600
+ info: (wab) KVBaseMongo successfully connected.
5601
+ info: (wab) Starting Whatsapp App
5602
+ info: (wab) API_URL: https://tiledesk-server-pre.herokuapp.com
5603
+ info: (wab) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5604
+ info: (wab) BASE_URL: https://3f2a5d6f5bef.ngrok-free.app
5605
+ info: (wab) GRAPH_URL: https://graph.facebook.com/v23.0/
5606
+ info: (wab) APPS_API_URL: https://tiledesk-apps.herokuapp.com
5607
+ info: (wab) AMQP_MANAGER_URL is present
5608
+ info: (wab) JOB_TOPIC_EXCHANGE is present
5609
+ info: (wab) FB_APP_ID is present
5610
+ info: (wab) CONFIGURATION_ID is present
5611
+ info: (wab api) Starting api route
5612
+ info: (wab api) GRAPH_URL: https://graph.facebook.com/v23.0/
5613
+ info: (wab api) API_URL: https://tiledesk-server-pre.herokuapp.com
5614
+ info: (wab api) BASE_FILE_URL: https://tiledesk-server-pre.herokuapp.com
5615
+ info: (wab api) AMQP_MANAGER_URL is present
5616
+ info: (wab api) JOB_TOPIC_EXCHANGE is present
5617
+ info: (wab) Redis ready!
5618
+ info: (wab) Mongoose DB Connected
5619
+ info: (wab) KVBaseMongo successfully connected.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tiledesk/tiledesk-whatsapp-connector",
3
- "version": "1.0.3",
3
+ "version": "1.0.4-rc2",
4
4
  "description": "Tiledesk Whatsapp connector",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -22,6 +22,7 @@
22
22
  "csv-parse": "^6.1.0",
23
23
  "dotenv": "^16.0.2",
24
24
  "express": "^4.18.1",
25
+ "fast-csv": "^5.0.5",
25
26
  "form-data": "^4.0.0",
26
27
  "handlebars": "^4.7.7",
27
28
  "i18next": "^24.2.2",
package/routes/api.js CHANGED
@@ -1,8 +1,7 @@
1
- const { json } = require('body-parser');
2
1
  const express = require('express');
3
2
  var winston = require('../winston');
4
3
  const router = express.Router({ mergeParams: true });
5
- const csv = require('csv-parse');
4
+ var parsecsv = require("fast-csv");
6
5
  const multer = require('multer');
7
6
  const upload = multer({ storage: multer.memoryStorage() });
8
7
  const fs = require('fs');
@@ -123,7 +122,9 @@ router.get("/templates/:project_id", async (req, res) => {
123
122
  if (settings) {
124
123
 
125
124
  if (settings.business_account_id) {
126
- let tm = new TemplateManager({ token: settings.wab_token, business_account_id: settings.business_account_id, GRAPH_URL: GRAPH_URL })
125
+
126
+ let waba_id = settings.waba_id || settings.business_account_id;
127
+ let tm = new TemplateManager({ token: settings.wab_token, waba_id: waba_id, GRAPH_URL: GRAPH_URL })
127
128
  let templates = await tm.getTemplates();
128
129
  if (templates) {
129
130
  res.status(200).send(templates.data);
@@ -190,117 +191,177 @@ router.post('/tiledesk/broadcast', async (req, res) => {
190
191
 
191
192
  })
192
193
 
193
- // router.post('/tiledesk/broadcast/csv', upload.single('file'), async (req, res) => {
194
- // const { id_project, phone_number_id, template, transaction_id, broadcast } = req.body;
195
-
196
- // if (!req.file) {
197
- // return res.status(400).json({ success: false, error: 'CSV file is missing.' });
198
- // }
199
-
200
- // const records = [];
201
- // const parser = csv.parse({
202
- // delimiter: ";",
203
- // columns: true,
204
- // trim: true,
205
- // skip_empty_lines: true
206
- // });
207
-
208
- // parser.on('readable', () => {
209
- // let record;
210
- // while ((record = parser.read())) {
211
- // records.push(record);
212
- // }
213
- // });
214
-
215
- // parser.on('error', err => {
216
- // return res.status(400).json({ success: false, error: 'Invalid CSV format.' });
217
- // });
218
-
219
- // parser.on('end', async () => {
220
- // const receiver_list = records.map(row => {
221
- // console.log(Object.keys(row));
222
- // console.log("row: ", row);
223
- // console.log("phone: ", row.phone_number);
224
- // const phone_number = row.phone_number.startsWith('+') ? row.phone_number : `+39${row.phone_number}`;
225
- // const receiver = { phone_number };
226
-
227
- // // inizializza parametri
228
- // let header_params = [];
229
- // let body_params = [];
230
- // let buttons_params = [];
231
-
232
- // for (const [key, value] of Object.entries(row)) {
233
- // if (!value || key === 'phone_number') continue;
234
-
235
- // if (key.startsWith('header')) {
236
- // // Assumiamo che ogni header sia di tipo IMAGE se è un link, altrimenti TEXT
237
- // if (value.startsWith('http')) {
238
- // header_params.push({
239
- // type: "IMAGE",
240
- // image: { link: value }
241
- // });
242
- // } else {
243
- // header_params.push({
244
- // type: "text",
245
- // text: value
246
- // });
247
- // }
248
- // } else if (key.startsWith('body')) {
249
- // body_params.push({
250
- // type: "text",
251
- // text: value
252
- // });
253
- // } else if (key.startsWith('buttons')) {
254
- // buttons_params.push({
255
- // type: "text",
256
- // text: value
257
- // });
258
- // }
259
- // }
260
-
261
- // if (header_params.length) receiver.header_params = header_params;
262
- // if (body_params.length) receiver.body_params = body_params;
263
- // if (buttons_params.length) receiver.buttons_params = buttons_params;
264
-
265
- // return receiver;
266
- // });
267
-
268
- // console.log("receiver_list: ", receiver_list);
269
- // return res.status(200).send(receiver_list);
270
-
271
- // const final_transaction_id = transaction_id || `tiledesk-broadcast-${Date.now()}`;
272
-
273
- // let settings = await utils.getSettingsByProjectId(id_project);
274
- // if (!settings) {
275
- // settings = await utils.getSettings(id_project, null);
276
- // }
277
-
278
- // if (!settings || !settings.business_account_id) {
279
- // return res.status(400).json({ success: false, error: "WhatsApp not configured or missing business_account_id." });
280
- // }
281
-
282
- // const scheduler = new Scheduler({ AMQP_MANAGER_URL, JOB_TOPIC_EXCHANGE });
283
- // const data_To_scheduler = {
284
- // project_id: id_project,
285
- // receiver_list,
286
- // phone_number_id,
287
- // transaction_id: final_transaction_id,
288
- // template,
289
- // settings,
290
- // broadcast
291
- // };
292
-
293
- // winston.debug('(wab) data_To_scheduler (CSV): ', data_To_scheduler);
294
-
295
- // const schedulerResult = await scheduler.goSchedule(data_To_scheduler);
296
- // winston.verbose('(wab) schedulerResult: ', schedulerResult);
297
-
298
- // return res.status(200).json({ success: true, message: "CSV job started." });
299
- // });
300
-
301
- // parser.write(req.file.buffer);
302
- // parser.end();
303
- // });
194
+ router.post('/tiledesk/broadcast/csv', upload.single('uploadFile'), async (req, res) => {
195
+ const { id_project, phone_number_id, template, transaction_id, broadcast } = req.body;
196
+
197
+ const requiredFields = ['id_project', 'template'];
198
+ const missingFields = requiredFields.filter(field => !req.body[field]);
199
+
200
+ if (missingFields.length > 0) {
201
+ return res.status(400).send({ success: false, error: `Missing parameters: ${missingFields.join(', ')}` });
202
+ }
203
+
204
+ if (!req.file) {
205
+ return res.status(400).send({ success: false, error: 'CSV file is missing.' });
206
+ }
207
+
208
+ const records = [];
209
+
210
+ var csv = req.file.buffer.toString('utf8');
211
+ const parser = parsecsv.parseString(csv, { headers: true, delimiter: ';'});
212
+
213
+ parser.on("error", (err) => {
214
+ winston.error("(wab) Error parsing csv ", err);
215
+ return res.status(500).send({ success: false, error: "Error parsing csv" })
216
+ })
217
+
218
+ parser.on("data", (data) => {
219
+ records.push(data);
220
+ })
221
+
222
+ parser.on("end", async () => {
223
+ console.log("records: ", records);
224
+
225
+ const tlr = new TiledeskWhatsappTranslator();
226
+ const receiver_list = await tlr.createReceiversList(records);
227
+
228
+ winston.debug("(wab) broadcast from csv receiver_list: ", receiver_list);
229
+
230
+ console.log("project: ", id_project)
231
+ const final_transaction_id = transaction_id || `automation-request-${id_project}-${Date.now()}`;
232
+
233
+ let settings = await utils.getSettingsByProjectId(id_project);
234
+ if (!settings) {
235
+ settings = await utils.getSettings(id_project, null);
236
+ }
237
+
238
+ console.log("settings: ", settings)
239
+ if (!settings || !settings.business_account_id) {
240
+ return res.status(400).json({ success: false, error: "WhatsApp not configured or missing business_account_id." });
241
+ }
242
+
243
+ const scheduler = new Scheduler({ AMQP_MANAGER_URL, JOB_TOPIC_EXCHANGE });
244
+ const data = {
245
+ project_id: id_project,
246
+ receiver_list,
247
+ phone_number_id: settings.phone_number_id,
248
+ transaction_id: final_transaction_id,
249
+ template,
250
+ settings,
251
+ broadcast
252
+ };
253
+
254
+ const schedulerResult = await scheduler.goSchedule(data);
255
+ winston.verbose("(wab) scheduler result: ", schedulerResult);
256
+
257
+ res.status(200).send({ success: true, message: "Job started. Send messages in queue." })
258
+ })
259
+
260
+
261
+ // const parser = csv.parseString({
262
+ // delimiter: ";",
263
+ // columns: true,
264
+ // trim: true,
265
+ // skip_empty_lines: true
266
+ // // });
267
+
268
+ // parser.on('readable', () => {
269
+ // let record;
270
+ // while ((record = parser.read())) {
271
+ // console.log("-> record: ", record)
272
+ // records.push(record);
273
+ // }
274
+ // });
275
+
276
+ // parser.on('error', err => {
277
+ // return res.status(400).json({ success: false, error: 'Invalid CSV format.' });
278
+ // });
279
+
280
+ // parser.on('end', async () => {
281
+ // console.log("records: ", records)
282
+ // const receiver_list = records.map(row => {
283
+ // console.log(Object.keys(row));
284
+ // console.log("row: ", row);
285
+ // console.log("header: ", row.header_0);
286
+ // console.log("phone: ", row.phone_number);
287
+ // const phone_number = row.phone_number.startsWith('+') ? row.phone_number : `+39${row.phone_number}`;
288
+ // const receiver = { phone_number };
289
+
290
+ // let header_params = [];
291
+ // let body_params = [];
292
+ // let buttons_params = [];
293
+
294
+ // for (const [key, value] of Object.entries(row)) {
295
+ // if (!value || key === 'phone_number') continue;
296
+
297
+ // if (key.startsWith('header')) {
298
+ // if (value.startsWith('http')) {
299
+ // header_params.push({
300
+ // type: "IMAGE",
301
+ // image: { link: value }
302
+ // });
303
+ // } else {
304
+ // header_params.push({
305
+ // type: "text",
306
+ // text: value
307
+ // });
308
+ // }
309
+ // } else if (key.startsWith('body')) {
310
+ // body_params.push({
311
+ // type: "text",
312
+ // text: value
313
+ // });
314
+ // } else if (key.startsWith('buttons')) {
315
+ // buttons_params.push({
316
+ // type: "text",
317
+ // text: value
318
+ // });
319
+ // }
320
+ // }
321
+
322
+ // if (header_params.length) receiver.header_params = header_params;
323
+ // if (body_params.length) receiver.body_params = body_params;
324
+ // if (buttons_params.length) receiver.buttons_params = buttons_params;
325
+
326
+ // return receiver;
327
+ // });
328
+
329
+ // console.log("receiver_list: ", receiver_list);
330
+ // return res.status(200).send(receiver_list);
331
+
332
+ // const final_transaction_id = transaction_id || `automation-request-${id_project}-${Date.now()}`;
333
+
334
+ // let settings = await utils.getSettingsByProjectId(id_project);
335
+ // if (!settings) {
336
+ // settings = await utils.getSettings(id_project, null);
337
+ // }
338
+
339
+ // if (!settings || !settings.business_account_id) {
340
+ // return res.status(400).json({ success: false, error: "WhatsApp not configured or missing business_account_id." });
341
+ // }
342
+
343
+ // const scheduler = new Scheduler({ AMQP_MANAGER_URL, JOB_TOPIC_EXCHANGE });
344
+ // const data_To_scheduler = {
345
+ // project_id: id_project,
346
+ // receiver_list,
347
+ // phone_number_id,
348
+ // transaction_id: final_transaction_id,
349
+ // template,
350
+ // settings,
351
+ // broadcast
352
+ // };
353
+
354
+ // winston.debug('(wab) data_To_scheduler (CSV): ', data_To_scheduler);
355
+
356
+ // const schedulerResult = await scheduler.goSchedule(data_To_scheduler);
357
+ // winston.verbose('(wab) schedulerResult: ', schedulerResult);
358
+
359
+ // return res.status(200).json({ success: true, message: "CSV job started." });
360
+ // });
361
+
362
+ // parser.write(req.file.buffer);
363
+ // parser.end();
364
+ });
304
365
 
305
366
 
306
367
 
@@ -70,6 +70,7 @@ class KVBaseMongo {
70
70
  winston.debug("Searching on " + this.db)
71
71
  winston.debug("Searching on Collection " + this.KV_COLLECTION)
72
72
 
73
+ console.log("query: ", query)
73
74
  this.db.collection(this.KV_COLLECTION).findOne(query, function(err, doc) {
74
75
  if (err) {
75
76
  winston.error("Error reading mongodb value", err);
@@ -23,13 +23,13 @@ class TemplateManager {
23
23
 
24
24
  this.token = config.token;
25
25
  this.graph_url = config.GRAPH_URL;
26
- this.business_account_id = config.business_account_id;
26
+ this.waba_id = config.waba_id;
27
27
 
28
28
  }
29
29
 
30
30
  async getTemplates() {
31
31
  return await axios({
32
- url: this.graph_url + this.business_account_id + "/message_templates?access_token=" + this.token,
32
+ url: this.graph_url + this.waba_id + "/message_templates?access_token=" + this.token,
33
33
  headers: {
34
34
  'Content-Type': 'application/json'
35
35
  },
@@ -162,10 +162,13 @@ class TemplateManager {
162
162
  return params;
163
163
  }
164
164
 
165
+ /**
166
+ * Not in use
167
+ */
165
168
  async getTemplateNamespace() {
166
169
 
167
170
  return await axios({
168
- url: this.graph_url + this.business_account_id + "?fields=message_template_namespace&access_token=" + this.token,
171
+ url: this.graph_url + this.waba_id + "?fields=message_template_namespace&access_token=" + this.token,
169
172
  headers: {
170
173
  'Content-Type': 'application/json'
171
174
  },
@@ -32,7 +32,7 @@ const path = require('path');
32
32
 
33
33
  this.log = false;
34
34
  }
35
-
35
+
36
36
 
37
37
  /*
38
38
  *************** START ***************
@@ -55,7 +55,7 @@ const path = require('path');
55
55
  winston.debug("(wab) [Translator] tiledesk message: ", tiledeskChannelMessage);
56
56
 
57
57
  let lang = await utils.detectLanguageFromPhone(whatsapp_receiver);
58
-
58
+
59
59
  let text = '';
60
60
  if (tiledeskChannelMessage.text) {
61
61
  text = tiledeskChannelMessage.text;
@@ -100,14 +100,14 @@ const path = require('path');
100
100
  link: doc,
101
101
  filename: tiledeskChannelMessage.metadata.name,
102
102
  }
103
-
103
+
104
104
  let index = tiledeskChannelMessage.text.indexOf(tiledeskChannelMessage.metadata.src);
105
105
  if (index != -1) {
106
106
  let length = tiledeskChannelMessage.metadata.src.length;
107
107
  let caption = tiledeskChannelMessage.text.substring(index + length + 2);
108
108
  whatsapp_message.document.caption = caption;
109
109
  }
110
-
110
+
111
111
  }
112
112
 
113
113
  else {
@@ -351,7 +351,7 @@ const path = require('path');
351
351
  return whatsapp_message;
352
352
  }
353
353
  }
354
-
354
+
355
355
  async createTemplateMessage(template, receiver, params) {
356
356
 
357
357
  let whatsapp_message = {
@@ -399,7 +399,7 @@ const path = require('path');
399
399
 
400
400
  let components = [];
401
401
 
402
-
402
+
403
403
  if (receiver.header_params) {
404
404
  let component = {
405
405
  type: "header",
@@ -407,7 +407,7 @@ const path = require('path');
407
407
  }
408
408
  components.push(component);
409
409
  }
410
-
410
+
411
411
  if (receiver.body_params) {
412
412
  let component = {
413
413
  type: "body",
@@ -444,7 +444,7 @@ const path = require('path');
444
444
 
445
445
 
446
446
  return whatsapp_message;
447
- }
447
+ }
448
448
 
449
449
  async toTiledesk(whatsappChannelMessage, from, media_url) {
450
450
 
@@ -460,7 +460,7 @@ const path = require('path');
460
460
  return data;
461
461
  }
462
462
 
463
- else if (whatsappChannelMessage.type == 'button') {
463
+ else if (whatsappChannelMessage.type == 'button') {
464
464
  var tiledeskMessage = {
465
465
  text: whatsappChannelMessage.button.text, // or whatsappChannelMessage.button.payload (?)
466
466
  senderFullname: from,
@@ -471,7 +471,7 @@ const path = require('path');
471
471
 
472
472
  // interactive message
473
473
  else if (whatsappChannelMessage.type == 'interactive') {
474
-
474
+
475
475
  // list reply
476
476
  if (whatsappChannelMessage.interactive.type == 'list_reply') {
477
477
  // action button
@@ -667,7 +667,6 @@ const path = require('path');
667
667
  return params;
668
668
  }
669
669
 
670
-
671
670
  async sanitizeTiledeskMessage(tiledeskJsonMessage, rcv_option) {
672
671
  winston.verbose("(wab) [Translator] Sanitizing...");
673
672
 
@@ -713,6 +712,51 @@ const path = require('path');
713
712
 
714
713
  return tiledeskJsonMessage;
715
714
  }
715
+
716
+ async createReceiversList(records) {
717
+ return records.map(row => {
718
+ const phone_number = row.phone_number.startsWith('+') ? row.phone_number : `+39${row.phone_number}`;
719
+ const receiver = { phone_number };
720
+
721
+ let header_params = [];
722
+ let body_params = [];
723
+ let buttons_params = [];
724
+
725
+ for (const [key, value] of Object.entries(row)) {
726
+ if (!value || key === 'phone_number') continue;
727
+
728
+ if (key.startsWith('header')) {
729
+ if (value.startsWith('http')) {
730
+ header_params.push({
731
+ type: "IMAGE",
732
+ image: { link: value }
733
+ });
734
+ } else {
735
+ header_params.push({
736
+ type: "text",
737
+ text: value
738
+ });
739
+ }
740
+ } else if (key.startsWith('body')) {
741
+ body_params.push({
742
+ type: "text",
743
+ text: value
744
+ });
745
+ } else if (key.startsWith('buttons')) {
746
+ buttons_params.push({
747
+ type: "text",
748
+ text: value
749
+ });
750
+ }
751
+ }
752
+
753
+ if (header_params.length) receiver.header_params = header_params;
754
+ if (body_params.length) receiver.body_params = body_params;
755
+ if (buttons_params.length) receiver.buttons_params = buttons_params;
756
+
757
+ return receiver;
758
+ })
759
+ }
716
760
  /*
717
761
  *************************************
718
762
  ********* WHATSAPP BUSINESS *********