@samliew
Hi, thank you so much for sharing your custom Chunk Array module — it’s a great idea and I really appreciate your contribution!
I’ve been trying to use it to split a list of Telegram inline keyboard buttons into multiple rows (e.g. 2 buttons per row). The module does produce a nested array like this (output simplified):
- First row:
"{\"text\":\"Button 1\",\"callback_data\":\"architecture\"}""{\"text\":\"Button 2\",\"callback_data\":\"cafe\"}"
Which looks structurally correct. However, when I pass this to the Telegram bot module, the buttons don’t render.
As far as I understand, Telegram expects actual JSON objects, not strings. Like this:
[
[
{ “text”: “Button 1”, “callback_data”: “architecture” },
{ “text”: “Button 2”, “callback_data”: “cafe” }
]
]
So I think the issue is that the elements inside each sub-array are stringified JSON, not real objects.
I tried a few things inside Make:
- using Parse JSON inside an Iterator
- using Create JSON after chunking
But I couldn’t get the result Telegram accepts — maybe I’m missing something or misapplying the tools.
For reference, I’m attaching two screenshots that hopefully help illustrate the issue more clearly:
- First screenshot – Array Aggregator output:
You can see that each button is a proper JSON object with fields liketextandcallback_data. This structure looks clean and valid, but it’s not grouped into rows, so I’m not sure how to prepare it for Telegram’sinline_keyboardformat (which expects an array of arrays). - Second screenshot – Chunk Array output:
This one does split the array into chunks (2 per row), which is great! But the problem is that the items inside each chunk are stringified JSON — not actual objects. That seems to be why Telegram doesn’t render them.
If you have any tips on how to convert those strings into actual objects, I’d be really grateful!
Thanks again for your help ![]()

