Workflow to filter based on Telegram input and get the filtered result in Telegram

Describe the problem/error/question

I have this flow which extracts the carpark availability data from API. I want the filter based on the input from the Telegram, and its filtered results sent to the Telegram.

What is the error message (if any)?

Please share your workflow

Hey @TH1 hope all is well.

It is trying to tell you that telegramData variable doesn’t have the property json.

how should the filter be done then?

I don’t have your input data, if you wish to pin the data in the previous node and share it, we can take a look. Otherwise, most of the properties are hidden under the scroll.

If you want to see what the telegramData looks like, log it to console and see what’s what.

console.log(telegramData);

i think the telegram trigger receives 2 objects : update_id and message.

in your case $json.message is an object.

Since you receive text, you add $json.message.text

[
  {
    "update_id": 264662588,
    "message": {
      "message_id": 952,
      "from": {
        "id": 7675553077,
        "is_bot": false,
        "first_name": "joe",
        "last_name": "Cy",
        "username": "Boby",
        "language_code": "en"
      },
      "chat": {
        "id": 7675553077,
        "first_name": "joe",
        "last_name": "Cy",
        "username": "Boby",
        "type": "private"
      },
      "date": 1757763949,
      "text": "HERE IS WAHT YOU SEND FROM TELEGRAM AS QUERY TEXT INPUT."
    }
  }
]

put that pinned data in your telegram and play.

I key in ‘Bukit Batok’ in Telegram, so the input is actually under text. And I want to filter based on this text.

Hey @TH1,

If you wish to pin the data in the “Extract From File” node and explain the overall goal of this workflow, including expected input and output, I can attempt to figure this out. If you do, make sure to include, why there is both manual trigger and telegram trigger (I hope it is clear that if telegram trigger is activated, the rest of the data starting from manual trigger and all the way to “Merge” Code node is not going to be executed).

Otherwise, troubleshooting screenshots involves too much guess work.

Please give me some time, I try to get back to you later again.. sorry that I am new to this platform and new to n8n as well. Appreciate your patience and willingness to troubleshoot.

1 Like

thanks for pointing out about the flow. I realize it is wrong. My new flow is as below:

I seem to have issue pinning the data, could it be that it is too huge?

It is very possible, you can share the JSON in the Google Doc, Github Gist or any other sharing service.

basically there are 2237 rows from Merge Data by Carpark Number, and I need to filter out those which contains the text entered from Telegram.


{
"car_park_no": 
"AM18",
"address": 
"BLK 308C ANG MO KIO AVENUE 1",
"x_coord": 
"29257.6457",
"y_coord": 
"38619.9953",
"car_park_type": 
"MULTI-STOREY CAR PARK",
"type_of_parking_system": 
"ELECTRONIC PARKING",
"short_term_parking": 
"7AM-10.30PM",
"free_parking": 
"NO",
"night_parking": 
"NO",
"car_park_decks": 
"3",
"gantry_height": 
"2.15",
"car_park_basement": 
"N",
"myNewField": 
1
}
]

above is only part of it, so I need to filter by address which contains the text from Telegram.

Something like this?

2 Likes

wow, THANK YOU VERY MUCH. I am actually very lost in that JavaScript thingy to do this kind of filtering. Is the Python script going to be available for n8n soon? it seems to filter out correctly when the text is “Bukit Batok” as below, I will need some formatting to show each row in the Send text message, and will work on it.

Telgram output:

Found 76 carparks for “Bukit Batok”:

  1. BLK 188A BUKIT BATOK WEST AVENUE 6
    Carpark Number: BBM1
    Coordinates: (18213.6562, 36507.8169)

  2. BLK 628A BUKIT BATOK CENTRAL
    Carpark Number: BBM2
    Coordinates: (18714.471, 36997.6927)

  3. BLK 289H BUKIT BATOK STREET 25
    Carpark Number: BBM3
    Coordinates: (19831.2917, 36294.3127)

  4. BLK 288H BUKIT BATOK STREET 25
    Carpark Number: BBM4
    Coordinates: (19860.3631, 36409.798)

  5. BLK 290H BUKIT BATOK STREET 24
    Carpark Number: BBM5
    Coordinates: (19610.472, 36154.6192)

  6. BLK 291F BUKIT BATOK STREET 24
    Carpark Number: BBM6
    Coordinates: (19289.8168, 36112.2533)

  7. BLK 154A BUKIT BATOK WEST AVENUE 8
    Carpark Number: BBM7
    Coordinates: (18025.9428, 36609.4062)

  8. BLK 622A BUKIT BATOK CENTRAL
    Carpark Number: BBM8
    Coordinates: (18561.8095, 36898.4253)

  9. BLK 395A BUKIT BATOK WEST AVENUE 5
    Carpark Number: BBM9
    Coordinates: (18924.8161, 38652.2819)

  10. BLK 101/110 BUKIT BATOK WEST AVENUE 6
    Carpark Number: U1
    Coordinates: (18391.6404, 36723.769)

  11. BLK 178/184 BUKIT BATOK WEST AVENUE 8
    Carpark Number: U10
    Coordinates: (18029.1321, 36437.8173)

  12. BLK 166 BUKIT BATOK WEST AVENUE 8
    Carpark Number: U11
    Coordinates: (17982.2826, 36616.6603)

  13. BLK 201/211 BUKIT BATOK STREET 21
    Carpark Number: U12
    Coordinates: (18668.6078, 36565.8437)

  14. BLK 212/230 BUKIT BATOK STREET 21
    Carpark Number: U13
    Coordinates: (19086.17, 36658.92)

  15. BLK 217/219 BUKIT BATOK STREET 21
    Carpark Number: U14
    Coordinates: (19276.68, 36568.93)

  16. BLK 231/237 BUKIT BATOK EAST AVENUE 5
    Carpark Number: U15
    Coordinates: (19332.565, 36778.361)

  17. BLK 238/241 BUKIT BATOK EAST AVENUE 5
    Carpark Number: U16
    Coordinates: (19291.0823, 36949.9677)

  18. BLK 242/253 BUKIT BATOK EAST AVENUE 2/5
    Carpark Number: U17
    Coordinates: (19484.9573, 36912.4024)

  19. BLK 254/265 BUKIT BATOK EAST AVENUE 4
    Carpark Number: U18
    Coordinates: (19699.5049, 37022.2461)

  20. BLK 266/284 BUKIT BATOK EAST AVENUE 3/4
    Carpark Number: U19
    Coordinates: (19653.7625, 36736.2392)

  21. BLK 111/132 BUKIT BATOK WEST AVENUE 6
    Carpark Number: U2
    Coordinates: (18316.8368, 36887.7302)

    • BUKIT BATOK EAST AVENUE 2/6
      Carpark Number: U20
      Coordinates: (19895.4902, 36584.6445)
  22. BLK 301/309 BUKIT BATOK STREET 31
    Carpark Number: U21
    Coordinates: (18569.9729, 37715.1464)

  23. BLK 310/323 BUKIT BATOK STREET 32/33
    Carpark Number: U22
    Coordinates: (18339.7245, 38092.0958)

  24. BLK 407-426 BUKIT BATOK WEST AVENUE 2/4
    Carpark Number: U23
    Coordinates: (18234.0951, 38341.652)

  25. BLK 324/336 BUKIT BATOK STREET 32/33
    Carpark Number: U24
    Coordinates: (18465.58, 38439.7002)

  26. BLK 333/334 BUKIT BATOK WEST AVENUE 4
    Carpark Number: U24T
    Coordinates: (18441.4863, 38506.9696)

  27. BLK 337-353/355-356 BUKIT BATOK STREET 34
    Carpark Number: U25
    Coordinates: (18728.7311, 38350.9289)

  28. BLK 354/357-370 BUKIT BATOK STREET 31
    Carpark Number: U26
    Coordinates: (18742.24, 38064.66)

  29. BLK 371-373 BUKIT BATOK STREET 31
    Carpark Number: U27
    Coordinates: (18846.1378, 37962.5676)

  30. BLK 374-376 BUKIT BATOK STREET 31
    Carpark Number: U28
    Coordinates: (18790.052, 37772.6738)

  31. BLK 376 BUKIT BATOK MSCP
    Carpark Number: U29
    Coordinates: (18649.5445, 37851.9011)

  32. BLK 133/139 BUKIT BATOK WEST AVENUE 6
    Carpark Number: U3
    Coordinates: (18098.9773, 37055.7538)

  33. BLK 523-525 BUKIT BATOK STREET 52
    Carpark Number: U30
    Coordinates: (19027.5388, 37666.3629)

  34. BLKS 526-534 BUKIT BATOK STREET 51
    Carpark Number: U31
    Coordinates: (18847.0784, 37666.2614)

  35. BLKS 512-514 BUKIT BATOK STREET 52
    Carpark Number: U32
    Coordinates: (19018.5011, 37355.1895)

  36. BLKS 535-542 BUKIT BATOK STREET 51/52
    Carpark Number: U33
    Coordinates: (18873.0414, 37452.2798)

  37. BLKS 501-511 BUKIT BATOK STREET 52
    Carpark Number: U34
    Coordinates: (19139.7066, 37093.5044)

  38. BLK 185/187 BUKIT BATOK WEST AVENUE 6
    Carpark Number: U38
    Coordinates: (18124.0483, 36539.8249)

  39. BLK 631 BUKIT BATOK CENTRAL
    Carpark Number: U39
    Coordinates: (18837.6188, 36875.2113)

  40. BLK 140/143 BUKIT BATOK STREET 11
    Carpark Number: U4
    Coordinates: (17973.0318, 36974.1108)

  41. BLK 644A BUKIT BATOK CENTRAL
    Carpark Number: U40
    Coordinates: (18879.8441, 36750.5885)

  42. BLK 632/644 BUKIT BATOK CENTRAL
    Carpark Number: U41
    Coordinates: (18955.5289, 36844.8175)

  43. BLK 630 BUKIT BATOK CENTRAL
    Carpark Number: U41A
    Coordinates: (18690.779, 36915.3896)

  44. BLK 404A BUKIT BATOK WEST AVENUE 7
    Carpark Number: U43
    Coordinates: (18275.4565, 38569.6475)

  45. BLK 285A BUKIT BATOK EAST AVENUE 3
    Carpark Number: U45
    Coordinates: (19606.6244, 36561.0495)

  46. BLK 297 - 299 BUKIT BATOK ST 22 BUKIT BATOK STREET 22
    Carpark Number: U46
    Coordinates: (18463.4479, 36256.9749)

  47. BLK 350 BUKIT BATOK STREET 32
    Carpark Number: U48
    Coordinates: (18590.8011, 38166.1707)

  48. 210A BUKIT BATOK STREET 21
    Carpark Number: U49
    Coordinates: (18817.5304, 36385.1968)

  49. BLK 144/149 BUKIT BATOK WEST AVENUE 6
    Carpark Number: U5
    Coordinates: (18135.2799, 36917.0123)

  50. BLK 230A BUKIT BATOK ST 21 BUKIT BATOK STREET 21
    Carpark Number: U50
    Coordinates: (19356.5349, 36607.8807)

  51. BLK 412A BUKIT BATOK WEST AVENUE 4
    Carpark Number: U51
    Coordinates: (18336.325, 38543.2265)

  52. BLK 194 BUKIT BATOK WEST AVENUE 6
    Carpark Number: U52
    Coordinates: (18172.9985, 36305.5813)

  53. BLK 296 BUKIT BATOK STREET 22
    Carpark Number: U53
    Coordinates: (18363.2733, 36194.2818)

  54. 241A BUKIT BATOK EAST AVENUE 5
    Carpark Number: U54
    Coordinates: (19312.2301, 36987.8524)

  55. BLK 445 BUKIT BATOK WEST AVENUE 8
    Carpark Number: U55
    Coordinates: (17419.4393, 36994.0568)

  56. BLK 443 BUKIT BATOK WEST AVENUE 8
    Carpark Number: U56
    Coordinates: (17317.656, 37581.4848)

  57. BLK 293 BUKIT BATOK STREET 21
    Carpark Number: U57
    Coordinates: (19323.1576, 36459.7662)

  58. BLK 292 BUKIT BATOK EAST AVENUE 6
    Carpark Number: U59
    Coordinates: (19327.2904, 36291.9827)

  59. BLK 150/158 BUKIT BATOK STREET 11
    Carpark Number: U6
    Coordinates: (18071.3516, 36683.9531)

  60. BLK 451 BUKIT BATOK WEST AVENUE 6
    Carpark Number: U60
    Coordinates: (18060.8019, 37237.9017)

  61. BLK440 BUKIT BATOK WEST AVENUE 8
    Carpark Number: U61
    Coordinates: (17534.7152, 37528.3789)

  62. BLK 453 BUKIT BATOK WEST AVENUE 6
    Carpark Number: U62
    Coordinates: (17844.6833, 37081.9943)

  63. BLK 377A BUKIT BATOK STREET 31
    Carpark Number: U63
    Coordinates: (18710.2749, 37928.4781)

  64. BLK 461 BUKIT BATOK WEST AVENUE 8
    Carpark Number: U64
    Coordinates: (17583.3446, 37408.1445)

  65. BLK 439 BUKIT BATOK WEST AVENUE 8
    Carpark Number: U65
    Coordinates: (17611.6169, 37719.6743)

  66. BLK 436 BUKIT BATOK WEST AVENUE 5
    Carpark Number: U66
    Coordinates: (17572.5965, 37864.1469)

  67. BLK 432 BUKIT BATOK WEST AVENUE 8
    Carpark Number: U67
    Coordinates: (17873.2383, 38065.8645)

  68. BLK 460 BUKIT BATOK WEST AVENUE 9
    Carpark Number: U68
    Coordinates: (17587.8746, 37337.6914)

  69. BLK 467 BUKIT BATOK WEST AVENUE 9
    Carpark Number: U69
    Coordinates: (18000.4363, 37685.2975)

  70. BLK 159/164 BUKIT BATOK STREET 11
    Carpark Number: U7
    Coordinates: (17847.5676, 36758.9474)

  71. BLK 463 BUKIT BATOK STREET 41
    Carpark Number: U70
    Coordinates: (17773.0352, 37655.3275)

  72. BLK 113C BUKIT BATOK WEST AVENUE 6
    Carpark Number: U71
    Coordinates: (18208.6126, 36824.4404)

  73. BLK 469 BUKIT BATOK WEST AVE 9
    Carpark Number: U72
    Coordinates: (17815.862, 37483.2252)

  74. BLK 165/168 BUKIT BATOK WEST AVENUE 8
    Carpark Number: U8
    Coordinates: (17825.5193, 36588.034)

  75. BLK 169/177 BUKIT BATOK WEST AVENUE 8
    Carpark Number: U9
    Coordinates: (17748.6389, 36445.3951)

There is an option for python in the Code node:

I would still use the JS for now though.

If the answers were helpful, kindly mark my answer as Solution. Thank you.

Cheers

1 Like

Do you have the expertise for this JavaScript to be converted to Python? I am still more comfortable with Python.

// Get the API data

const apiData = $(‘Fetch Carpark Availability’).first().json.items[0].carpark_data;

// Get the CSV data (assuming the CSV node outputs an array of objects)

const csvData = $input.all();

// Since the CSV node might output multiple items (each row as an item), we need to collect them

let allCsvData = ;

for (let i = 0; i < csvData.length; i++) {

allCsvData.push(csvData[i].json);

}

// Create a mapping from carpark number to availability from API data

const availabilityMap = {};

apiData.forEach(carpark => {

availabilityMap[carpark.carpark_number] = carpark.carpark_info;

});

// Merge the data

const mergedData = allCsvData.map(carpark => {

const carparkNumber = carpark.car_park_no;

return {

...carpark,

availability: availabilityMap\[carparkNumber\] || \[\]

};

});

// Now, we need to return the merged data as multiple items or a single item with an array?

// Since we want to pass multiple carparks, we return each as a separate item.

return mergedData.map(item => ({ json: item }));